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