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