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