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