blob: 1e5f8a3bd2209749209925e9342f98d6ec963126 [file] [log] [blame]
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000012001-01-17 Theodore Ts'o <tytso@valinux.com>
2
3 * pass1.c (check_blocks): Fix large file checking code so that
4 files > 2GB are considered large files, and restrict
5 directories from being > 2GB.
6
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000072001-01-12 Theodore Ts'o <tytso@valinux.com>
8
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00009 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
10 function. Add FIXME notes to e2fsck_get_journal(), from
11 Andreas Dilger.
12
13 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
14 the limit caused by the fact that i_blocks is in 512 byte
15 units, and that the Linux buffer cache also fundamentally
16 assumes 512 byte sectors.
17 Make sure that the journal inode is a regular file, and
18 when clearing an unused journal inode, make sure the
19 icount db is updated.
20
21 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
22
Theodore Ts'o37b6b292001-01-12 21:16:13 +000023 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
24 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
25 to clear the journal, rather than deleting it (which is
26 more accurate). (From Andreas Dilger.)
27
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +000028 * journal.c: Make sure all functions which return an error code
29 use the errcode_t return type, and not "int"
30 (e2fsck_journal_release): Add new parameter, "drop",
31 which is used when we just want to deallocate the journal
32 without trying to write out any changes.
33 (mark_buffer_clean): New function
34 (e2fsck_check_ext3_journal): If we fail loading the
35 journal, make sure we free all memory associated with it.
36 (recover_ext3_journal): If we fail to load the journal or
37 initialize the revoke data structures, make sure we free all
38 memory associated with the journal.
39
Theodore Ts'o721edd02001-01-12 21:05:57 +000040 * message.c (special_inode_name): Add more special inode names
41 (From Andreas Dilger)
42
Theodore Ts'o58a75172001-01-12 20:59:19 +000043 * util.c (fatal_error): Check to make sure the io_manager data
44 structure is sane before trying to flush the io_channel.
45 (From Andreas Dilger)
46
Theodore Ts'o721edd02001-01-12 21:05:57 +000047 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
48 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +000049
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000050 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
51 bad journal number.
52
53 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
54 pctx->num when printing the bad journal inode number.
55
Theodore Ts'o86c627e2001-01-11 15:12:14 +0000562001-01-11 <tytso@snap.thunk.org>
57
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +000058 * pass1.c (process_block): Remove dead code which was never
59 getting executed.
60
61 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
62 ext2fs_sync_device() instead of using BLKFLSBUF.
63
64 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
65
Theodore Ts'o86c627e2001-01-11 15:12:14 +000066 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
67 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
68 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
69 ino_t to ext2_ino_t.
70
Theodore Ts'o95a5bc92001-01-11 04:58:21 +0000712001-01-09 <tytso@snap.thunk.org>
72
73 * problem.c: Fix another broken @F vs @f problem.
74
Theodore Ts'o53ef44c2001-01-06 05:55:58 +0000752001-01-06 <tytso@snap.thunk.org>
76
77 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
78 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
79
80 * jfs_user.h: Use more sophisticated inline handling to allow
81 building with --enable-gcc-wall
82
Theodore Ts'od3f35b62001-01-03 13:00:43 +0000832001-01-03 <tytso@snap.thunk.org>
84
Theodore Ts'of18996c2001-01-03 16:57:24 +000085 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
86 own block; if the journal inode is not in use, and it
87 contains data, offer to clear it.
88
89 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
90 problem code.
91
92 * problem.c: Modified problem table to use a new abbreviations.
93
Theodore Ts'od74edf42001-01-03 19:38:04 +000094 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +000095 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +000096
Theodore Ts'occ7067b2001-01-03 13:24:06 +000097 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
98
Theodore Ts'od3f35b62001-01-03 13:00:43 +000099 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
100 the journal stored on a reserved inode. Also force a fsck
101 if the journal appears to exist while !NEEDS_RECOVERY, and
102 we forcibly reset the journal.
103
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001042001-01-01 <tytso@snap.thunk.org>
105
Theodore Ts'o5dd8f962001-01-01 15:51:50 +0000106 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
107 ext2fs_sb with struct ext2_super_block.
108
Theodore Ts'of5ae75e2001-01-01 14:52:52 +0000109 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
110
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +00001112000-12-31 <tytso@snap.thunk.org>
112
113 * jfs_compat.h: Remove uneeded header file.
114
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001152000-12-30 <tytso@snap.thunk.org>
116
Theodore Ts'oc59a7042000-12-31 01:52:03 +0000117 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
118 conflicts with the system header file.
119
Theodore Ts'ob2f93192000-12-30 20:33:42 +0000120 * problem.h: Fixed numbering of pass1 error messages; an extra 0
121 had slipped into some of the numbers. (Pointed out by
122 Andreas Dilger)
123
124 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
125 unnecessary automatic variable. Add explanatory comment
126 about the kernel emulation routines. (Suggested by
127 Andreas Dilger)
128
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001292000-12-13 Theodore Ts'o <tytso@valinux.com>
130
Theodore Ts'o9b565752000-12-13 18:50:22 +0000131 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
132 journal fields are consistent if any of the superblock
133 fields are set. (Backs out erroneous change made by sct,
134 pointed out by Andreas.)
135
136 * unix.c (main): Clarify coments (no code changes)
137
138 * super.c (release_orphan_inodes): Fix spelling typo in error message.
139
Theodore Ts'o8188c9e2000-12-13 18:39:14 +0000140 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
141 level if we need to set large files flag. Patch from
142 Andreas Dilger.
143
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +0000144 * super.c (check_super_block): If we have any of the compatibility
145 flags set, we need to have a revision 1 filesystem. Most
146 kernels will not check the flags on a rev 0 filesystem
147 and we may have corruption issues because of the
148 incompatible changes to the filesystem. Patch from Andreas
149 Dilger.
150
Theodore Ts'o060b5fb2000-12-13 18:07:23 +0000151 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
152 new problem codes.
153
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001542000-12-09 <tytso@snap.thunk.org>
155
Theodore Ts'obf2d4992000-12-09 14:46:20 +0000156 * flushb.c: Fix flushb so that it does something other than waste
157 disk space when built on systems with modern header files
158 and add a non-subtle Copyright Licensing restriction so
159 Yann will remove it from the Debian Distribution. (Now
160 violates the Debian Free Software Guidelines, on purpose.)
161
Theodore Ts'of43650c2000-12-09 06:47:56 +0000162 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
163 at the top level, set the JFS debuging level to 2.
164
Theodore Ts'o0e8a9562000-12-09 06:41:25 +0000165 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
166 has been moved to the include/linux directory.
167
168 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
169 support the V2 superblock and revoke processing. The
170 journal.c and revoke.c files are copies from the ext3
171 kernel source.
172
173 * Makefile.in: Added revoke.c to the list of source/object files.
174
Theodore Ts'o133a56d2000-11-17 05:40:49 +00001752000-11-16 Theodore Ts'o <tytso@valinux.com>
176
177 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
178 reporting problems rather than using com_err directly.
179
180 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
181
182 * message.c (expand_percent_expression): Add safety check. If
183 ctx->str is NULL, print "NULL" instead of dereferencing
184 the null pointer.
185
186 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
187 to ext2fs_block_iterate2, to support 64-bit filesizes and
188 to speed things up slightly by avoiding the use of the
189 ext2fs_block_iterate's compatibility shim layer.
190
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +00001912000-10-30 <tytso@snap.thunk.org>
192
193 * util.c (get_backup_sb): Calculate backup superblock correctly
194 when the blocksize is > 1k.
195
Theodore Ts'o241f2242000-10-26 20:42:07 +00001962000-10-26 <tytso@snap.thunk.org>
197
198 * jfs.h, jfs_compat.h, journal.c: Updated to include the
199 definition of the new journal superblock format; still
200 only supports V1 superblocks for now. (From sct)
201
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00002022000-10-24 <tytso@snap.thunk.org>
203
Theodore Ts'o83949022000-10-25 01:38:50 +0000204 * super.c (release_inode_block, release_inode_blocks,
205 release_orphan_inodes): Add code to deal with truncating
206 inodes which are still in use (but which are on the orphan
207 list because they need truncation).
208
209 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
210 PR_0_ORPHAN_CLEAR_INODE, and remove
211 PR_0_ORPHAN_INODE_INUSE.
212
213 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
214 a message when the journal is being recovered.
215
Theodore Ts'ob09a4b02000-10-24 21:16:09 +0000216 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
217 journal inode, if it is in use.
218
Theodore Ts'oadfca562000-09-12 21:24:36 +00002192000-09-12 <tytso@valinux.com>
220
221 * extend.c:
222 * flushb.c: Add include of nls-enable.h which is necessary so that
223 they can compile correctly.
224
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00002252000-08-22 <tytso@valinux.com>
226
Theodore Ts'o2575fb02000-08-22 21:50:04 +0000227 * unix.c (main): If we're doing a read-only check, skip the
228 journal playback, but don't abort the e2fsck run.
229
Theodore Ts'o99a2cc92000-08-22 21:41:52 +0000230 * super.c (release_orphan_inodes): Fix typo; should do bounds
231 checking on next_ino instead of ino.
232
233 * jfs_compat.h (J_ASSERT):
234 * journal.c (e2fsck_run_ext3_journal):
235 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
236
Theodore Ts'o243dc312000-08-22 21:37:47 +0000237 * unix.c: Use fatal_error() instead of exit() whenever possible.
238 Also fix the fsck exit codes so that we use FSCK_USAGE
239 when it is appropriate. Rename global_signal_ctx to
240 e2fsck_global_ctx and let it be exported globally.
241
Theodore Ts'occ96b2b2000-08-22 21:30:11 +0000242 * util.c (fatal_error): Try to flush the I/O manager before
243 forcing an exit.
244
Theodore Ts'oecf1b772000-08-20 22:06:31 +00002452000-08-20 <tytso@valinux.com>
246
247 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
248 e2fsck_check_ext3_journal to smash the journal because
249 journal->j_transaction_sequence wasn't getting
250 initialized.
251
252 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
253 call to e2fsck_clear_recover from recover_ext3_journal to
254 after the filesystem has been closed and reopened.
255 Otherwise, the superblock in the filesystem handle will
256 probably be stale, and will overwrite the newer version of
257 the superblock written by the log recovery.
258
259 * message.c (expand_inode_expression): Add support for %Iu and %Ig
260
261 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
262
263 * super.c (release_orphan_inodes, release_inode_block,
264 release_inode_blocks): Update the block group descriptor
265 counts when freeing the orphan inode. Use
266 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
267
268 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
269 attempted to reopen the filesystem using the device name
270 instead of the filesystem name.
271
Theodore Ts'o80bfaa32000-08-18 15:08:37 +00002722000-08-18 <tytso@valinux.com>
273
274 * Makefile.in: Update the make dependencies
275
276 * problem.c, problem.h: Add the problem codes:
277 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
278 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
279 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
280 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
281
282 * super.c (release_inode_blocks, release_orphan_inodes,
283 check_super_block): Add support for clearing orphaned
284 inodes from the unmounted filesystem.
285
286 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
287 check; this is now handled in check_super_block ---
288 non-journaled filesystems can use the orphan list in the
289 future. Also, move the the re-opening of the filesystem
290 to e2fsck_run_ext3_journal().
291
Theodore Ts'o3b5386d2000-08-14 14:25:19 +00002922000-07-12 Andreas Dilger <adilger@turbolinux.com>
293
294 * journal.c: implement loading of ext3 journal for recovery code
295
296 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
297 Add journal problems.
298
299 * recovery.c (journal_recover): user-space ext3 journal recovery code
300
301 * unix.c (main) : check journal and do recovery in separate steps
302
Theodore Ts'ob8d164c2000-08-08 03:17:04 +00003032000-08-07 <tytso@snap.thunk.org>
304
305 * unix.c (calc_percent): Make sure that we don't take a floating
306 exception if the max value is zero. (should normally
307 never happen, but...)
308
Theodore Ts'of9e67062000-07-13 23:25:54 +00003092000-07-13 <tytso@valinux.com>
310
311 * Release of E2fsprogs 1.19
312
Theodore Ts'o17390c02000-07-07 04:13:21 +00003132000-07-06 Theodore Ts'o <tytso@valinux.com>
314
315 * unix.c (check_if_skip): Modify algorithm for checking
316 s_max_mnt_count to match with the kernel. (If
317 s_max_mnt_count is negative, ignore the mnt_count check.)
318
319 * unix.c (e2fsck_update_progress): Adjust the width of the
320 progress bar dynamically, based on the filesystem name
321 that we need to display.
322
323 * unix.c (main): If the ext3 needs_recovery flag is set, call
324 e2fsck_run_ext3_journal() and then restart the e2fsck run.
325
326 * journal.c (e2fsck_run_ext3_journal): New file which contains
327 logic to recover the ext3 journal. This version relies on
328 the kernel being able to mount the filesystem in order to
329 run the journal.
330
Theodore Ts'o92269042000-07-05 18:25:59 +00003312000-07-05 Theodore Ts'o <tytso@valinux.com>
332
333 * unix.c (e2fsck_update_progress): Only save and check the last
334 percentage after multiplying it by 10, nor 1000, since we
335 only need to save values to a tenth of a percent (and the
336 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000337 Also, re-arrange the logic so that we do the time
338 check only after doing the percentage check, and we
339 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000340
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00003412000-07-04 Theodore Ts'o <tytso@valinux.com>
342
343 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
344 field is set; if so, clear it, so that ext3 mounting code
345 won't get confused by the fact that we've cleared out the
346 orphaned inodes.
347
Theodore Ts'obbd47d72000-06-10 19:21:33 +00003482000-06-10 Theodore Ts'o <tytso@valinux.com>
349
350 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
351 checking for a "should never happen case".
352
353 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
354 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
355
Theodore Ts'od647a1e2000-05-27 14:40:09 +00003562000-05-27 Theodore Ts'o <tytso@valinux.com>
357
358 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
359 (cw@foof.org) which checks to see if special devices have
360 a non-zero size, and deals with it.
361
362 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
363
Theodore Ts'o1d279212000-05-19 02:38:14 +00003642000-05-18 Theodore Ts'o <tytso@valinux.com>
365
366 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
367 well.
368
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00003692000-05-08 Theodore Ts'o <tytso@valinux.com>
370
371 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
372 code.
373
374 * super.c (check_super_block): If the OS type in the superblock is
375 the Hurd, check to see if the filetype feature is set, and
376 offer to clear it if so. This needs to be done since the
377 Hurd doesn't properly support the filetype feature.
378 (And since the hurd allows the transmogrification of files
379 to special files and vice versa --- for no good reason
380 that I can understand --- it can't support the filetype
381 feature for the forseeable future, either.)
382
Theodore Ts'o373b8332000-04-03 16:22:35 +00003832000-04-03 Theodore Ts'o <tytso@valinux.com>
384
385 * unix.c: For platforms that don't define optarg.h, manually
386 define optarg and optind.
387
Theodore Ts'o01fbc702000-04-03 13:57:21 +00003882000-03-20 Theodore Ts'o <tytso@valinux.com>
389
390 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
391 Check for the append-only as well as the immutable flag.
392
393 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
394 append-only flag. Fix comment for compression flag.
395
Theodore Ts'o06012322000-02-12 20:12:43 +00003962000-02-12 <tytso@snap.thunk.org>
397
398 * unix.c (e2fsck_update_progress): Limit the number of updates to
399 the progress bars to 8 times a second. This allows a 9600
400 baud console link to keep up.
401
Theodore Ts'o19178752000-02-11 15:55:07 +00004022000-02-11 <tytso@snap.thunk.org>
403
404 * unix.c (main): If compression is enabled on the filesystem,
405 print a warning message (for now).
406
407 * message.c: Add new compression shortcut: @c == compress
408
409 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
410
411 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
412 set, check to see if the filesystem supports compression.
413 If it does pass this information down to process_block()
414 so it can treat the compressed block flag words
415 correctly. If not, offer to clear the flag, since it
416 shouldn't be set.
417 (process_block): If an inode has the compressed inode flag
418 set, allow EXT2FS_COMPRESSED_BLKADDR.
419
420 * pass1b.c (process_pass1b_block, delete_file_block,
421 clone_file_block):
422 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
423 see if the block can be skipped.
424
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00004252000-02-08 <tytso@snap.thunk.org>
426
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000427 * util.c: Make resource tracking message more concise.
428
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000429 * e2fsck.h:
430 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
431 ctx->block_illegal_map, since it's not needed by pass1,
432 and pass1b has been modified to calculate it manually if
433 needed. This reduces the memory footprint needed by e2fsck.
434
435 * pass1b.c (check_if_fs_block): New static function which returns
436 whether or not a block overlaps with filesystem metadata.
437 This replaces consulting the block_illegal_map bitmap.
438
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000439 * Makefile.in: Call sync after finishing building all in this
440 directory.
441
442 * unix.c (PRS): sync the filesystem before trying to use
443 BLKFLSBUF, to minimize the chance of causing dirty blocks
444 to get dropped.
445
446 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
447 a Linux/i386 system.
448
449 * pass3.c (check_directory): Only do the loop detection algorithm
450 if we've searched over 2048 parent directories and haven't
451 found the end yet. This means that in the common case, we
452 don't allocate or clear the inode_loop_detection bitmap,
453 which for large systems, merely clearing the bitmap for
454 each directory was turning out to be quite expensive.
455 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
456 identifying this problem.
457
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00004582000-02-06 Theodore Ts'o <tytso@valinux.com>
459
460 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
461 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
462 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
463 unix.c, util.c: Add Internationalization support as
464 suggested by Marco d'Itri <md@linux.it>.
465
Theodore Ts'o80e808f2000-02-02 16:19:59 +00004662000-02-02 Theodore Ts'o <tytso@valinux.com>
467
468 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
469 linux/fs.h
470
Theodore Ts'o894edb22000-01-18 21:27:12 +00004712000-01-18 Theodore Ts'o <tytso@valinux.com>
472
473 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
474 we need a separate DEPLIBUUID that can be used in
475 Makefile's dependency rules.
476
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00004771999-11-23 <tytso@valinux.com>
478
479 * e2fsck.8.in: Update language about where to find a backup
480 superblock.
481
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00004821999-11-19 <tytso@valinux.com>
483
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000484 * pass1.c (process_inodes): Add shortcut handling; if
485 process_inodes_count is zero, return right away, to avoid
486 calling qsort with a non-positive count.
487
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000488 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
489 to print Delete as ^?
490
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000491 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
492 the source directory.
493
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00004941999-11-10 <tytso@valinux.com>
495
Theodore Ts'ocd086361999-11-10 16:00:39 +0000496 * Release of E2fsprogs 1.18
497
4981999-11-10 <tytso@valinux.com>
499
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000500 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
501 means the answer is assumed to be no in preen mode. This
502 is now used in the PR_1_SET_IMMUTABLE code, so that in
503 preen mode we ignore these inodes and just print a warning
504 message.
505
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00005061999-11-09 <tytso@valinux.com>
507
508 * pass1.c (e2fsck_pass1): If the filesystem does not support
509 imagic inodes, if an inode has the imagic flag set, offer
510 to clear the imagic flag. If a valid device/fifo/socket
511 has the immutable flag set, call the new helper function
512 check_immutable() to offerto clear the immutable flag.
513
514 * pass2.c (check_filetype): Use the new ext2_file_type() helper
515 function instead of calculating the file_type information
516 manually.
517
518 * pass3.c (e2fsck_reconnect_file): When adding a link to
519 lost+found, calculate the filetype information so that
520 ext2fs_link() can use the information if applicable.
521 (get_lost_and_found): Create the /lost+found directory
522 with the correct filetype information if applicable.
523
524 * util.c (ext2_file_type), e2fsck.h: New function which returns
525 the directory entry file type information given the
526 inode's mode bits.
527
528 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
529 and PR_1_SET_IMMUTABLE.
530
Theodore Ts'o7142db01999-11-08 18:46:54 +00005311999-11-07 <tytso@valinux.com>
532
533 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
534 to prevent it from getting freed twice.
535
5361999-11-06 <tytso@valinux.com>
537
538 * unix.c (main): Close the filesystem before freeing the context,
539 so that in the event of a free()-related segmentation
540 violation, the filesystem is properly closed and written
541 out.
542
5431999-10-27 <tytso@valinux.com>
544
545 * e2fsck.c (e2fsck_reset_context): When freeing
546 ctx->inode_reg_map, we weren't zero'ing
547 ctx->inode_reg_map, which could cause a segfault later on
548 in the e2fsck run.
549
5501999-10-26 <tytso@valinux.com>
551
552 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
553 matches the standard convention).
554
Theodore Ts'of68aa411999-10-26 14:20:22 +00005551999-10-26 <tytso@valinux.com>
556
Theodore Ts'o28e11941999-10-26 18:17:20 +0000557 * Release of E2fsprogs 1.17
558
5591999-10-26 <tytso@valinux.com>
560
Theodore Ts'of68aa411999-10-26 14:20:22 +0000561 * message.c (safe_print): Make safe_print take an char instead of
562 an unsigned char to fix gcc warnings.
563
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00005641999-10-25 <tytso@valinux.com>
565
Theodore Ts'oe6597041999-10-26 02:30:16 +0000566 * util.c: For NT portability, don't redefine getchar(), since
567 stdio defines that. Instead we introduce a new
568 abstract macro read_a_char() which is #defined to the
569 right function as necessary.
570
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000571 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
572
573 * pass2.c (check_dir_block): Require that the length of the
574 directory entry be at least 12 bytes. Check to see if the
575 filename is zero-length, and flag that as an error.
576
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00005771999-10-22 <tytso@valinux.com>
578
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000579 * Release of E2fsprogs 1.16
580
5811999-10-22 <tytso@valinux.com>
582
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000583 * pass2.c (check_filetype): If the filetype filesystem feature is
584 not set, and a directory entry has a dirent feature, offer
585 to clear it (since 2.0 kernels will do complain will
586 interpret it as a very large name length field).
587
588 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
589
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00005901999-10-21 <tytso@valinux.com>
591
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000592 * e2fsck.8.in: Update man page to use a more standard format (bold
593 option flags and italicized variables), as suggested by
594 Andreas Dilger (adilger@enel.ucalgary.ca)
595
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000596 * pass4.c (e2fsck_pass4): If an inode is set in the
597 inode_imagic_map bitmap, don't check to see if it is
598 disconnected from the inode tree (because it almost
599 certainly will be). Free inode_imagic_map at the end of
600 pass 4.
601
602 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
603 feature is set, check the directory entry's filetype
604 information field, and fix/set it if necessary.
605 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
606 of pass 2.
607
608 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
609 information for inode_reg_map and inode_imagic_map, which
610 indicates which inodes are regular files and AFS inodes,
611 respectively.
612 Since only the master superblock is written during a
613 restart, force that superblock to be used after a restart;
614 otherwise changes to the block group descriptors end up
615 getting ignored.
616
617 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
618 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
619 which supresses the problem message if e2fsck is run with
620 the -n option.
621
622 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
623 new problem codes.
624
625 * message.c (expand_dirent_expression): Add support for %dt which
626 prints the dirent type information.
627
628 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
629 and inode_imagic_map).
630
631 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
632 to the context structure.
633
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +00006341999-09-24 <tytso@valinux.com>
635
636 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
637 e2fsprogs easier to port to non-Unix platforms.
638
6391999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +0000640
641 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
642 internal and external inode counts in sync when we
643 decremented an inode whose link count was already zero.
644 Now we skip incrementing or decrementing both link counts
645 if we would cause an overflow condition.
646 (expand_dir, expand_dir_proc): Change where we update the
647 inode block count and size files so that the block count
648 field is updated correctly when we create an indirect block.
649
Theodore Ts'o78cf0541999-10-20 18:29:18 +00006501999-08-05 <tytso@valinux.com>
651
652 * super.c (check_super_block): Check to see whether the
653 inodes_per_group value in the superblock is insanely too
654 high.
655
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00006561999-08-02 <tytso@valinux.com>
657
658 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
659 the block also shares data with the fs metadata when
660 the count drops to 1, since the block should still be
661 cloned, as fs metadata isn't included in the count.
662
6631999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000664
665 * Release of E2fsprogs 1.15
666
Theodore Ts'ob55199e1999-07-19 15:37:46 +00006671999-07-19 <tytso@valinux.com>
668
669 * unix.c (usage): Add minimalist emergency help to the usage
670 message.
671
Theodore Ts'o5596def1999-07-19 15:27:37 +00006721999-07-18 <tytso@valinux.com>
673
674 * unix.c: Add support for calculating a progress bar if the -C0
675 option is given. The function e2fsck_clear_progbar()
676 clears the progress bar and must be called before any
677 message is issued. SIGUSR1 will enable the progress bar,
678 and SIGUSR2 will disable the progress bar. This is used
679 by fsck to handle parallel filesystem checks. Also, set
680 the device_name from the filesystem label if it is
681 available.
682
683 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
684 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
685 structure which contains the last tenth of a percent
686 printed for the user.
687
688 * message.c (print_e2fsck_message): Add call to
689 e2fsck_clear_progbar().
690
691 * pass1.c (e2fsck_pass1):
692 * pass2.c (e2fsck_pass2):
693 * pass3.c (e2fsck_pass3):
694 * pass4.c (e2fsck_pass4):
695 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
696 printing the resource tracking information.
697
698 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
699 an error in the bitmaps, suppress printing the progress
700 bar using the suppression flag for the remainder of the
701 check, in order to clean up the display.
702
Theodore Ts'o74033351999-07-01 03:00:47 +00007031999-06-30 <tytso@valinux.com>
704
705 * unix.c (check_mount): Clean up the abort message displayed when
706 the filesystem is mounted and either stdout or stdin isn't
707 a tty.
708
7091999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +0000710
711 * e2fsck.h:
712 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
713 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
714 pass1_* be private static functions, and create new
715 function e2fsck_use_inode_shortcuts which sets and clears
716 the inode shortcut functions in the fs structure.
717
718 * e2fsck.h:
719 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
720 exported function.
721
722 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
723 if a disconnected inode has any problems before
724 connecting it to /lost+found. Bug and suggested fix by
725 Pavel Machek <pavel@bug.ucw.cz>
726
7271999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +0000728
729 * unix.c (main): Add missing space in the disk write-protected
730 message.
731
Theodore Ts'od4b0ce01999-06-18 01:09:29 +00007321999-05-22 <tytso@rsts-11.mit.edu>
733
734 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
735 code.
736
737 * super.c (check_super_block): Add check to make sure the total
738 number of inodes is sane, since this can be calculated
739 from the number of groups times the number of inodes per
740 group. Offer to correct it if it is incorrect.
741
Theodore Ts'oe79d1b21999-06-18 01:06:59 +00007421999-03-19 <tytso@rsts-11.mit.edu>
743
744 * pass5.c (check_block_end): Fix fencepost condition where when
745 clearing the block padding we were missing the last position
746 in the bitmap.
747
Theodore Ts'o75d83be1999-05-18 03:16:36 +00007481999-05-17 <tytso@rsts-11.mit.edu>
749
750 * unix.c (reserve_stdio_fds): Add safety check in case
751 reserve_stdio_fds couldn't open /dev/null.
752
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00007531999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
754
755 * util.c (print_resource_track): Use mallinfo if present to get
756 more accurate malloc statistics.
757
758 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +0000759 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +0000760
761 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
762
7631999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
764
765 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
766 that the block group number is printed. Add new prompt,
767 PROMPT_UNLINK.
768
7691999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
770
771 * Release of E2fsprogs 1.14
772
Theodore Ts'o9e51eca1999-01-09 16:32:31 +00007731999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
774
775 * message.c (safe_print): New function which prints strings,
776 converting non-printable characters using the '^' and
777 M-notation. This function is now used to print directory
778 name entries and pathnames.
779
Theodore Ts'o73f17cf1999-01-04 07:35:45 +0000780Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
781
782 * unix.c (main): Reset the context before calling ext2fs_close(),
783 to avoid referencing already freed memory.
784
Theodore Ts'o556ad131998-12-19 08:10:58 +00007851998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
786
787 * Release of E2fsprogs 1.13
788
Theodore Ts'o5a679c81998-12-03 16:40:38 +00007891998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
790
791 * Makefile.in: Updated dependencies.
792
7931998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
794
795 * pass3.c (get_lost_and_found): If the filesystem is not opened
796 read-only, then force /lost+found to be created if it is
797 not present.
798
799 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
800 operation.
801
Theodore Ts'o1dde43f1998-11-14 04:18:28 +00008021998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
803
804 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
805 since e2fsck_free_context may reference data in ctx->fs.
806
807 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
808 before checking ctx->fs->dblist.
809
8101998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
811
812 * pass1.c (e2fsck_pass1): Use the device check subroutine on
813 FIFO's and Socket's, so that we catch bogus immutable inodes.
814
815 * pass2.c (process_bad_inode): Process bad socket and fifo's.
816
817 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
818 PR_2_BAD_SOCKET.
819
Theodore Ts'o7f813ba1998-09-03 01:26:03 +00008201998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
821
822 * problem.c: Add PR_3_NO_DIRINFO error code.
823
824 * super.c (check_super_value): Rename min and max to min_val and
825 max_val to avoid possible cpp macro conflicts.
826
827 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
828 possible cpp macro conflicts.
829
830 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
831 cpp macro conflicts.
832 (check_directory): Fix logic to avoid possible core dump
833 in the case of ext2fs_get_dir_info returning NULL. (By
834 the time we get here, it should never happen, but...).
835 Also simply/streamline the control flow of the function.
836
Theodore Ts'o24fc5031998-08-26 15:23:31 +00008371998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
838
839 * unix.c (check_if_skip): Move the "not cleanly mounted" check
840 ahead of the maximal mount and too long since checked tests.
841 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
842 open, so that we don't open the filesystem using the same
843 file descriptor as stdout or stderr.
844
Theodore Ts'of75c28d1998-08-01 04:18:06 +00008451998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
846
847 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
848 get to 100%.
849
850 * pass3.c (e2fsck_pass3): Change progress accounting to be
851 consistent with the other e2fsck passes.
852
853 * e2fsck.c (e2fsck_run): At the end of each pass, call the
854 progress function with the pass number set to zero.
855
856 * unix.c (e2fsck_update_progress): If the pass number is zero,
857 ignore the call, since that indicates that we just want to
858 deallocate any progress structures.
859
Theodore Ts'o8144d671998-07-09 05:33:18 +00008601998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
861
Theodore Ts'o4a5fa191998-07-09 05:42:45 +0000862 * Release of E2fsprogs 1.12
863
8641998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
865
Theodore Ts'o8144d671998-07-09 05:33:18 +0000866 * unix.c (main): Fix typo in checking the incompat feature set; it
867 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
868
Theodore Ts'o1fad9041998-07-07 05:44:43 +00008691998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
870
871 * badblocks.c (test_disk): Don't clear the existing bad blocks
872 list when using e2fsck -c, since it may cause blocks with
873 marginal errors to be dropped from the bad blocks list.
874
Theodore Ts'o874b4d21998-07-06 14:33:12 +0000875Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
876
877 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
878 compatibility with older kernels.
879
Theodore Ts'o818180c1998-06-27 05:11:14 +00008801998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
881
882 * unix.c (e2fsck_update_progress): Remove unused variables.
883
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +00008841998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
885
886 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
887 collision with LFS API.
888
889 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
890 properly initialized.
891 (e2fsck_pass1): Don't allow the the boot loader inode to
892 be a directory (clear the inode mode field if so).
893
Theodore Ts'oefac9a11998-05-07 05:02:00 +00008941998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
895
896 * unix.c (PRS): Added new option -C, which causes e2fsck to print
897 progress updates so that callers can keep track of the
898 completion progress of e2fsck. Designed for use by
899 progress, except for -C 0, which prints a spinning report
900 which may be useful for some users.
901
902 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
903 scheme (useful for larger filesystems).
904
905 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
906 progress reporting functions.
907
Theodore Ts'o4c77fe51998-04-30 17:35:59 +00009081998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
909
910 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
911 appropriate return type for comparison functions for qsort.
912
913 * e2fsck.h: Add #ifdef protection for unistd.h
914
915 * super.c: Remove header files already included by e2fsck.h
916
Theodore Ts'o76f875d1998-04-27 01:41:13 +00009171998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
918
919 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
920 size of the memory to be resized to ext2fs_resize_mem().
921
Theodore Ts'o7e44f241998-04-01 03:16:29 +00009221998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
923
924 * Makefile.in: Change to use new installation directory variables
925 convention. Fix uninstall rules to take $(DESTDIR) into
926 account. Remove cat8dir from the installdirs target,
927 since modern man package don't necessarily put the cat
928 directory in /usr/man/cat?.
929
Theodore Ts'o17dba281998-03-30 01:16:26 +00009301998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
931
932 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
933 extern in e2fsck.h to prevent -Wall warnings.
934
935 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
936
9371998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
938
939 * super.c (check_super_block): Fix broken superblock sanity check
940 when calculating blocks_per_group if s_log_frag_size !=
941 s_log_block_size. Since we don't support fragments, this
942 isn't a bug deal, but it's good to get it fixed.
943
Theodore Ts'o246501c1998-03-24 16:22:38 +00009441998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
945
946 * unix.c: Fix bug in check of feature set, to make sure we can
947 really fix this filesystem.
948
949 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
950 num field be a 64 bit type. Add the problem code
951 PR_1_FEATURE_LARGE_FILES
952
953 * problem.c: Add table entry for the problem code
954 PR_1_FEATURE_LARGE_FILES.
955
956 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
957 a problem for directory inodes. (Since it is also
958 i_size_high now.) If there are no large_files, then
959 clear the LARGE_FLAG feature flag. If there are
960 large_files, but the LARGE_FLAG feature flag is not set,
961 complain and offer to fix it.
962 (check_blocks): Add support to deal with non-directory
963 inodes that have i_size_high set (i.e., large_files).
964 Don't give an error if a directory has preallocated
965 blocks, to support the DIR_PREALLOC feature.
966 (process_block, process_bad_block): The blockcnt variable
967 is a type of blkcnt_t, for conversion to the new
968 block_iterate2.
969
970 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
971 a problem for directory inodes. (Since it is also
972 i_size_high now.)
973
974 * message.c (expand_inode_expression): Print a 64-bits of the
975 inode size for non-directory inodes. (Directory inodes
976 can only use a 32-bit directory acl size, since
977 i_size_high is shared with i_dir_acl.) Add sanity check
978 so that trying to print out the directory acl on a
979 non-directory inode will print zero.
980 (expand_percent_expression): %B and %N, which print
981 pctx->blkcount and pctx->num, can now be 64 bit
982 variables. Print them using the "%lld" format if
983 EXT2_NO_64_TYPE is not defined.
984
985 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
986
987 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
988 field.
989
Theodore Ts'ob6f79831998-03-09 13:10:37 +0000990Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
991
992 * pass3.c (fix_dotdot_proc):
993 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
994 * message.c (expand_dirent_expression): Mask off the high eight
995 bits of the directory entry's name_len field, so that it
996 can be used for other purposes.
997
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +0000998Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
999
1000 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
1001 include EXT2_FLAG_RESTART anymore, we need to adjust this
1002 routine so that it *does* return in the case of it seeing
1003 EXT2_FLAG_RESTART.
1004
1005 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
1006 done callback function, which may set context abort
1007 flags. So we need to test the context abort flags after
1008 we call ext2_get_next_inode().
1009 (process_inodes): If we abort due out of process_inodes,
1010 do a clean exit by breaking out of the for loop instead of
1011 just returning.
1012
1013 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
1014 considered a SIGNAL mask (i.e., requiring an immediate
1015 abort of processing to restart). FLAG_RESTART just means
1016 that we want to restart once pass 1 is complete.
1017
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00001018Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1019
1020 * Change the progress function to return an integer; if returns 1,
1021 then the progress function is expected to have set the
1022 e2fsck context flag signalling a user abort, and the
1023 caller should also initiate a user abort.
1024
Theodore Ts'o63c49691998-02-20 05:24:59 +00001025Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1026
1027 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
1028 end_problem_latch() unless there was actually a problem
1029 latched. Simplifies semantics of the latch processing.
1030
Theodore Ts'o43139321998-02-16 22:34:46 +00001031Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1032
1033 * e2fsck.h: Add new field, priv_data to the e2fsck context
1034 structure. It should be used by callers of the e2fsck
1035 functions only, and not by anything in e2fsck itself.
1036
1037Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1038
1039 * super.c: Instead of call ext2fs_get_device_size(), define and call
1040 e2fsck_get_device_size(). (This function may be stubbed
1041 out in special versions of e2fsck.)
1042
1043 * pass3.c, pass4.c: Remove extra calls to the progress function
1044 that weren't needed.
1045
1046 * mke2fs.8.in: Update man page to note that the format of the bad
1047 block file is the same as the one generated by badblocks.
1048
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00001049Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1050
1051 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
1052
1053 * e2fsck.h: Include <time.h> since it is needed
1054
1055 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
1056 processing.
1057
Theodore Ts'o24dd4021998-02-01 00:16:40 +00001058Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1059
1060 * unix.c (main): In the case where the filesystem revision is too
1061 high, print the message about the superblock possibly
1062 being corrupt.
1063
1064 * e2fsck.8.in: Add expanded comments about how the -b option
1065 works.
1066
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00001067Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1068
1069 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
1070 the ext2-specific header files are in a flat directory.
1071
1072 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
1073 super.c, swapfs.c, unix.c: Explicitly cast all assignments
1074 from void * to be compatible with C++.
1075
1076Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1077
1078 * unix.c (sync_disk): Remove sync_disk and calls to that function,
1079 since ext2fs_close() now takes care of this.
1080
1081Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1082
1083 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
1084 ehandler.c, unix.c: Change use of private to be priv_data,
1085 to avoid C++ reserved name clash.
1086
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00001087Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1088
1089 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
1090 of e2fsck_get_num_dirs, which has been removed.
1091
1092Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1093
1094 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
1095 to compile and install flushb.
1096
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00001097Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1098
1099 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
1100 to make sure the extra i_blocks in a device are cleared if
1101 the immutable flag is set.
1102
1103 * util.c (print_resource_track): Fix typo which caused the
1104 time/resource tracking to print "Pass 1 :" instead of
1105 "Pass 1: ".
1106
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00001107Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1108
1109 * pass3.c (expand_directory): Fix bug which could cause core dump
1110 when expanding the directory, and the bitmaps hadn't yet
1111 been read in. Also, only use ext2fs_write_dir_block when
1112 writing a directory block, not when writing out a fresh
1113 indirect block.
1114
Theodore Ts'o8039c481997-11-19 21:39:13 +00001115Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1116
1117 * pass1.c (process_bad_block): Fix bug where first_block wasn't
1118 getting incremented, which caused user to get a
1119 "Programming error?" warning if there was a bad block in a
1120 non-primary superblock/group_descriptor. Also fixed
1121 another bug so that ext2fs_bg_has_super() is consulted, to
1122 avoid problems when using a filesystem with the
1123 sparse_groups option set and there are bad blocks at the
1124 beginning of a group which doesn't have a superblock.
1125
Theodore Ts'of8188ff1997-11-14 05:23:04 +00001126Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1127
1128 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
1129 progress indicator function.
1130
1131 * pass1.c (scan_callback): Add call to the progress feedback
1132 function (if it exists).
1133
1134Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1135
1136 * super.c (check_super_block): Skip the device size check if the
1137 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
1138
1139 * iscan.c (main): Don't use fatal_error() anymore.
1140
1141 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
1142 calling fatal_error(0).
1143
1144 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
1145 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
1146
1147 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
1148
1149 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
1150
1151 * problemP.h: New file which separates out the private fix_problem
1152 data structures.
1153
1154 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
1155 swapfs.c util.c: allocate_memory() now takes a e2fsck
1156 context as its first argument, and rename it to be
1157 e2fsck_allocate_memory().
1158
Theodore Ts'o08b21301997-11-03 19:42:40 +00001159Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1160
Theodore Ts'o68227541997-11-04 04:25:22 +00001161 * unix.c (main): Add a special case check for the error code EROFS
1162 and display an appropriate error message for this case.
1163
Theodore Ts'o08b21301997-11-03 19:42:40 +00001164 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
1165 to take the e2fsck context as their first argument.
1166 Change dir_info.c routines to take an e2fsck_context,
1167 renamed them to start with e2fsck_ to avoid namespace
1168 issues, and changed them to store the directory
1169 information inside the e2fsck context.
1170 Added e2fsck_run() which calls all of the e2fsck passes in
1171 the correct order, and which handles the return of abort
1172 codes. Added abort processing, both via setjmp/longjmp
1173 and via flags in the e2fsck context. Use a flag in the
1174 e2fsck context instead of the restart_e2fsck global
1175 variable. Change uses of free and malloc to
1176 ext2fs_free_mem and ext2fs_get_mem.
1177
Theodore Ts'o291c9041997-10-31 06:17:08 +00001178Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1179
1180 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
1181 consistency.
1182
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00001183Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1184
1185 * pass3.c (get_lost_and_found): Check error return of
1186 EXT2_FILE_NOT_FOUND instead of ENOTDIR
1187
1188 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
1189 instead of ENOTDIR
1190
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001191Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1192
Theodore Ts'o519149f1997-10-25 03:49:49 +00001193 * unix.c (PRS): Make the variable which getopt returns into be
1194 an int, so that it won't lose on platforms where char is
1195 unsigned.
1196
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001197 * pass1b.c (clone_file): Fix bug in error reporting in the case
1198 where cs.errcode is non-zero.
1199
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001200Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1201
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00001202 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
1203 RESOURCE_TRACK around code which uses init_resource_track
1204 and print_resource_track. (Not all systems have timeval)
1205
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001206 * super.c: Remove excess #includes which are not necessary.
1207
1208 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
1209
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00001210Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1211
1212 * pass*.c, super.c: Massive changes to avoid using printf and
1213 com_err routines. All diagnostic messages are now routed
1214 through the fix_problem interface.
1215
1216Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1217
1218 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
1219 entries.
1220
1221 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
1222 PR_2_DUP_DOT_DOT.
1223
1224Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1225
1226 * problem.c: Added new problem codes for some of the
1227 superblock corruption checks, and for the pass header
1228 messages. ("Pass 1: xxxxx")
1229
1230 * util.c (print_resource_track): Now takes a description
1231 argument.
1232
1233Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1234
1235 * super.c, unix.c, e2fsck.c: New files to separate out the
1236 operating-specific operations out from e2fsck.c.
1237 e2fsck.c now contains the global e2fsck context management
1238 routines, and super.c contains the "pass 0" initial
1239 validation of the superblock and global block group
1240 descriptors.
1241
1242 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1243 (nearly) all global variables and moved them to the e2fsck
1244 context structure.
1245
1246 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1247 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1248 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1249
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001250Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1251
1252 * message.c: Add compression for the word "Illegal"
1253
1254 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1255 PR_2_BAD_BLOCK_DEV
1256
1257Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1258
1259 * pass1.c (pass1, check_device_inode), pass2.c
1260 (process_bad_inode): Use a more stringent test for a valid
1261 device.
1262
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001263Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1264
1265 * e2fsck.c (check_mount): Add stronger warning message about the
1266 perils of running e2fsck on a mounted filesystem.
1267
Theodore Ts'o024996c1997-06-17 05:38:35 +00001268Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1269
1270 * Release of E2fsprogs 1.11
1271
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001272Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1273
1274 * pass1.c (mark_table_blocks): Mark the superblock and group
1275 descriptor blocks first, so that any conflicts between
1276 these and the bitmap or inode table blocks is noticed.
1277
1278 * problem.c: Fix message printed out when a block or inode bitmap
1279 conflicts with other fs data, has the correct group number
1280 in it.
1281
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001282Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1283
1284 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1285
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001286Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1287
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001288 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1289 Hawes (whawes@star.net).
1290
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001291 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1292 bad blocks command so that all of the filesystem gets
1293 tested in the case where the blocksize 2048 or 4096.
1294
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001295Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1296
1297 * Release of E2fsprogs version 1.10
1298
1299Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1300
1301 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1302 where ext2fs_get_next_inode returns the
1303 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1304
1305Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1306
1307 * Release of E2fsprogs version 1.09
1308
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001309Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1310
1311 * Release of E2fsprogs version 1.08
1312
Theodore Ts'o521e3681997-04-29 17:48:10 +00001313Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1314
1315 * pass1b.c (clone_file_block): If we clone a directory, we need to
1316 update the dblist entry so that we check (and correct) the
1317 right directory block.
1318
1319Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1320
1321 * pass1.c (process_block): Don't clear blocks references to
1322 filesystem metadata; let pass 1B handle this case.
1323
1324 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1325
1326 * pass1b.c (pass1d): Deal with a block which is shared with
1327 filesystem metadata.
1328
1329 * e2fsck.h: Make block_illegal_map be a global variable
1330
1331Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1332
1333 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1334 feature.
1335 (get_backup_sb): New function which attempts to obtain the
1336 correct backup superblock (if possible).
1337
1338Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1339
1340 * e2fsck.c (main): Check the version of the library, and warn if
1341 the library is out of date; this happens generally due to
1342 users who manually install e2fsprogs.
1343
1344 * pass1.c (pass1_get_blocks): If the passed in inode number for
1345 get_blocks isn't what we're expecting pass back
1346 EXT2_ET_CALLBACK_NOT_HANDLED.
1347
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001348Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1349
1350 * Release of E2fsprogs version 1.07
1351
1352Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1353
1354 * icount.c: New file which implements an inode count abstraction.
1355 This significantly reduces amount of memory needed to
1356 check really large filesystems.
1357
1358 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1359 abstraction.
1360
1361Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1362
1363 * dirinfo.c (dir_info_iter): New function which allows iteration
1364 over the directories in the dir_info map.
1365
1366 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1367 over all directories in the dir_info structure, instead of
1368 iterating all inodes looking for directories, and then
1369 looking up the directories using get_dir_info().
1370
1371Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1372
1373 * pass1.c (pass1, process_block):
1374 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1375 manual code to manage the directory block list information.
1376
1377 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1378 (deallocate_inode): Call the ext2 library routine
1379 ext2_inode_has_valid_blocks() instead of
1380 inode_has_valid_blocks().
1381
1382 * swapfs.c (swap_inodes): Add check so that we don't try to call
1383 swap_inode_blocks unless the inode has valid blocks.
1384 (Otherwise a long fast symlink might cause
1385 swap_inode_blocks to erroneously get called.)
1386
1387Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1388
1389 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1390 PR_2_DOT_DOT_NULL_TERM.
1391
1392 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1393 .. entries are null-terminated, since the 2.0 kernel
1394 requires this (for no good reason).
1395
1396Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1397
1398 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1399 that we can recover from missing inode tables.
1400
1401 * dirinfo.c (get_dir_info): If there are no directories in the
1402 dir_info abstraction, don't core dump (because dir_info is
1403 NULL).
1404
1405 * e2fsck.c (main): Don't try using the backup superblocks if there
1406 aren't any.
1407 (check_super_block): If there are illegal inode table or
1408 bitmaps, set the filesystem as being in error.
1409
1410Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1411
1412 * pass2.c (check_dir_block): Added check to make sure that rec_len
1413 is a a multiple of 4 (so that the directory entries are
1414 4-byte aligned).
1415
1416Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1417
1418 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1419 line.
1420 (PROGS): Don't build and install the extend program by
1421 default.
1422
1423
1424Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1425
1426 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1427 saved and restored as well.
1428 (pass1): For fast sym links, skip the check_blocks
1429 processing step altogether.
1430
1431Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1432
1433 * problem.c, message.c: New files, to completely refurbish how
1434 filesystem problems are reported to the user. The
1435 diagnostic messages are now encoded out in an easily
1436 customizable, extensible format. The messages printed out
1437 in preen mode are all on one line, and contain the device
1438 name.
1439
1440Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1441
1442 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1443 deleted files.
1444
1445 * pass1.c (pass1): Ignore missing inode table errors during the
1446 scan, and just skip past those inodes.
1447
1448 * pass3.c (check_root): Remove root_ino argument, and assume that
1449 the root inode must be EXT2_ROOT_INO. Move responsibility
1450 of setting the parent of the root inode in the directory
1451 inode structure to pass2().
1452
1453 * pass2.c (check_dir_block): Don't allow links to the root
1454 directory.
1455
1456 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1457 since the inode is no longer used.
1458
1459Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1460
1461 * e2fsck.c (main): If the superblock magic number is wrong, or the
1462 block group fails a sanity check, then automatically
1463 restart trying to use the backup superblocks.
1464
1465 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1466 everything else; in the case where a bitmap block overlays
1467 the inode table, the inode table should take precedence.
1468
1469 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1470 message fit on one line, since the error can happen during
1471 a preen pass. (We eventually need to revamp the whole
1472 e2fsck error reporting and prompting system, but that's a
1473 job for another day.)
1474
1475Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1476
1477 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1478 for the benefit of the inode scan functions.
1479
1480 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1481 indicating that an inode is in a bad block, mark that
1482 inode as being used, as well as in the inode "bb" map.
1483
1484 * pass2.c (maybe_clear_entry): New function which generalizes the
1485 error cases when a directory entry needs to be cleared.
1486 (check_dir_block): If an inode is in the "bb" map, offer
1487 to clear the directory entry, since the inode is in a bad
1488 block.
1489
1490 * pass4.c (pass4): If an inode is marked as used, but is is marked
1491 in the "bb" map, don't process it as a disconnected inode.
1492
1493Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1494
1495 * Release of E2fsprogs version 1.06
1496
Theodore Ts'o5c576471997-04-29 15:29:49 +00001497Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1498
1499 * e2fsck.c (main): Print out the version number of the shared
1500 library when using the -V option.
1501
1502 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1503 consistency's sake.
1504
1505 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1506 out the backup superblocks when we know we have a valid
1507 filesystem.
1508
1509Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1510
1511 * util.c (preenhalt): Make it explicit on preenhalt that running
1512 e2fsck manually means without the -a or -p flag.
1513
1514Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1515
1516 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1517 (Linux/FT actually sets the mode bits, so we have to
1518 handle it specially.)
1519
1520 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1521 just dirty, so that the user knows that it's about to be
1522 checked (since this will take a while).
1523
1524Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1525
1526 * pass4.c: If a disconnected inode is zero-length, prompt to
1527 delete it instead of connecting it to lost+found.
1528
1529Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1530
1531 * Release of E2fsprogs version 1.05
1532
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001533Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1534
1535 * pass4.c (pass4): If the user refuses to connect an unattached
1536 inode to lost+found, don't try to set i_links_count. This
1537 is bad, since if the user says yes, the inode will be
1538 marked as unused, which is not necessarily the right
1539 thing, especially since the rest of the cleanup doesn't
1540 happen here.
1541
1542 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1543 dellocating an inode. (Not strictly necessary, but...)
1544
1545 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1546 error" message.
1547
1548Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1549
1550 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1551 byte-swap the filesystem so that it is normalized. -S
1552 will byte-swap the filesystem regardless of its current
1553 byte-order.
1554
1555 * swapfs.c: New file, which will byte-swap a filesystem.
1556
1557Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1558
1559 * pass1.c (pass1): Change handling on files with non-zero dtime
1560 and non-zero i_link_count; before we treated them as
1561 deleted file per botched ext2 0.3c kernel behavior. We
1562 now clear dtime instead.
1563
1564Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1565
1566 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1567 nothing else is changed, make sure FSCK_NONDESTRUCT is
1568 set (since after all having the filesystem set to
1569 invalid is an error. :-)
1570
1571Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1572
1573 * pass1.c (process_block): Make sure that meta data doesn't get
1574 accidentally set in the dir_blocks array (which could
1575 happen in some error condtions).
1576
1577 * pass1.c (pass1):
1578 * pass2.c (process_bad_inode): Check for fragments in a
1579 OS-independent fashion.
1580
1581Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1582
1583 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1584 cleanup for the filesystem.
1585
1586Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1587
1588 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1589
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001590Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1591
1592 * Release of E2fsprogs version 1.04
1593
1594Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1595
1596 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1597 try "e2fsck -b 8193" before allowing e2fsck to relocate
1598 inode table blocks.
1599
1600 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
1601 depending on the option to configure. Added targets for
1602 e2fsck.static and e2fsck.shared for people who want to
1603 build a static or shared variant manually.
1604
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001605Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1606
1607 * Release of E2fsprogs version 1.03
1608
1609Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
1610
1611 * e2fsck.c (show_stats): Don't use floating point to display
1612 percentage of non-contiguous files, as different libc
1613 handle result truncation differently, and this causes the
1614 test suite to bomb out depending on which libc you are
1615 using.
1616
1617 * util.c (allocate_memory): Fix error message to omit extraneous
1618 %%s.
1619
1620Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
1621
1622 * pass4.c (pass4):
1623 * pass2.c (check_dir_block):
1624 * pass1.c (pass1): Add support for dynamic first inode revision.
1625
1626Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
1627
1628 * pass3.c (check_root): Fix spelling typo
1629
1630Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
1631
1632 * e2fsck.c (check_super_block): If the superblock fails certain
1633 internal consistency checks, exit with a fatal error after
1634 printing the "superblock is corrupt message".
1635
Theodore Ts'o74becf31997-04-26 14:37:06 +00001636Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1637
1638 * Release of E2fsprogs version 1.02
1639
1640Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
1641
1642 * pass1.c (process_block): Check to see if a file is "fragmented".
1643 i.e., non-contiguous. Note that any file which is larger
1644 than the block group is guaranteed to be non-contiguous.
1645 We may want to use a different hueristic for deciding
1646 whether or not a file is "fragmented".
1647
1648 * e2fsck.c (show_stats): Print statistics of how many
1649 non-contiguous files are on the system.
1650
1651Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
1652
1653 * badblocks.c (read_bad_blocks_file, test_disk): Fold
1654 functionality of test_disk() (which runs badblocks) into
1655 read_bad_blocks_file(); test_disk() now calls
1656 read_bad_blocks_file() with a NULL bad_blocks_file
1657 argument.
1658
1659Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
1660
1661 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
1662 #if defined(linux). The latter won't work if we're
1663 compiling -ansi.
1664
Theodore Ts'o297f47a1997-04-26 14:25:20 +00001665Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
1666
1667 * e2fsck.c (check_mount): For Linux systems, the check to see if
1668 the root is mounted read-only has to be done for all
1669 filesystems, not just for the root filesystem, due to the
1670 way that some /etc/rc scripts are set up.
1671
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001672Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
1673
1674 * Makefile.in (install): Strip programs when they are installed.
1675 (e2fsck): Build e2fsck statically.
1676
1677Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
1678
1679 * util.c (preenhalt): Preenhalt now takes an argument, which is an
1680 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
1681 flag in the superblock in cases where preenhalt is called.
1682 All calls to preenhalt() were changed to either
1683 preenhalt(fs) or preenhalt(NULL) in a few cases where the
1684 fs pointer was not available. (Most notable, for block
1685 read/write errors.)
1686
1687Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
1688
1689 * ehandler.c:
1690 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
1691
1692Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
1693
1694 * e2fsck.c (show_stats): Show statistics about how many inodes
1695 have indirect, doubly indirect, and triply indirect
1696 blocks. Allow up to 8 digits for statistics, instead of
1697 merely 6, so things look pretty for large filesystems.
1698
1699 * pass1.c (pass1): Keep statistics about indirect, doubly
1700 indirect, and triply indirect blocks.
1701
1702 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
1703 pass 1.
1704
1705Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
1706
1707 * util.c, ehandler.c: Move #include of <sys/resource.h> after
1708 #include of "e2fsck.h", since sys/resource.h may depend on
1709 sys/time.h, which is #included in e2fsck.h.
1710
1711Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
1712
1713 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
1714 function to determine if the device is mounted.
1715
1716 * e2fsck.c (main): Add better error messages if ext2fs_open()
1717 fails.
1718
1719Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
1720
1721 * pass1.c (check_blocks): If we're clearing a directory, clear
1722 pb.is_dir so we don't do the following check of making
1723 sure the directory size matches; this is pointless, since
1724 we've already cleared the inode.
1725
1726Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1727
1728 * pass1.c (bad_primary_block): New function, called by
1729 process_bad_block, which explains the facts of life to the
1730 user when a block in the primary superblock or primary
1731 group descriptors is bad.
1732
1733 * pass2.c (check_dot): Handle the case where the first directory
1734 entry is used, but not ".".
1735
1736 * pass2.c (check_dotdot): Handle the case where the second directory
1737 entry is used, but is not "..".
1738
1739Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1740
1741 * e2fsck.c (check_super_block): Get the size of the physical
1742 device and if it is smaller than the reported size of the
1743 filesystem, report an error.
1744
1745Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
1746
1747 * e2fsck.c (check_if_skip): Print the number of allocated files and
1748 blocks on clean filesystems.
1749
1750Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
1751
1752 * e2fsck.8: Updated date and version number.
1753
1754Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
1755
1756 * pass1.c (check_blocks): Check that directory size matches *exactly*
1757 the count of allocated blocks.
1758
1759Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
1760
1761 * pass1b.c (pass1d): Free the shared[] array when we're done with
1762 it to avoid a memory leak.
1763
1764 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1765 block_dup_map.
1766
1767 * pass2.c (process_bad_inode): When clearing the inode, make sure
1768 the pathname is freed, to prevent a memory leak.
1769
1770 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1771 when we're finished with them.
1772 (check_block_bitmaps): Free free_array when we're finished
1773 with them.
1774
1775 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1776 linking the executable.
1777
1778 * pass2.c (process_bad_inode): Even on OS's that don't support the
1779 fragment fields, make sure the Linux equivalent fields are
1780 set to zero. If an OS wants to reuse these fields, which
1781 is probably a bad idea (although we may get desperate in
1782 the future) this code will have to be changed.
1783
1784 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1785 on the inode field, and then blockcnt field. This is just
1786 to keep the ordering of dir_blocks the same on all
1787 platforms when there are more than on missing directory
1788 blocks, which are indicated directories with holes, which
1789 are indicated with the block number being set to zero.
1790
1791Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1792
1793 * pass1.c (check_blocks, process_block): check_blocks() modified
1794 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1795 the inode is a directory. process_block() now checks to
1796 see if a directory has a "hole", or missing block. If so,
1797 this fact is recorded in the directory block list so that
1798 the problem can be resolved in pass #2.
1799
1800 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1801 allocate new blocks for directories with "holes". Called
1802 out of check_dir_block if a block in the directory block
1803 list is zero.
1804
1805 * pass3.c (get_lost_and_found): Move location of free(block) to
1806 prevent possible memory leak.
1807
1808Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1809
1810 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
1811 instead of alloca() --- alloca is not portable! Check to
1812 make sure the filename is not longer than EXT2_NAME_LEN,
1813 and offer to fix it by truncating it, since it should
1814 never happen.
1815
1816 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
1817 not portable!! In any case putenv() in some systems must
1818 take a static character array or malloc()'ed memory;
1819 passing memory allocated using alloca() to putenv() is not
1820 advisable.
1821
1822 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
1823 alloca() --- alloca() is not portable!!!
1824
1825Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
1826
1827 * pass1b.c (pass1c):
1828 * pass3.c (check_root, get_lost_and_found):
1829 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
1830 to read/write the directory block.
1831
1832Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
1833
1834 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
1835 make sure VMIN and VTIME are set correct.
1836
1837Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
1838
1839 * pass1.c (mark_block_used): Change to be an inline function.
1840 Assume that the block validity checks are already done,
1841 and use the fast variant of the bitmap functions.
1842
1843Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
1844
1845 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
1846 bounds of the bitmaps in advance, and then use the fast
1847 variant of e2fs_test_{block,inode}_bitmap.
1848
1849 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
1850 the bounds checking has already been done earlier.
1851
1852Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
1853
1854 * pass1.c (pass1): Allocate and free the block_illegal_map, which
1855 is used for shortcut processing in process_block.
1856 (mark_table_blocks): Initialize block_illegal_map with the
1857 filesystem blocks.
1858 (describe_illegal_block): New helper function that
1859 describes why a block is illegal.
1860 (process_block): Use block_illegal_map as a shortcut
1861 to determine whether a block is bad. Use
1862 describe_illegal_block to print out why the block is illegal.
1863
1864Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
1865
1866 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
1867
1868 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
1869 <mntent.h> if they don't exist. (Mostly so that "make
1870 depend" works.)
1871
1872 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
1873 it exists).
1874
1875 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
1876 exist.
1877
1878Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1879
1880 * pass2.c (process_bad_inode, check_for_zero_long,
1881 check_for_zero_char): Change long to u32, and char to u8.
1882
1883Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1884
1885 * util.c (inode_has_valid_blocks):
1886 * pass2.c (process_bad_inode):
1887 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
1888 LINUX_S_IS* instead of S_IS*.
1889
1890 * e2fsck.h: Don't #include <sys/stat.h>
1891
1892 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
1893 this program is pretty much useless if BLKFLSBUF isn't
1894 supported.)
1895
1896 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
1897 used.
1898
1899Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
1900
1901 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
1902 to allocate space for file names instead of using fixed size buffers.
1903 (process_bad_inode): Only check inode frag fields if
1904 HAVE_EXT2_FRAGS is defined (by configure).
1905 * pass1.c (pass1): Only check the inode frag fields if
1906 HAVE_EXT2_FRAGS is defined (by configure).
1907
1908 * e2fsck.c (check_mount): Only check for a mounted filesystem if
1909 HAVE_MNTENT_H is defined (by configure).
1910 (PRS): Use alloca to allocate the new path string, instead of
1911 having a fixed size buffer (which was the wrong size anyway).
1912 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
1913 is defined.
1914
1915 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
1916 defined (by configure).
1917
1918 * Makefile.in: Rewritten to conform to GNU coding standards and
1919 support separate compilation directories.
1920
1921Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
1922
1923 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
1924
Theodore Ts'of3db3561997-04-26 13:34:30 +00001925Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
1926
1927 * pass1.c (unwind_pass1): Clear the file type statistics counter
1928 when pass 1 needs to be restarted from scratch.
1929
1930 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
1931 being reallocated to blocks in the next block group,
1932 instead of the current block grup.
1933
1934 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
1935 inode.i_links_count is set.
1936
1937Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
1938
1939 * pass1.c (process_block): Add checks for if the block is
1940 trepassing on a superblock or group descriptor table.
1941
1942Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
1943
1944 * main.c (corrupt_msg): Extend the message which is printed out
1945 when the superblock is corrupt, to include the suggestion
1946 of using the -b option to specify an alternate superblock.
1947
1948Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
1949
1950 * badblocks.c (read_bad_blocks_file): If we are adding or
1951 replacing bad blocks in the bad blocks inode, sanity check
1952 the bad block inode first, and clear out any illegal blocks.
1953
1954 * pass2.c (check_name): Don't bomb out if the attempt to get the
1955 pathname of the containing directory returns an error; the
1956 directory may be too badly damaged to expect that
1957 ext2fs_get_pathname will always succeed. Use "???" if the
1958 pathname can't be obtained (it's only for a printf to the
1959 user anyway).
1960
1961 The name of the containing directory and the bad filename
1962 were incorrectly interchanged in the user message. Fixed.
1963
1964 * pass2.c (check_name, check_dir_block): Use a common static
1965 string for the unknown pathname.
1966
1967Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
1968
1969 * Fixed lots of printf formats to make sure that block and inode
1970 numbers are printed as unsigned integers.
1971
1972Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
1973
1974 * pass5.c (check_block_end): Fix calculation of how the last block
1975 in the block bitmap should be calculated.
1976
1977Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
1978
1979 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1980 be an ext2fs_inode_bitmap, and free it properly.
1981
1982 * e2fsck.h
1983 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1984 level to the superblock.
1985
1986Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
1987
1988 * e2fsck.c (usage): Fixed bogus usage message.
1989
1990Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
1991
1992 * pass1.c (process_bad_block): Fixed bug so that blocks in the
1993 backup superblocks and group descriptors are handled gracefully.
1994