+2000-01-19 Theodore Ts'o <tytso@valinux.com>
+
+ * tune2fs.c (usage): Update the usage message to correctly
+ document the -s option.
+
+2000-01-18 Theodore Ts'o <tytso@valinux.com>
+
+ * badblocks.c: Folded in patches David Beattie <dbeattie@usa.net>.
+ Need to do cleanup before release: use of GCC extensions
+ (dynamic arrays); unclean coding tricks (use of || instead
+ of if statements, etc.). Comments from David Beattie:
+
+ "I added non-destructive write-testing, and quite a few
+ other features. The non-destructive write testing,
+ triggered by new "-n" command-line option, will write test
+ patterns to the disk, but only after reading data off the
+ disk into memory. Then, comparing the test patterns gives
+ a result as to whether or not those sectors are reliable.
+ Finally, the original data is written back.
+
+ To streamline this operation, I added another option, "-c
+ blocks_at_once", which will give the number of disk blocks
+ to process at one time (mnemonic--"count"). I made this
+ default to 16 (as in the read-only testing mode), and also
+ affect the read-only testing mode. Of course, read-only
+ mode needs (count * block_size) amount of memory, and
+ non-destructive read-write needs 3 times that much, so it
+ makes sense to do the calculations and not overrun
+ available RAM...I would have liked to implement and
+ auto-memory-usage heuristic, but I have no idea if it's
+ even possible to determine the amount of free memory on a
+ Unix system except by reading /proc entries, and that
+ didn't seem portable. I did NOT make this blocks_at_once
+ affect the behavior of the test_rw routine, as it is
+ processing the whole disk at once, anyway.
+
+ I *think* that I got higher detection rates on my hard
+ drive using random test data than patterned test data, so
+ my non-destructive mode initializes its test data buffer
+ randomly.
+
+ I fixed a typo in flush_bufs that caused the ioctl
+ BLKFLSBUF to never get compiled into the program.
+
+ Also, I added an "undocumented" (I didn't put it into the
+ usage message; you can if you think it's useful) "-h"
+ option to specify the host device to flush--useful if you
+ want to test out my "non-destructive" code on something
+ other than a hard drive, such as a file on a hard drive,
+ and want the host hard drive to flush.
+
+ I provided support for an "input" file (via option "-i",
+ similar to the "-o" option)...containing a list of
+ already-known bad blocks; it will skip testing those
+ blocks, thus adding speed to the bad block scan (on my
+ computer, hitting a physically bad block causes a
+ half-second-or-more freeze as the kernel waits for the
+ hard drive to give up and reset itself; pretty annoying
+ when you already know the block is bad from a previous
+ scan).
+
+ Finally, the real killer, the persistent re-scan (option:
+ "-p num_passes") that I created will, if desired,
+ persistently re-scan the drive until it has completed a
+ user-decidable number of passes in a row during which no
+ new bad blocks are found. On my drive, I would see
+ behavior that a certain percentage of bad blocks would be
+ found with each pass (it was not reliable in the defective
+ areas!), so I wanted it to check it over and over again
+ until it didn't find any more, several times. Perhaps
+ this will be useful to others. Defaults of course to
+ zero, meaning it will stop after the first pass. I used
+ "-p 2" on my drive, and it ran for 2 1/2 days...then used
+ "-p 3" a couple days later and it ran for a few more
+ hours, and since then the rest of my drive has been
+ completely reliable.
+
+ Implementation of these last two features, "-i" and "-p",
+ I did using a bb_list from libext2fs. I debated whether
+ bad blocks input through "-i" should be output into the
+ "-o" file (or stdout, of course), and decided against it,
+ but left the code to do so in place, commented out, just
+ for your information.
+
+ In order to maintain data integrity upon interruption of a
+ non-destructive-write test, I created a signal handler
+ which I install which will write back whatever original
+ disk data is in the buffers upon any of the fatal signals
+ (except SIGKILL, of course).
+
+ Of course, ideally, the new options would be reflected in
+ the badblocks manual page, but I am not experienced at
+ manual page modification; if you decide my patch to
+ badblocks should be incorporated into the distribution, I
+ could learn how to update the manpage and other
+ documentation, or you could do it for me after exercising
+ your opinions, if you have any, on exactly what the
+ command-line parameters should be called and which ones
+ should be in the distribution."
+
+2000-01-07 Theodore Ts'o <tytso@valinux.com>
+
+ * Really fix the bug where "fsck -As" will actually allow
+ interactive fsck's. (For those people who like to do
+ interactive fsck's in the /etc/rc scripts!?!)
+
+1999-11-23 <tytso@valinux.com>
+
+ * tune2fs.8.in: Fix man page so that the sparse_super filesystem
+ option is properly named.
+
+1999-11-22 <tytso@valinux.com>
+
+ * mke2fs.c: Change log2() and log10() to int_log2() and
+ int_log10() to avoid namespace collisions. Change #ifdef
+ sparc to #ifdef __sparc__.
+
+1999-11-19 <tytso@valinux.com>
+
+ * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
+ the source directory.
+
+1999-11-10 <tytso@valinux.com>
+
+ * Release of E2fsprogs 1.18
+
+1999-11-10 <tytso@valinux.com>
+
+ * mke2fs.8.in: Update manual page so that the sparse_option
+ filesystem option is properly named.
+
+1999-11-04 <tytso@valinux.com>
+
+ * fsck.c (main): Move setting of the interactive flag to before
+ the call to check_all(), so that people who try to use
+ fsck -As can do so interactively.
+
+1999-10-26 <tytso@valinux.com>
+
+ * Release of E2fsprogs 1.17
+
+1999-10-26 <tytso@valinux.com>
+
+ * fsck.c (PRS, device_already_active): Add debugging hook; if the
+ environment variable FSCK_FORCE_ALL_PARALLEL is set, then
+ force all fsck runs to happen in parallel.
+
+ * get_device_by_label.c (has_right_label): Fixed bug where code
+ used a strncmp to compare a binary UUID value which may
+ contain a NULL. Fixed GCC warnings; added const to char *
+ typed variables. Eliminated non-portable use of u_char.
+
+ * mke2fs.c (PRS): Fix gcc warnings; add const to some char *
+ variables, including in struct mke2fs_defaults.
+ (set_fs_defaults): Changed parameter name to avoid
+ gcc warnings.
+
+ * fsck.c (wait_one): Fix gcc warnings; add #include for ctype.h,
+ add const to char * variables, and use NOARGS to declare
+ functions that take no arguments. Also fix a memory leak
+ in execute() where we weren't freeing argv[] after forking
+ the child process.
+
+ * chattr.c: Add hack to compile in a definition for S_ISLNK so we
+ can successfully compile even with warnings turned on.
+
+1999-10-25 <tytso@valinux.com>
+
+ * mke2fs.c (show_stats): Capitalized Hurd to make the GNU types
+ happy.
+ (PRS): Use __u64 instead of long long for portability
+ reasons. Also moved #include of sys/stat.h inside #ifdef
+ HAVE_LINUX_MAJOR_H for portability reasons.
+
+ * fsck.c (execute): Fix really stupid bug in the linked list
+ management which caused fsck in parallel mode to go into
+ an infinite loop.
+
+1999-10-22 <tytso@valinux.com>
+
+ * Release of E2fsprogs 1.16
+
+1999-10-22 <tytso@valinux.com>
+
+ * tune2fs.c (main): Add a new option -O which allows the user to
+ set and clear certain "safe" filsystem feature flags.
+ Currently, the only ones which are supported for
+ modification are sparse_superblock and filetype.
+
+ * mke2fs.c (PRS): Add new option -O which allows the user to
+ request filesystems with specific filesystem options. By
+ default on 2.2 and later systems, create filesystems that
+ have both file type information and sparse superblocks.
+
+1999-10-21 <tytso@valinux.com>
+
+ * badblocks.8.in, chattr.1.in, dumpe2fs.8.in, e2label.8.in,
+ fsck.8.in, lsattr.1.in, mke2fs.8.in, mklost+found.8.in,
+ tune2fs.8.in, uuidgen.1.in: Update man page to use a more standard
+ format (bold option flags and italicized variables), as
+ suggested by Andreas Dilger (adilger@enel.ucalgary.ca)
+
+1999-10-14 <tytso@valinux.com>
+
+ * tune2fs.c (main): Fix typo (double spaces) in messages regarding
+ changing the sparse superblock option
+
+ * fsck.c (wait_one): If the fsck process just started, wait a
+ second before sending a SIGUSR1, to give it a chance
+ to set the signal handler; otherwise, fsck will die on an
+ unhandled SIGUSR1.
+
+1999-09-15 <tytso@valinux.com>
+
+ * mke2fs.c (show_stats): Fix display bug when printing out the
+ number of superblocks. Suggested by Yann Dirson.
+
+1999-09-08 <tytso@valinux.com>
+
+ * partinfo.c: Fix minor compilation bugs pointed out by Yann
+ Dirson.
+
+ * mke2fs.c: Don't turn on sparse superblocks by default on pre-2.2
+ kernels.
+
+ * mke2fs.8.in: Add the possible valid block sizes for mke2fs.
+ Document the -n flag, and the new defaults for the -s
+ flag.
+
+ * dumpe2fs.c, dumpe2fs.8.in: Add new options -f (force) and -h
+ (header-only).
+
+1999-08-13 <tytso@valinux.com>
+
+ * mke2fs.c (PRS): Fix logic for turning on/off the sparse
+ superblock option.
+
+1999-07-18 Theodore Ts'o <tytso@valinux.com>
+
+ * Release of E2fsprogs 1.15
+
+1999-07-18 <tytso@rsts-11.mit.edu>
+
+ * mke2fs.c (PRS, set_fs_defaults): Add new option -T which allows
+ the user to specify the how the filesystem is to be used.
+ Mke2fs now chooses the filesystem parameters automatically
+ based on the size of the filesystem and the intended use
+ of the filesystem. Add new option -n which simply goes
+ through the calculations to determine the parameters of
+ the filesystem the system would make.
+
+1999-07-18 <tytso@valinux.com>
+
+ * fsck.c, fsck.h: Add support for new option -C. This option will
+ automatically manage e2fsck processes so that they will
+ print completion/progress bars. If multiple filesystems
+ are being checked, arrange to make sure that only one
+ e2fsck process is displaying a progress bar at a time.
+
+1999-07-08 <tytso@valinux.com>
+
+ * badblocks.c (do_test): Don't complain if the write error occurs
+ on a non-block boundary. This is perfectly common when
+ using blocksizes larger than 1k.
+
+1999-07-03 <tytso@valinux.com>
+
+ * uuidgen.c: Add option parsing so that user can ask for either a
+ time-based UUID or a random-based UUID.
+
+1999-07-02 <tytso@valinux.com>
+
+ * fsck.c: Added support for LABEL= and UUID= specifications for
+ the filesystem's device, to match what recent mount
+ programs can support. Also, close stdin when doing fsck
+ -A or when checking more than one filesystem at a time, so
+ that e2fsck doesn't try to ask interactive questions if
+ the filesystem appears to be mounted.
+
+ * get_device_by_label.c: New file added to support LABEL=foo and
+ UUID=bar type specifications.
+
1999-07-01 <tytso@valinux.com>
* badblocks.c: Make the "done" string include enough spaces to