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