blob: 5b2b557312819821beba3eacfd80e64647a797fa [file] [log] [blame]
Theodore Ts'o133a56d2000-11-17 05:40:49 +000012000-11-16 Theodore Ts'o <tytso@valinux.com>
2
3 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
4 reporting problems rather than using com_err directly.
5
6 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
7
8 * message.c (expand_percent_expression): Add safety check. If
9 ctx->str is NULL, print "NULL" instead of dereferencing
10 the null pointer.
11
12 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
13 to ext2fs_block_iterate2, to support 64-bit filesizes and
14 to speed things up slightly by avoiding the use of the
15 ext2fs_block_iterate's compatibility shim layer.
16
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +0000172000-10-30 <tytso@snap.thunk.org>
18
19 * util.c (get_backup_sb): Calculate backup superblock correctly
20 when the blocksize is > 1k.
21
Theodore Ts'o241f2242000-10-26 20:42:07 +0000222000-10-26 <tytso@snap.thunk.org>
23
24 * jfs.h, jfs_compat.h, journal.c: Updated to include the
25 definition of the new journal superblock format; still
26 only supports V1 superblocks for now. (From sct)
27
Theodore Ts'ob09a4b02000-10-24 21:16:09 +0000282000-10-24 <tytso@snap.thunk.org>
29
Theodore Ts'o83949022000-10-25 01:38:50 +000030 * super.c (release_inode_block, release_inode_blocks,
31 release_orphan_inodes): Add code to deal with truncating
32 inodes which are still in use (but which are on the orphan
33 list because they need truncation).
34
35 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
36 PR_0_ORPHAN_CLEAR_INODE, and remove
37 PR_0_ORPHAN_INODE_INUSE.
38
39 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
40 a message when the journal is being recovered.
41
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000042 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
43 journal inode, if it is in use.
44
Theodore Ts'oadfca562000-09-12 21:24:36 +0000452000-09-12 <tytso@valinux.com>
46
47 * extend.c:
48 * flushb.c: Add include of nls-enable.h which is necessary so that
49 they can compile correctly.
50
Theodore Ts'occ96b2b2000-08-22 21:30:11 +0000512000-08-22 <tytso@valinux.com>
52
Theodore Ts'o2575fb02000-08-22 21:50:04 +000053 * unix.c (main): If we're doing a read-only check, skip the
54 journal playback, but don't abort the e2fsck run.
55
Theodore Ts'o99a2cc92000-08-22 21:41:52 +000056 * super.c (release_orphan_inodes): Fix typo; should do bounds
57 checking on next_ino instead of ino.
58
59 * jfs_compat.h (J_ASSERT):
60 * journal.c (e2fsck_run_ext3_journal):
61 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
62
Theodore Ts'o243dc312000-08-22 21:37:47 +000063 * unix.c: Use fatal_error() instead of exit() whenever possible.
64 Also fix the fsck exit codes so that we use FSCK_USAGE
65 when it is appropriate. Rename global_signal_ctx to
66 e2fsck_global_ctx and let it be exported globally.
67
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000068 * util.c (fatal_error): Try to flush the I/O manager before
69 forcing an exit.
70
Theodore Ts'oecf1b772000-08-20 22:06:31 +0000712000-08-20 <tytso@valinux.com>
72
73 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
74 e2fsck_check_ext3_journal to smash the journal because
75 journal->j_transaction_sequence wasn't getting
76 initialized.
77
78 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
79 call to e2fsck_clear_recover from recover_ext3_journal to
80 after the filesystem has been closed and reopened.
81 Otherwise, the superblock in the filesystem handle will
82 probably be stale, and will overwrite the newer version of
83 the superblock written by the log recovery.
84
85 * message.c (expand_inode_expression): Add support for %Iu and %Ig
86
87 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
88
89 * super.c (release_orphan_inodes, release_inode_block,
90 release_inode_blocks): Update the block group descriptor
91 counts when freeing the orphan inode. Use
92 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
93
94 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
95 attempted to reopen the filesystem using the device name
96 instead of the filesystem name.
97
Theodore Ts'o80bfaa32000-08-18 15:08:37 +0000982000-08-18 <tytso@valinux.com>
99
100 * Makefile.in: Update the make dependencies
101
102 * problem.c, problem.h: Add the problem codes:
103 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
104 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
105 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
106 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
107
108 * super.c (release_inode_blocks, release_orphan_inodes,
109 check_super_block): Add support for clearing orphaned
110 inodes from the unmounted filesystem.
111
112 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
113 check; this is now handled in check_super_block ---
114 non-journaled filesystems can use the orphan list in the
115 future. Also, move the the re-opening of the filesystem
116 to e2fsck_run_ext3_journal().
117
Theodore Ts'o3b5386d2000-08-14 14:25:19 +00001182000-07-12 Andreas Dilger <adilger@turbolinux.com>
119
120 * journal.c: implement loading of ext3 journal for recovery code
121
122 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
123 Add journal problems.
124
125 * recovery.c (journal_recover): user-space ext3 journal recovery code
126
127 * unix.c (main) : check journal and do recovery in separate steps
128
Theodore Ts'ob8d164c2000-08-08 03:17:04 +00001292000-08-07 <tytso@snap.thunk.org>
130
131 * unix.c (calc_percent): Make sure that we don't take a floating
132 exception if the max value is zero. (should normally
133 never happen, but...)
134
Theodore Ts'of9e67062000-07-13 23:25:54 +00001352000-07-13 <tytso@valinux.com>
136
137 * Release of E2fsprogs 1.19
138
Theodore Ts'o17390c02000-07-07 04:13:21 +00001392000-07-06 Theodore Ts'o <tytso@valinux.com>
140
141 * unix.c (check_if_skip): Modify algorithm for checking
142 s_max_mnt_count to match with the kernel. (If
143 s_max_mnt_count is negative, ignore the mnt_count check.)
144
145 * unix.c (e2fsck_update_progress): Adjust the width of the
146 progress bar dynamically, based on the filesystem name
147 that we need to display.
148
149 * unix.c (main): If the ext3 needs_recovery flag is set, call
150 e2fsck_run_ext3_journal() and then restart the e2fsck run.
151
152 * journal.c (e2fsck_run_ext3_journal): New file which contains
153 logic to recover the ext3 journal. This version relies on
154 the kernel being able to mount the filesystem in order to
155 run the journal.
156
Theodore Ts'o92269042000-07-05 18:25:59 +00001572000-07-05 Theodore Ts'o <tytso@valinux.com>
158
159 * unix.c (e2fsck_update_progress): Only save and check the last
160 percentage after multiplying it by 10, nor 1000, since we
161 only need to save values to a tenth of a percent (and the
162 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000163 Also, re-arrange the logic so that we do the time
164 check only after doing the percentage check, and we
165 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000166
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00001672000-07-04 Theodore Ts'o <tytso@valinux.com>
168
169 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
170 field is set; if so, clear it, so that ext3 mounting code
171 won't get confused by the fact that we've cleared out the
172 orphaned inodes.
173
Theodore Ts'obbd47d72000-06-10 19:21:33 +00001742000-06-10 Theodore Ts'o <tytso@valinux.com>
175
176 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
177 checking for a "should never happen case".
178
179 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
180 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
181
Theodore Ts'od647a1e2000-05-27 14:40:09 +00001822000-05-27 Theodore Ts'o <tytso@valinux.com>
183
184 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
185 (cw@foof.org) which checks to see if special devices have
186 a non-zero size, and deals with it.
187
188 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
189
Theodore Ts'o1d279212000-05-19 02:38:14 +00001902000-05-18 Theodore Ts'o <tytso@valinux.com>
191
192 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
193 well.
194
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00001952000-05-08 Theodore Ts'o <tytso@valinux.com>
196
197 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
198 code.
199
200 * super.c (check_super_block): If the OS type in the superblock is
201 the Hurd, check to see if the filetype feature is set, and
202 offer to clear it if so. This needs to be done since the
203 Hurd doesn't properly support the filetype feature.
204 (And since the hurd allows the transmogrification of files
205 to special files and vice versa --- for no good reason
206 that I can understand --- it can't support the filetype
207 feature for the forseeable future, either.)
208
Theodore Ts'o373b8332000-04-03 16:22:35 +00002092000-04-03 Theodore Ts'o <tytso@valinux.com>
210
211 * unix.c: For platforms that don't define optarg.h, manually
212 define optarg and optind.
213
Theodore Ts'o01fbc702000-04-03 13:57:21 +00002142000-03-20 Theodore Ts'o <tytso@valinux.com>
215
216 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
217 Check for the append-only as well as the immutable flag.
218
219 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
220 append-only flag. Fix comment for compression flag.
221
Theodore Ts'o06012322000-02-12 20:12:43 +00002222000-02-12 <tytso@snap.thunk.org>
223
224 * unix.c (e2fsck_update_progress): Limit the number of updates to
225 the progress bars to 8 times a second. This allows a 9600
226 baud console link to keep up.
227
Theodore Ts'o19178752000-02-11 15:55:07 +00002282000-02-11 <tytso@snap.thunk.org>
229
230 * unix.c (main): If compression is enabled on the filesystem,
231 print a warning message (for now).
232
233 * message.c: Add new compression shortcut: @c == compress
234
235 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
236
237 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
238 set, check to see if the filesystem supports compression.
239 If it does pass this information down to process_block()
240 so it can treat the compressed block flag words
241 correctly. If not, offer to clear the flag, since it
242 shouldn't be set.
243 (process_block): If an inode has the compressed inode flag
244 set, allow EXT2FS_COMPRESSED_BLKADDR.
245
246 * pass1b.c (process_pass1b_block, delete_file_block,
247 clone_file_block):
248 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
249 see if the block can be skipped.
250
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00002512000-02-08 <tytso@snap.thunk.org>
252
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000253 * util.c: Make resource tracking message more concise.
254
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000255 * e2fsck.h:
256 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
257 ctx->block_illegal_map, since it's not needed by pass1,
258 and pass1b has been modified to calculate it manually if
259 needed. This reduces the memory footprint needed by e2fsck.
260
261 * pass1b.c (check_if_fs_block): New static function which returns
262 whether or not a block overlaps with filesystem metadata.
263 This replaces consulting the block_illegal_map bitmap.
264
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000265 * Makefile.in: Call sync after finishing building all in this
266 directory.
267
268 * unix.c (PRS): sync the filesystem before trying to use
269 BLKFLSBUF, to minimize the chance of causing dirty blocks
270 to get dropped.
271
272 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
273 a Linux/i386 system.
274
275 * pass3.c (check_directory): Only do the loop detection algorithm
276 if we've searched over 2048 parent directories and haven't
277 found the end yet. This means that in the common case, we
278 don't allocate or clear the inode_loop_detection bitmap,
279 which for large systems, merely clearing the bitmap for
280 each directory was turning out to be quite expensive.
281 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
282 identifying this problem.
283
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00002842000-02-06 Theodore Ts'o <tytso@valinux.com>
285
286 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
287 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
288 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
289 unix.c, util.c: Add Internationalization support as
290 suggested by Marco d'Itri <md@linux.it>.
291
Theodore Ts'o80e808f2000-02-02 16:19:59 +00002922000-02-02 Theodore Ts'o <tytso@valinux.com>
293
294 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
295 linux/fs.h
296
Theodore Ts'o894edb22000-01-18 21:27:12 +00002972000-01-18 Theodore Ts'o <tytso@valinux.com>
298
299 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
300 we need a separate DEPLIBUUID that can be used in
301 Makefile's dependency rules.
302
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00003031999-11-23 <tytso@valinux.com>
304
305 * e2fsck.8.in: Update language about where to find a backup
306 superblock.
307
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00003081999-11-19 <tytso@valinux.com>
309
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000310 * pass1.c (process_inodes): Add shortcut handling; if
311 process_inodes_count is zero, return right away, to avoid
312 calling qsort with a non-positive count.
313
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000314 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
315 to print Delete as ^?
316
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000317 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
318 the source directory.
319
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00003201999-11-10 <tytso@valinux.com>
321
Theodore Ts'ocd086361999-11-10 16:00:39 +0000322 * Release of E2fsprogs 1.18
323
3241999-11-10 <tytso@valinux.com>
325
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000326 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
327 means the answer is assumed to be no in preen mode. This
328 is now used in the PR_1_SET_IMMUTABLE code, so that in
329 preen mode we ignore these inodes and just print a warning
330 message.
331
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00003321999-11-09 <tytso@valinux.com>
333
334 * pass1.c (e2fsck_pass1): If the filesystem does not support
335 imagic inodes, if an inode has the imagic flag set, offer
336 to clear the imagic flag. If a valid device/fifo/socket
337 has the immutable flag set, call the new helper function
338 check_immutable() to offerto clear the immutable flag.
339
340 * pass2.c (check_filetype): Use the new ext2_file_type() helper
341 function instead of calculating the file_type information
342 manually.
343
344 * pass3.c (e2fsck_reconnect_file): When adding a link to
345 lost+found, calculate the filetype information so that
346 ext2fs_link() can use the information if applicable.
347 (get_lost_and_found): Create the /lost+found directory
348 with the correct filetype information if applicable.
349
350 * util.c (ext2_file_type), e2fsck.h: New function which returns
351 the directory entry file type information given the
352 inode's mode bits.
353
354 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
355 and PR_1_SET_IMMUTABLE.
356
Theodore Ts'o7142db01999-11-08 18:46:54 +00003571999-11-07 <tytso@valinux.com>
358
359 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
360 to prevent it from getting freed twice.
361
3621999-11-06 <tytso@valinux.com>
363
364 * unix.c (main): Close the filesystem before freeing the context,
365 so that in the event of a free()-related segmentation
366 violation, the filesystem is properly closed and written
367 out.
368
3691999-10-27 <tytso@valinux.com>
370
371 * e2fsck.c (e2fsck_reset_context): When freeing
372 ctx->inode_reg_map, we weren't zero'ing
373 ctx->inode_reg_map, which could cause a segfault later on
374 in the e2fsck run.
375
3761999-10-26 <tytso@valinux.com>
377
378 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
379 matches the standard convention).
380
Theodore Ts'of68aa411999-10-26 14:20:22 +00003811999-10-26 <tytso@valinux.com>
382
Theodore Ts'o28e11941999-10-26 18:17:20 +0000383 * Release of E2fsprogs 1.17
384
3851999-10-26 <tytso@valinux.com>
386
Theodore Ts'of68aa411999-10-26 14:20:22 +0000387 * message.c (safe_print): Make safe_print take an char instead of
388 an unsigned char to fix gcc warnings.
389
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00003901999-10-25 <tytso@valinux.com>
391
Theodore Ts'oe6597041999-10-26 02:30:16 +0000392 * util.c: For NT portability, don't redefine getchar(), since
393 stdio defines that. Instead we introduce a new
394 abstract macro read_a_char() which is #defined to the
395 right function as necessary.
396
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000397 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
398
399 * pass2.c (check_dir_block): Require that the length of the
400 directory entry be at least 12 bytes. Check to see if the
401 filename is zero-length, and flag that as an error.
402
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00004031999-10-22 <tytso@valinux.com>
404
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000405 * Release of E2fsprogs 1.16
406
4071999-10-22 <tytso@valinux.com>
408
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000409 * pass2.c (check_filetype): If the filetype filesystem feature is
410 not set, and a directory entry has a dirent feature, offer
411 to clear it (since 2.0 kernels will do complain will
412 interpret it as a very large name length field).
413
414 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
415
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00004161999-10-21 <tytso@valinux.com>
417
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000418 * e2fsck.8.in: Update man page to use a more standard format (bold
419 option flags and italicized variables), as suggested by
420 Andreas Dilger (adilger@enel.ucalgary.ca)
421
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000422 * pass4.c (e2fsck_pass4): If an inode is set in the
423 inode_imagic_map bitmap, don't check to see if it is
424 disconnected from the inode tree (because it almost
425 certainly will be). Free inode_imagic_map at the end of
426 pass 4.
427
428 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
429 feature is set, check the directory entry's filetype
430 information field, and fix/set it if necessary.
431 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
432 of pass 2.
433
434 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
435 information for inode_reg_map and inode_imagic_map, which
436 indicates which inodes are regular files and AFS inodes,
437 respectively.
438 Since only the master superblock is written during a
439 restart, force that superblock to be used after a restart;
440 otherwise changes to the block group descriptors end up
441 getting ignored.
442
443 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
444 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
445 which supresses the problem message if e2fsck is run with
446 the -n option.
447
448 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
449 new problem codes.
450
451 * message.c (expand_dirent_expression): Add support for %dt which
452 prints the dirent type information.
453
454 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
455 and inode_imagic_map).
456
457 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
458 to the context structure.
459
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +00004601999-09-24 <tytso@valinux.com>
461
462 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
463 e2fsprogs easier to port to non-Unix platforms.
464
4651999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +0000466
467 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
468 internal and external inode counts in sync when we
469 decremented an inode whose link count was already zero.
470 Now we skip incrementing or decrementing both link counts
471 if we would cause an overflow condition.
472 (expand_dir, expand_dir_proc): Change where we update the
473 inode block count and size files so that the block count
474 field is updated correctly when we create an indirect block.
475
Theodore Ts'o78cf0541999-10-20 18:29:18 +00004761999-08-05 <tytso@valinux.com>
477
478 * super.c (check_super_block): Check to see whether the
479 inodes_per_group value in the superblock is insanely too
480 high.
481
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00004821999-08-02 <tytso@valinux.com>
483
484 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
485 the block also shares data with the fs metadata when
486 the count drops to 1, since the block should still be
487 cloned, as fs metadata isn't included in the count.
488
4891999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000490
491 * Release of E2fsprogs 1.15
492
Theodore Ts'ob55199e1999-07-19 15:37:46 +00004931999-07-19 <tytso@valinux.com>
494
495 * unix.c (usage): Add minimalist emergency help to the usage
496 message.
497
Theodore Ts'o5596def1999-07-19 15:27:37 +00004981999-07-18 <tytso@valinux.com>
499
500 * unix.c: Add support for calculating a progress bar if the -C0
501 option is given. The function e2fsck_clear_progbar()
502 clears the progress bar and must be called before any
503 message is issued. SIGUSR1 will enable the progress bar,
504 and SIGUSR2 will disable the progress bar. This is used
505 by fsck to handle parallel filesystem checks. Also, set
506 the device_name from the filesystem label if it is
507 available.
508
509 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
510 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
511 structure which contains the last tenth of a percent
512 printed for the user.
513
514 * message.c (print_e2fsck_message): Add call to
515 e2fsck_clear_progbar().
516
517 * pass1.c (e2fsck_pass1):
518 * pass2.c (e2fsck_pass2):
519 * pass3.c (e2fsck_pass3):
520 * pass4.c (e2fsck_pass4):
521 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
522 printing the resource tracking information.
523
524 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
525 an error in the bitmaps, suppress printing the progress
526 bar using the suppression flag for the remainder of the
527 check, in order to clean up the display.
528
Theodore Ts'o74033351999-07-01 03:00:47 +00005291999-06-30 <tytso@valinux.com>
530
531 * unix.c (check_mount): Clean up the abort message displayed when
532 the filesystem is mounted and either stdout or stdin isn't
533 a tty.
534
5351999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +0000536
537 * e2fsck.h:
538 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
539 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
540 pass1_* be private static functions, and create new
541 function e2fsck_use_inode_shortcuts which sets and clears
542 the inode shortcut functions in the fs structure.
543
544 * e2fsck.h:
545 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
546 exported function.
547
548 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
549 if a disconnected inode has any problems before
550 connecting it to /lost+found. Bug and suggested fix by
551 Pavel Machek <pavel@bug.ucw.cz>
552
5531999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +0000554
555 * unix.c (main): Add missing space in the disk write-protected
556 message.
557
Theodore Ts'od4b0ce01999-06-18 01:09:29 +00005581999-05-22 <tytso@rsts-11.mit.edu>
559
560 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
561 code.
562
563 * super.c (check_super_block): Add check to make sure the total
564 number of inodes is sane, since this can be calculated
565 from the number of groups times the number of inodes per
566 group. Offer to correct it if it is incorrect.
567
Theodore Ts'oe79d1b21999-06-18 01:06:59 +00005681999-03-19 <tytso@rsts-11.mit.edu>
569
570 * pass5.c (check_block_end): Fix fencepost condition where when
571 clearing the block padding we were missing the last position
572 in the bitmap.
573
Theodore Ts'o75d83be1999-05-18 03:16:36 +00005741999-05-17 <tytso@rsts-11.mit.edu>
575
576 * unix.c (reserve_stdio_fds): Add safety check in case
577 reserve_stdio_fds couldn't open /dev/null.
578
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00005791999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
580
581 * util.c (print_resource_track): Use mallinfo if present to get
582 more accurate malloc statistics.
583
584 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +0000585 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +0000586
587 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
588
5891999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
590
591 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
592 that the block group number is printed. Add new prompt,
593 PROMPT_UNLINK.
594
5951999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
596
597 * Release of E2fsprogs 1.14
598
Theodore Ts'o9e51eca1999-01-09 16:32:31 +00005991999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
600
601 * message.c (safe_print): New function which prints strings,
602 converting non-printable characters using the '^' and
603 M-notation. This function is now used to print directory
604 name entries and pathnames.
605
Theodore Ts'o73f17cf1999-01-04 07:35:45 +0000606Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
607
608 * unix.c (main): Reset the context before calling ext2fs_close(),
609 to avoid referencing already freed memory.
610
Theodore Ts'o556ad131998-12-19 08:10:58 +00006111998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
612
613 * Release of E2fsprogs 1.13
614
Theodore Ts'o5a679c81998-12-03 16:40:38 +00006151998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
616
617 * Makefile.in: Updated dependencies.
618
6191998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
620
621 * pass3.c (get_lost_and_found): If the filesystem is not opened
622 read-only, then force /lost+found to be created if it is
623 not present.
624
625 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
626 operation.
627
Theodore Ts'o1dde43f1998-11-14 04:18:28 +00006281998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
629
630 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
631 since e2fsck_free_context may reference data in ctx->fs.
632
633 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
634 before checking ctx->fs->dblist.
635
6361998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
637
638 * pass1.c (e2fsck_pass1): Use the device check subroutine on
639 FIFO's and Socket's, so that we catch bogus immutable inodes.
640
641 * pass2.c (process_bad_inode): Process bad socket and fifo's.
642
643 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
644 PR_2_BAD_SOCKET.
645
Theodore Ts'o7f813ba1998-09-03 01:26:03 +00006461998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
647
648 * problem.c: Add PR_3_NO_DIRINFO error code.
649
650 * super.c (check_super_value): Rename min and max to min_val and
651 max_val to avoid possible cpp macro conflicts.
652
653 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
654 possible cpp macro conflicts.
655
656 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
657 cpp macro conflicts.
658 (check_directory): Fix logic to avoid possible core dump
659 in the case of ext2fs_get_dir_info returning NULL. (By
660 the time we get here, it should never happen, but...).
661 Also simply/streamline the control flow of the function.
662
Theodore Ts'o24fc5031998-08-26 15:23:31 +00006631998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
664
665 * unix.c (check_if_skip): Move the "not cleanly mounted" check
666 ahead of the maximal mount and too long since checked tests.
667 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
668 open, so that we don't open the filesystem using the same
669 file descriptor as stdout or stderr.
670
Theodore Ts'of75c28d1998-08-01 04:18:06 +00006711998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
672
673 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
674 get to 100%.
675
676 * pass3.c (e2fsck_pass3): Change progress accounting to be
677 consistent with the other e2fsck passes.
678
679 * e2fsck.c (e2fsck_run): At the end of each pass, call the
680 progress function with the pass number set to zero.
681
682 * unix.c (e2fsck_update_progress): If the pass number is zero,
683 ignore the call, since that indicates that we just want to
684 deallocate any progress structures.
685
Theodore Ts'o8144d671998-07-09 05:33:18 +00006861998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
687
Theodore Ts'o4a5fa191998-07-09 05:42:45 +0000688 * Release of E2fsprogs 1.12
689
6901998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
691
Theodore Ts'o8144d671998-07-09 05:33:18 +0000692 * unix.c (main): Fix typo in checking the incompat feature set; it
693 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
694
Theodore Ts'o1fad9041998-07-07 05:44:43 +00006951998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
696
697 * badblocks.c (test_disk): Don't clear the existing bad blocks
698 list when using e2fsck -c, since it may cause blocks with
699 marginal errors to be dropped from the bad blocks list.
700
Theodore Ts'o874b4d21998-07-06 14:33:12 +0000701Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
702
703 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
704 compatibility with older kernels.
705
Theodore Ts'o818180c1998-06-27 05:11:14 +00007061998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
707
708 * unix.c (e2fsck_update_progress): Remove unused variables.
709
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +00007101998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
711
712 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
713 collision with LFS API.
714
715 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
716 properly initialized.
717 (e2fsck_pass1): Don't allow the the boot loader inode to
718 be a directory (clear the inode mode field if so).
719
Theodore Ts'oefac9a11998-05-07 05:02:00 +00007201998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
721
722 * unix.c (PRS): Added new option -C, which causes e2fsck to print
723 progress updates so that callers can keep track of the
724 completion progress of e2fsck. Designed for use by
725 progress, except for -C 0, which prints a spinning report
726 which may be useful for some users.
727
728 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
729 scheme (useful for larger filesystems).
730
731 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
732 progress reporting functions.
733
Theodore Ts'o4c77fe51998-04-30 17:35:59 +00007341998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
735
736 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
737 appropriate return type for comparison functions for qsort.
738
739 * e2fsck.h: Add #ifdef protection for unistd.h
740
741 * super.c: Remove header files already included by e2fsck.h
742
Theodore Ts'o76f875d1998-04-27 01:41:13 +00007431998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
744
745 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
746 size of the memory to be resized to ext2fs_resize_mem().
747
Theodore Ts'o7e44f241998-04-01 03:16:29 +00007481998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
749
750 * Makefile.in: Change to use new installation directory variables
751 convention. Fix uninstall rules to take $(DESTDIR) into
752 account. Remove cat8dir from the installdirs target,
753 since modern man package don't necessarily put the cat
754 directory in /usr/man/cat?.
755
Theodore Ts'o17dba281998-03-30 01:16:26 +00007561998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
757
758 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
759 extern in e2fsck.h to prevent -Wall warnings.
760
761 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
762
7631998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
764
765 * super.c (check_super_block): Fix broken superblock sanity check
766 when calculating blocks_per_group if s_log_frag_size !=
767 s_log_block_size. Since we don't support fragments, this
768 isn't a bug deal, but it's good to get it fixed.
769
Theodore Ts'o246501c1998-03-24 16:22:38 +00007701998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
771
772 * unix.c: Fix bug in check of feature set, to make sure we can
773 really fix this filesystem.
774
775 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
776 num field be a 64 bit type. Add the problem code
777 PR_1_FEATURE_LARGE_FILES
778
779 * problem.c: Add table entry for the problem code
780 PR_1_FEATURE_LARGE_FILES.
781
782 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
783 a problem for directory inodes. (Since it is also
784 i_size_high now.) If there are no large_files, then
785 clear the LARGE_FLAG feature flag. If there are
786 large_files, but the LARGE_FLAG feature flag is not set,
787 complain and offer to fix it.
788 (check_blocks): Add support to deal with non-directory
789 inodes that have i_size_high set (i.e., large_files).
790 Don't give an error if a directory has preallocated
791 blocks, to support the DIR_PREALLOC feature.
792 (process_block, process_bad_block): The blockcnt variable
793 is a type of blkcnt_t, for conversion to the new
794 block_iterate2.
795
796 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
797 a problem for directory inodes. (Since it is also
798 i_size_high now.)
799
800 * message.c (expand_inode_expression): Print a 64-bits of the
801 inode size for non-directory inodes. (Directory inodes
802 can only use a 32-bit directory acl size, since
803 i_size_high is shared with i_dir_acl.) Add sanity check
804 so that trying to print out the directory acl on a
805 non-directory inode will print zero.
806 (expand_percent_expression): %B and %N, which print
807 pctx->blkcount and pctx->num, can now be 64 bit
808 variables. Print them using the "%lld" format if
809 EXT2_NO_64_TYPE is not defined.
810
811 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
812
813 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
814 field.
815
Theodore Ts'ob6f79831998-03-09 13:10:37 +0000816Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
817
818 * pass3.c (fix_dotdot_proc):
819 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
820 * message.c (expand_dirent_expression): Mask off the high eight
821 bits of the directory entry's name_len field, so that it
822 can be used for other purposes.
823
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +0000824Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
825
826 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
827 include EXT2_FLAG_RESTART anymore, we need to adjust this
828 routine so that it *does* return in the case of it seeing
829 EXT2_FLAG_RESTART.
830
831 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
832 done callback function, which may set context abort
833 flags. So we need to test the context abort flags after
834 we call ext2_get_next_inode().
835 (process_inodes): If we abort due out of process_inodes,
836 do a clean exit by breaking out of the for loop instead of
837 just returning.
838
839 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
840 considered a SIGNAL mask (i.e., requiring an immediate
841 abort of processing to restart). FLAG_RESTART just means
842 that we want to restart once pass 1 is complete.
843
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +0000844Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
845
846 * Change the progress function to return an integer; if returns 1,
847 then the progress function is expected to have set the
848 e2fsck context flag signalling a user abort, and the
849 caller should also initiate a user abort.
850
Theodore Ts'o63c49691998-02-20 05:24:59 +0000851Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
852
853 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
854 end_problem_latch() unless there was actually a problem
855 latched. Simplifies semantics of the latch processing.
856
Theodore Ts'o43139321998-02-16 22:34:46 +0000857Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
858
859 * e2fsck.h: Add new field, priv_data to the e2fsck context
860 structure. It should be used by callers of the e2fsck
861 functions only, and not by anything in e2fsck itself.
862
863Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
864
865 * super.c: Instead of call ext2fs_get_device_size(), define and call
866 e2fsck_get_device_size(). (This function may be stubbed
867 out in special versions of e2fsck.)
868
869 * pass3.c, pass4.c: Remove extra calls to the progress function
870 that weren't needed.
871
872 * mke2fs.8.in: Update man page to note that the format of the bad
873 block file is the same as the one generated by badblocks.
874
Theodore Ts'o54be2cc1998-02-01 12:58:48 +0000875Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
876
877 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
878
879 * e2fsck.h: Include <time.h> since it is needed
880
881 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
882 processing.
883
Theodore Ts'o24dd4021998-02-01 00:16:40 +0000884Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
885
886 * unix.c (main): In the case where the filesystem revision is too
887 high, print the message about the superblock possibly
888 being corrupt.
889
890 * e2fsck.8.in: Add expanded comments about how the -b option
891 works.
892
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +0000893Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
894
895 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
896 the ext2-specific header files are in a flat directory.
897
898 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
899 super.c, swapfs.c, unix.c: Explicitly cast all assignments
900 from void * to be compatible with C++.
901
902Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
903
904 * unix.c (sync_disk): Remove sync_disk and calls to that function,
905 since ext2fs_close() now takes care of this.
906
907Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
908
909 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
910 ehandler.c, unix.c: Change use of private to be priv_data,
911 to avoid C++ reserved name clash.
912
Theodore Ts'o5be8dc21997-12-01 18:24:10 +0000913Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
914
915 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
916 of e2fsck_get_num_dirs, which has been removed.
917
918Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
919
920 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
921 to compile and install flushb.
922
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +0000923Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
924
925 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
926 to make sure the extra i_blocks in a device are cleared if
927 the immutable flag is set.
928
929 * util.c (print_resource_track): Fix typo which caused the
930 time/resource tracking to print "Pass 1 :" instead of
931 "Pass 1: ".
932
Theodore Ts'ob8647fa1997-11-20 21:52:43 +0000933Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
934
935 * pass3.c (expand_directory): Fix bug which could cause core dump
936 when expanding the directory, and the bitmaps hadn't yet
937 been read in. Also, only use ext2fs_write_dir_block when
938 writing a directory block, not when writing out a fresh
939 indirect block.
940
Theodore Ts'o8039c481997-11-19 21:39:13 +0000941Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
942
943 * pass1.c (process_bad_block): Fix bug where first_block wasn't
944 getting incremented, which caused user to get a
945 "Programming error?" warning if there was a bad block in a
946 non-primary superblock/group_descriptor. Also fixed
947 another bug so that ext2fs_bg_has_super() is consulted, to
948 avoid problems when using a filesystem with the
949 sparse_groups option set and there are bad blocks at the
950 beginning of a group which doesn't have a superblock.
951
Theodore Ts'of8188ff1997-11-14 05:23:04 +0000952Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
953
954 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
955 progress indicator function.
956
957 * pass1.c (scan_callback): Add call to the progress feedback
958 function (if it exists).
959
960Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
961
962 * super.c (check_super_block): Skip the device size check if the
963 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
964
965 * iscan.c (main): Don't use fatal_error() anymore.
966
967 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
968 calling fatal_error(0).
969
970 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
971 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
972
973 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
974
975 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
976
977 * problemP.h: New file which separates out the private fix_problem
978 data structures.
979
980 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
981 swapfs.c util.c: allocate_memory() now takes a e2fsck
982 context as its first argument, and rename it to be
983 e2fsck_allocate_memory().
984
Theodore Ts'o08b21301997-11-03 19:42:40 +0000985Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
986
Theodore Ts'o68227541997-11-04 04:25:22 +0000987 * unix.c (main): Add a special case check for the error code EROFS
988 and display an appropriate error message for this case.
989
Theodore Ts'o08b21301997-11-03 19:42:40 +0000990 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
991 to take the e2fsck context as their first argument.
992 Change dir_info.c routines to take an e2fsck_context,
993 renamed them to start with e2fsck_ to avoid namespace
994 issues, and changed them to store the directory
995 information inside the e2fsck context.
996 Added e2fsck_run() which calls all of the e2fsck passes in
997 the correct order, and which handles the return of abort
998 codes. Added abort processing, both via setjmp/longjmp
999 and via flags in the e2fsck context. Use a flag in the
1000 e2fsck context instead of the restart_e2fsck global
1001 variable. Change uses of free and malloc to
1002 ext2fs_free_mem and ext2fs_get_mem.
1003
Theodore Ts'o291c9041997-10-31 06:17:08 +00001004Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1005
1006 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
1007 consistency.
1008
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00001009Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1010
1011 * pass3.c (get_lost_and_found): Check error return of
1012 EXT2_FILE_NOT_FOUND instead of ENOTDIR
1013
1014 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
1015 instead of ENOTDIR
1016
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001017Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1018
Theodore Ts'o519149f1997-10-25 03:49:49 +00001019 * unix.c (PRS): Make the variable which getopt returns into be
1020 an int, so that it won't lose on platforms where char is
1021 unsigned.
1022
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001023 * pass1b.c (clone_file): Fix bug in error reporting in the case
1024 where cs.errcode is non-zero.
1025
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001026Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1027
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00001028 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
1029 RESOURCE_TRACK around code which uses init_resource_track
1030 and print_resource_track. (Not all systems have timeval)
1031
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001032 * super.c: Remove excess #includes which are not necessary.
1033
1034 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
1035
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00001036Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1037
1038 * pass*.c, super.c: Massive changes to avoid using printf and
1039 com_err routines. All diagnostic messages are now routed
1040 through the fix_problem interface.
1041
1042Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1043
1044 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
1045 entries.
1046
1047 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
1048 PR_2_DUP_DOT_DOT.
1049
1050Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1051
1052 * problem.c: Added new problem codes for some of the
1053 superblock corruption checks, and for the pass header
1054 messages. ("Pass 1: xxxxx")
1055
1056 * util.c (print_resource_track): Now takes a description
1057 argument.
1058
1059Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1060
1061 * super.c, unix.c, e2fsck.c: New files to separate out the
1062 operating-specific operations out from e2fsck.c.
1063 e2fsck.c now contains the global e2fsck context management
1064 routines, and super.c contains the "pass 0" initial
1065 validation of the superblock and global block group
1066 descriptors.
1067
1068 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1069 (nearly) all global variables and moved them to the e2fsck
1070 context structure.
1071
1072 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1073 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1074 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1075
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001076Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1077
1078 * message.c: Add compression for the word "Illegal"
1079
1080 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1081 PR_2_BAD_BLOCK_DEV
1082
1083Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1084
1085 * pass1.c (pass1, check_device_inode), pass2.c
1086 (process_bad_inode): Use a more stringent test for a valid
1087 device.
1088
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001089Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1090
1091 * e2fsck.c (check_mount): Add stronger warning message about the
1092 perils of running e2fsck on a mounted filesystem.
1093
Theodore Ts'o024996c1997-06-17 05:38:35 +00001094Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1095
1096 * Release of E2fsprogs 1.11
1097
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001098Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1099
1100 * pass1.c (mark_table_blocks): Mark the superblock and group
1101 descriptor blocks first, so that any conflicts between
1102 these and the bitmap or inode table blocks is noticed.
1103
1104 * problem.c: Fix message printed out when a block or inode bitmap
1105 conflicts with other fs data, has the correct group number
1106 in it.
1107
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001108Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1109
1110 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1111
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001112Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1113
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001114 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1115 Hawes (whawes@star.net).
1116
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001117 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1118 bad blocks command so that all of the filesystem gets
1119 tested in the case where the blocksize 2048 or 4096.
1120
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001121Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1122
1123 * Release of E2fsprogs version 1.10
1124
1125Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1126
1127 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1128 where ext2fs_get_next_inode returns the
1129 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1130
1131Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1132
1133 * Release of E2fsprogs version 1.09
1134
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001135Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1136
1137 * Release of E2fsprogs version 1.08
1138
Theodore Ts'o521e3681997-04-29 17:48:10 +00001139Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1140
1141 * pass1b.c (clone_file_block): If we clone a directory, we need to
1142 update the dblist entry so that we check (and correct) the
1143 right directory block.
1144
1145Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1146
1147 * pass1.c (process_block): Don't clear blocks references to
1148 filesystem metadata; let pass 1B handle this case.
1149
1150 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1151
1152 * pass1b.c (pass1d): Deal with a block which is shared with
1153 filesystem metadata.
1154
1155 * e2fsck.h: Make block_illegal_map be a global variable
1156
1157Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1158
1159 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1160 feature.
1161 (get_backup_sb): New function which attempts to obtain the
1162 correct backup superblock (if possible).
1163
1164Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1165
1166 * e2fsck.c (main): Check the version of the library, and warn if
1167 the library is out of date; this happens generally due to
1168 users who manually install e2fsprogs.
1169
1170 * pass1.c (pass1_get_blocks): If the passed in inode number for
1171 get_blocks isn't what we're expecting pass back
1172 EXT2_ET_CALLBACK_NOT_HANDLED.
1173
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001174Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1175
1176 * Release of E2fsprogs version 1.07
1177
1178Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1179
1180 * icount.c: New file which implements an inode count abstraction.
1181 This significantly reduces amount of memory needed to
1182 check really large filesystems.
1183
1184 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1185 abstraction.
1186
1187Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1188
1189 * dirinfo.c (dir_info_iter): New function which allows iteration
1190 over the directories in the dir_info map.
1191
1192 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1193 over all directories in the dir_info structure, instead of
1194 iterating all inodes looking for directories, and then
1195 looking up the directories using get_dir_info().
1196
1197Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1198
1199 * pass1.c (pass1, process_block):
1200 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1201 manual code to manage the directory block list information.
1202
1203 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1204 (deallocate_inode): Call the ext2 library routine
1205 ext2_inode_has_valid_blocks() instead of
1206 inode_has_valid_blocks().
1207
1208 * swapfs.c (swap_inodes): Add check so that we don't try to call
1209 swap_inode_blocks unless the inode has valid blocks.
1210 (Otherwise a long fast symlink might cause
1211 swap_inode_blocks to erroneously get called.)
1212
1213Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1214
1215 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1216 PR_2_DOT_DOT_NULL_TERM.
1217
1218 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1219 .. entries are null-terminated, since the 2.0 kernel
1220 requires this (for no good reason).
1221
1222Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1223
1224 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1225 that we can recover from missing inode tables.
1226
1227 * dirinfo.c (get_dir_info): If there are no directories in the
1228 dir_info abstraction, don't core dump (because dir_info is
1229 NULL).
1230
1231 * e2fsck.c (main): Don't try using the backup superblocks if there
1232 aren't any.
1233 (check_super_block): If there are illegal inode table or
1234 bitmaps, set the filesystem as being in error.
1235
1236Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1237
1238 * pass2.c (check_dir_block): Added check to make sure that rec_len
1239 is a a multiple of 4 (so that the directory entries are
1240 4-byte aligned).
1241
1242Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1243
1244 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1245 line.
1246 (PROGS): Don't build and install the extend program by
1247 default.
1248
1249
1250Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1251
1252 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1253 saved and restored as well.
1254 (pass1): For fast sym links, skip the check_blocks
1255 processing step altogether.
1256
1257Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1258
1259 * problem.c, message.c: New files, to completely refurbish how
1260 filesystem problems are reported to the user. The
1261 diagnostic messages are now encoded out in an easily
1262 customizable, extensible format. The messages printed out
1263 in preen mode are all on one line, and contain the device
1264 name.
1265
1266Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1267
1268 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1269 deleted files.
1270
1271 * pass1.c (pass1): Ignore missing inode table errors during the
1272 scan, and just skip past those inodes.
1273
1274 * pass3.c (check_root): Remove root_ino argument, and assume that
1275 the root inode must be EXT2_ROOT_INO. Move responsibility
1276 of setting the parent of the root inode in the directory
1277 inode structure to pass2().
1278
1279 * pass2.c (check_dir_block): Don't allow links to the root
1280 directory.
1281
1282 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1283 since the inode is no longer used.
1284
1285Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1286
1287 * e2fsck.c (main): If the superblock magic number is wrong, or the
1288 block group fails a sanity check, then automatically
1289 restart trying to use the backup superblocks.
1290
1291 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1292 everything else; in the case where a bitmap block overlays
1293 the inode table, the inode table should take precedence.
1294
1295 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1296 message fit on one line, since the error can happen during
1297 a preen pass. (We eventually need to revamp the whole
1298 e2fsck error reporting and prompting system, but that's a
1299 job for another day.)
1300
1301Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1302
1303 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1304 for the benefit of the inode scan functions.
1305
1306 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1307 indicating that an inode is in a bad block, mark that
1308 inode as being used, as well as in the inode "bb" map.
1309
1310 * pass2.c (maybe_clear_entry): New function which generalizes the
1311 error cases when a directory entry needs to be cleared.
1312 (check_dir_block): If an inode is in the "bb" map, offer
1313 to clear the directory entry, since the inode is in a bad
1314 block.
1315
1316 * pass4.c (pass4): If an inode is marked as used, but is is marked
1317 in the "bb" map, don't process it as a disconnected inode.
1318
1319Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1320
1321 * Release of E2fsprogs version 1.06
1322
Theodore Ts'o5c576471997-04-29 15:29:49 +00001323Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1324
1325 * e2fsck.c (main): Print out the version number of the shared
1326 library when using the -V option.
1327
1328 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1329 consistency's sake.
1330
1331 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1332 out the backup superblocks when we know we have a valid
1333 filesystem.
1334
1335Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1336
1337 * util.c (preenhalt): Make it explicit on preenhalt that running
1338 e2fsck manually means without the -a or -p flag.
1339
1340Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1341
1342 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1343 (Linux/FT actually sets the mode bits, so we have to
1344 handle it specially.)
1345
1346 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1347 just dirty, so that the user knows that it's about to be
1348 checked (since this will take a while).
1349
1350Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1351
1352 * pass4.c: If a disconnected inode is zero-length, prompt to
1353 delete it instead of connecting it to lost+found.
1354
1355Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1356
1357 * Release of E2fsprogs version 1.05
1358
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001359Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1360
1361 * pass4.c (pass4): If the user refuses to connect an unattached
1362 inode to lost+found, don't try to set i_links_count. This
1363 is bad, since if the user says yes, the inode will be
1364 marked as unused, which is not necessarily the right
1365 thing, especially since the rest of the cleanup doesn't
1366 happen here.
1367
1368 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1369 dellocating an inode. (Not strictly necessary, but...)
1370
1371 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1372 error" message.
1373
1374Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1375
1376 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1377 byte-swap the filesystem so that it is normalized. -S
1378 will byte-swap the filesystem regardless of its current
1379 byte-order.
1380
1381 * swapfs.c: New file, which will byte-swap a filesystem.
1382
1383Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1384
1385 * pass1.c (pass1): Change handling on files with non-zero dtime
1386 and non-zero i_link_count; before we treated them as
1387 deleted file per botched ext2 0.3c kernel behavior. We
1388 now clear dtime instead.
1389
1390Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1391
1392 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1393 nothing else is changed, make sure FSCK_NONDESTRUCT is
1394 set (since after all having the filesystem set to
1395 invalid is an error. :-)
1396
1397Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1398
1399 * pass1.c (process_block): Make sure that meta data doesn't get
1400 accidentally set in the dir_blocks array (which could
1401 happen in some error condtions).
1402
1403 * pass1.c (pass1):
1404 * pass2.c (process_bad_inode): Check for fragments in a
1405 OS-independent fashion.
1406
1407Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1408
1409 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1410 cleanup for the filesystem.
1411
1412Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1413
1414 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1415
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001416Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1417
1418 * Release of E2fsprogs version 1.04
1419
1420Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1421
1422 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1423 try "e2fsck -b 8193" before allowing e2fsck to relocate
1424 inode table blocks.
1425
1426 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
1427 depending on the option to configure. Added targets for
1428 e2fsck.static and e2fsck.shared for people who want to
1429 build a static or shared variant manually.
1430
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001431Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1432
1433 * Release of E2fsprogs version 1.03
1434
1435Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
1436
1437 * e2fsck.c (show_stats): Don't use floating point to display
1438 percentage of non-contiguous files, as different libc
1439 handle result truncation differently, and this causes the
1440 test suite to bomb out depending on which libc you are
1441 using.
1442
1443 * util.c (allocate_memory): Fix error message to omit extraneous
1444 %%s.
1445
1446Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
1447
1448 * pass4.c (pass4):
1449 * pass2.c (check_dir_block):
1450 * pass1.c (pass1): Add support for dynamic first inode revision.
1451
1452Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
1453
1454 * pass3.c (check_root): Fix spelling typo
1455
1456Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
1457
1458 * e2fsck.c (check_super_block): If the superblock fails certain
1459 internal consistency checks, exit with a fatal error after
1460 printing the "superblock is corrupt message".
1461
Theodore Ts'o74becf31997-04-26 14:37:06 +00001462Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1463
1464 * Release of E2fsprogs version 1.02
1465
1466Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
1467
1468 * pass1.c (process_block): Check to see if a file is "fragmented".
1469 i.e., non-contiguous. Note that any file which is larger
1470 than the block group is guaranteed to be non-contiguous.
1471 We may want to use a different hueristic for deciding
1472 whether or not a file is "fragmented".
1473
1474 * e2fsck.c (show_stats): Print statistics of how many
1475 non-contiguous files are on the system.
1476
1477Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
1478
1479 * badblocks.c (read_bad_blocks_file, test_disk): Fold
1480 functionality of test_disk() (which runs badblocks) into
1481 read_bad_blocks_file(); test_disk() now calls
1482 read_bad_blocks_file() with a NULL bad_blocks_file
1483 argument.
1484
1485Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
1486
1487 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
1488 #if defined(linux). The latter won't work if we're
1489 compiling -ansi.
1490
Theodore Ts'o297f47a1997-04-26 14:25:20 +00001491Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
1492
1493 * e2fsck.c (check_mount): For Linux systems, the check to see if
1494 the root is mounted read-only has to be done for all
1495 filesystems, not just for the root filesystem, due to the
1496 way that some /etc/rc scripts are set up.
1497
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001498Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
1499
1500 * Makefile.in (install): Strip programs when they are installed.
1501 (e2fsck): Build e2fsck statically.
1502
1503Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
1504
1505 * util.c (preenhalt): Preenhalt now takes an argument, which is an
1506 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
1507 flag in the superblock in cases where preenhalt is called.
1508 All calls to preenhalt() were changed to either
1509 preenhalt(fs) or preenhalt(NULL) in a few cases where the
1510 fs pointer was not available. (Most notable, for block
1511 read/write errors.)
1512
1513Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
1514
1515 * ehandler.c:
1516 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
1517
1518Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
1519
1520 * e2fsck.c (show_stats): Show statistics about how many inodes
1521 have indirect, doubly indirect, and triply indirect
1522 blocks. Allow up to 8 digits for statistics, instead of
1523 merely 6, so things look pretty for large filesystems.
1524
1525 * pass1.c (pass1): Keep statistics about indirect, doubly
1526 indirect, and triply indirect blocks.
1527
1528 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
1529 pass 1.
1530
1531Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
1532
1533 * util.c, ehandler.c: Move #include of <sys/resource.h> after
1534 #include of "e2fsck.h", since sys/resource.h may depend on
1535 sys/time.h, which is #included in e2fsck.h.
1536
1537Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
1538
1539 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
1540 function to determine if the device is mounted.
1541
1542 * e2fsck.c (main): Add better error messages if ext2fs_open()
1543 fails.
1544
1545Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
1546
1547 * pass1.c (check_blocks): If we're clearing a directory, clear
1548 pb.is_dir so we don't do the following check of making
1549 sure the directory size matches; this is pointless, since
1550 we've already cleared the inode.
1551
1552Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1553
1554 * pass1.c (bad_primary_block): New function, called by
1555 process_bad_block, which explains the facts of life to the
1556 user when a block in the primary superblock or primary
1557 group descriptors is bad.
1558
1559 * pass2.c (check_dot): Handle the case where the first directory
1560 entry is used, but not ".".
1561
1562 * pass2.c (check_dotdot): Handle the case where the second directory
1563 entry is used, but is not "..".
1564
1565Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1566
1567 * e2fsck.c (check_super_block): Get the size of the physical
1568 device and if it is smaller than the reported size of the
1569 filesystem, report an error.
1570
1571Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
1572
1573 * e2fsck.c (check_if_skip): Print the number of allocated files and
1574 blocks on clean filesystems.
1575
1576Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
1577
1578 * e2fsck.8: Updated date and version number.
1579
1580Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
1581
1582 * pass1.c (check_blocks): Check that directory size matches *exactly*
1583 the count of allocated blocks.
1584
1585Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
1586
1587 * pass1b.c (pass1d): Free the shared[] array when we're done with
1588 it to avoid a memory leak.
1589
1590 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1591 block_dup_map.
1592
1593 * pass2.c (process_bad_inode): When clearing the inode, make sure
1594 the pathname is freed, to prevent a memory leak.
1595
1596 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1597 when we're finished with them.
1598 (check_block_bitmaps): Free free_array when we're finished
1599 with them.
1600
1601 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1602 linking the executable.
1603
1604 * pass2.c (process_bad_inode): Even on OS's that don't support the
1605 fragment fields, make sure the Linux equivalent fields are
1606 set to zero. If an OS wants to reuse these fields, which
1607 is probably a bad idea (although we may get desperate in
1608 the future) this code will have to be changed.
1609
1610 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1611 on the inode field, and then blockcnt field. This is just
1612 to keep the ordering of dir_blocks the same on all
1613 platforms when there are more than on missing directory
1614 blocks, which are indicated directories with holes, which
1615 are indicated with the block number being set to zero.
1616
1617Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1618
1619 * pass1.c (check_blocks, process_block): check_blocks() modified
1620 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1621 the inode is a directory. process_block() now checks to
1622 see if a directory has a "hole", or missing block. If so,
1623 this fact is recorded in the directory block list so that
1624 the problem can be resolved in pass #2.
1625
1626 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1627 allocate new blocks for directories with "holes". Called
1628 out of check_dir_block if a block in the directory block
1629 list is zero.
1630
1631 * pass3.c (get_lost_and_found): Move location of free(block) to
1632 prevent possible memory leak.
1633
1634Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1635
1636 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
1637 instead of alloca() --- alloca is not portable! Check to
1638 make sure the filename is not longer than EXT2_NAME_LEN,
1639 and offer to fix it by truncating it, since it should
1640 never happen.
1641
1642 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
1643 not portable!! In any case putenv() in some systems must
1644 take a static character array or malloc()'ed memory;
1645 passing memory allocated using alloca() to putenv() is not
1646 advisable.
1647
1648 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
1649 alloca() --- alloca() is not portable!!!
1650
1651Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
1652
1653 * pass1b.c (pass1c):
1654 * pass3.c (check_root, get_lost_and_found):
1655 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
1656 to read/write the directory block.
1657
1658Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
1659
1660 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
1661 make sure VMIN and VTIME are set correct.
1662
1663Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
1664
1665 * pass1.c (mark_block_used): Change to be an inline function.
1666 Assume that the block validity checks are already done,
1667 and use the fast variant of the bitmap functions.
1668
1669Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
1670
1671 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
1672 bounds of the bitmaps in advance, and then use the fast
1673 variant of e2fs_test_{block,inode}_bitmap.
1674
1675 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
1676 the bounds checking has already been done earlier.
1677
1678Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
1679
1680 * pass1.c (pass1): Allocate and free the block_illegal_map, which
1681 is used for shortcut processing in process_block.
1682 (mark_table_blocks): Initialize block_illegal_map with the
1683 filesystem blocks.
1684 (describe_illegal_block): New helper function that
1685 describes why a block is illegal.
1686 (process_block): Use block_illegal_map as a shortcut
1687 to determine whether a block is bad. Use
1688 describe_illegal_block to print out why the block is illegal.
1689
1690Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
1691
1692 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
1693
1694 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
1695 <mntent.h> if they don't exist. (Mostly so that "make
1696 depend" works.)
1697
1698 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
1699 it exists).
1700
1701 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
1702 exist.
1703
1704Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1705
1706 * pass2.c (process_bad_inode, check_for_zero_long,
1707 check_for_zero_char): Change long to u32, and char to u8.
1708
1709Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1710
1711 * util.c (inode_has_valid_blocks):
1712 * pass2.c (process_bad_inode):
1713 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
1714 LINUX_S_IS* instead of S_IS*.
1715
1716 * e2fsck.h: Don't #include <sys/stat.h>
1717
1718 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
1719 this program is pretty much useless if BLKFLSBUF isn't
1720 supported.)
1721
1722 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
1723 used.
1724
1725Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
1726
1727 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
1728 to allocate space for file names instead of using fixed size buffers.
1729 (process_bad_inode): Only check inode frag fields if
1730 HAVE_EXT2_FRAGS is defined (by configure).
1731 * pass1.c (pass1): Only check the inode frag fields if
1732 HAVE_EXT2_FRAGS is defined (by configure).
1733
1734 * e2fsck.c (check_mount): Only check for a mounted filesystem if
1735 HAVE_MNTENT_H is defined (by configure).
1736 (PRS): Use alloca to allocate the new path string, instead of
1737 having a fixed size buffer (which was the wrong size anyway).
1738 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
1739 is defined.
1740
1741 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
1742 defined (by configure).
1743
1744 * Makefile.in: Rewritten to conform to GNU coding standards and
1745 support separate compilation directories.
1746
1747Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
1748
1749 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
1750
Theodore Ts'of3db3561997-04-26 13:34:30 +00001751Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
1752
1753 * pass1.c (unwind_pass1): Clear the file type statistics counter
1754 when pass 1 needs to be restarted from scratch.
1755
1756 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
1757 being reallocated to blocks in the next block group,
1758 instead of the current block grup.
1759
1760 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
1761 inode.i_links_count is set.
1762
1763Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
1764
1765 * pass1.c (process_block): Add checks for if the block is
1766 trepassing on a superblock or group descriptor table.
1767
1768Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
1769
1770 * main.c (corrupt_msg): Extend the message which is printed out
1771 when the superblock is corrupt, to include the suggestion
1772 of using the -b option to specify an alternate superblock.
1773
1774Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
1775
1776 * badblocks.c (read_bad_blocks_file): If we are adding or
1777 replacing bad blocks in the bad blocks inode, sanity check
1778 the bad block inode first, and clear out any illegal blocks.
1779
1780 * pass2.c (check_name): Don't bomb out if the attempt to get the
1781 pathname of the containing directory returns an error; the
1782 directory may be too badly damaged to expect that
1783 ext2fs_get_pathname will always succeed. Use "???" if the
1784 pathname can't be obtained (it's only for a printf to the
1785 user anyway).
1786
1787 The name of the containing directory and the bad filename
1788 were incorrectly interchanged in the user message. Fixed.
1789
1790 * pass2.c (check_name, check_dir_block): Use a common static
1791 string for the unknown pathname.
1792
1793Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
1794
1795 * Fixed lots of printf formats to make sure that block and inode
1796 numbers are printed as unsigned integers.
1797
1798Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
1799
1800 * pass5.c (check_block_end): Fix calculation of how the last block
1801 in the block bitmap should be calculated.
1802
1803Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
1804
1805 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1806 be an ext2fs_inode_bitmap, and free it properly.
1807
1808 * e2fsck.h
1809 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1810 level to the superblock.
1811
1812Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
1813
1814 * e2fsck.c (usage): Fixed bogus usage message.
1815
1816Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
1817
1818 * pass1.c (process_bad_block): Fixed bug so that blocks in the
1819 backup superblocks and group descriptors are handled gracefully.
1820