Whamcloud - gitweb
ChangeLog, ext2fs.h:
[tools/e2fsprogs.git] / lib / ext2fs / ChangeLog
index 5fd3bfe..58a1333 100644 (file)
+2000-05-18  Theodore Ts'o  <tytso@valinux.com>
+
+       * ext2fs.h: Add appropriate ifdef's to support C++ compilation.
+
+2000-04-03  Theodore Ts'o  <tytso@valinux.com>
+
+       * block.c: Readibility tweak in conditionals involving
+               ctx->fs->flags.
+
+       * ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine
+               how to define __s64 and __u64.  Turn off "compression is
+               experimental" warning if the cpp macro
+               I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is defined.
+
+2000-02-11    <tytso@snap.thunk.org>
+
+       * ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR.
+               Conditionally include Compression as a supported type if
+               ENABLE_COMPRESSION (via --enable-compression) is turned on.
+
+       * swapfs.c (ext2fs_swap_super): Swap the compression usage bitmap.
+
+2000-02-08    <tytso@snap.thunk.org>
+
+       * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap,
+               ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
+               ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap):
+               Change to return the previous state of the bit that is
+               being marked or unmarked.  For speed optimization.
+       
+2000-02-02  Theodore Ts'o  <tytso@valinux.com>
+
+       * getsize.c, ismounted.c: Remove unneeded include of linux/fs.h
+
+       * swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not
+               needed any more; we know it will always be i_generation.
+               Add support for swapping the high bits of the uid and gid.
+
+1999-11-19    <tytso@valinux.com>
+
+       * mkdir.c (ext2fs_mkdir): Only update the parent's inode link
+               counts if the link was successful.  Patch suggested by
+               jeremy@goop.org.
+
+       * 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-08    <tytso@valinux.com>
+
+       * Makefile.in (tst_badblocks): Add freefs.o to the object list,
+               since ext2fs_badblocks_list_free was moved to freefs.c.
+
+       * tst_badblocks.c: Use the newer badblocks API names.  Add
+               duplicate blocks to the test inputs to test dealing with
+               adding blocks which are already in the badblocks list.
+
+       * badblocks.c (ext2fs_badblocks_list_add): If appending to the end
+               of the list, use a shortcut O(1) operations instead of an
+               O(n) operation.  (Idea suggested by David Beattie.)
+
+       * freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead
+               of badblocks_list_free(), to save a procedure call.
+
+1999-10-26    <tytso@valinux.com>
+
+       * Release of E2fsprogs 1.17
+
+1999-10-26    <tytso@valinux.com>
+
+       * ext2fs.h: Add kludge to deal with the fact that egcs cpp doesn't
+               seem to handle ~0UL the same way as they used to.
+
+1999-10-25    <tytso@valinux.com>
+
+       * nt_io.c (_OpenNtName): Open the device using
+               FILE_SYNCHRONOUS_IO_NONALERT instead of
+               FILE_SYNCHRONOUS_IO_ALERT
+               (nt_open): At the end of the device open routine, unlock 
+               the drive but do not dismount it.
+
+       * initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to
+               detect the Hurd OS.
+
+1999-10-22    <tytso@valinux.com>
+
+       * Release of E2fsprogs 1.16
+
+1999-10-22    <tytso@valinux.com>
+
+       * mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link().
+
+       * link.c (ext2fs_link): This call now uses the low three bits of
+               the flags parameter to pass the directory filetype
+               information; it will set the directory entry FILETYPE
+               information if the filesystem supports it.
+
+       * newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock
+               option is set, then create the '.' and '..' entries with
+               the filetype set to EXT2_FT_DIR.
+
+1999-09-24    <tytso@valinux.com>
+
+       * nt_io.c: New file which supports I/O under Windows NT.
+
+1999-09-07    <tytso@valinux.com>
+
+       * ext2fs.h: Add new fields for journalling and define new
+               feature bits used by newer filesystems: IMAGIC_INODES,
+               HAS_JOURNAL, RECOVER.
+
+       * expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where
+               we update the inode block count and size files so that the
+               block count field is updated correctly when we create an
+               indirect block.
+
+1999-07-18  Theodore Ts'o  <tytso@valinux.com>
+
+       * Release of E2fsprogs 1.15
+
+1999-06-23    <tytso@valinux.com>
+
+       * swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3
+               kernels that use i_generation instead of i_version.  Patch
+               supplied by Jon Bright <sircus@sircus.demon.co.uk>.
+
+1999-06-21    <tytso@valinux.com>
+
+       * dir_iterate.c (ext2fs_process_dir_block): Check for corrupted
+               directory entry before calling the callback function.
+               This should prevent some core dumps of insufficiently
+               paranoid callback functions.
+
+1999-05-29    <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h: Add feature definition for AFS IMAGIC inodes.
+
+       * fileio.c (ext2fs_file_open): Remove obsolete comment stating
+               that we don't handle writing yet (we do).  Fixed bug where
+               we weren't allocating a big enough buffer for ext2_bmap.
+
+1999-05-03    <tytso@rsts-11.mit.edu>
+
+       * openfs.c (ext2fs_open): Check to make sure that the number of
+               blocks per group is not zero --- if so, it must be a bad
+               superblock!
+
+1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs 1.14
+
+1999-01-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if
+               the inode number is zero; if it's zero, return
+               EXT2_ET_BAD_INODE_NUM.
+
+1998-12-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Use EXT2_FIRST_INODE instead
+               of EXT2_FIRST_INO to ensure compatibility with Linux 1.2
+               header files.
+
+Mon Jan  4 02:32:09 1999  Theodore Y. Ts'o  <tytso@mit.edu>
+
+       * llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the
+               non-Linux case to use EINVAL by default, unless it isn't
+               defined, in which case we use EXT2_ET_INVALID_ARGUMENT
+               instead.
+
+1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs 1.13
+
+1998-12-03  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Makefile.in: Updated dependencies.
+
+1998-09-22  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Make sure that we allocate
+               enough inodes so that we can make a valid filesystem.
+
+1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * rw_bitmaps.c: Fixed signed/unsigned warnings.
+
+       * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the
+               function declaration.
+
+       * dblist.c (make_dblist): Add safety check in case the dblist
+               pointer passed in is null (in which case, assign it to
+               fs->dblist).  Fixed some signed/unsigned warnings.
+
+       * bmap.c: Make addr_per_block be of type blk_t to avoid
+               signed/unsigned warnings.
+
+       * namei.c (ext2fs_follow_link): Remove uneeded extern from the
+               function declaration.
+
+       * get_pathname.c (get_pathname_proc): Use return value from
+               ext2fs_get_mem, instead of checking if &gp->name is
+               NULL.
+
+       * dir_iterate.c (ext2fs_process_dir_block): 
+       * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern
+               from the function declaration.
+
+       * block.c (ext2fs_block_iterate2): If the read_inode call fails,
+               return the error directly instead of jumping to the
+               cleanup routine, since we don't need to do any cleanup.
+
+       * alloc_table.c (ext2fs_allocate_group_table): Make this
+               function take a dgrp_t for its group argument.
+
+       * ext2fs.h: Make dgrp_t an __u32 type, and make
+               fs->desc_group_count be of type dgrp_t.
+
+1998-07-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment
+               than 10 blocks when we need to expand the size of the
+               badblocks list.
+
+1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs 1.12
+
+1998-06-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * closefs.c (ext2fs_flush): Update the s_block_group_nr field as
+               appropriate for all of the block group copies, so that
+               it's clear where the beginning of the filesystem is on the
+               disk.  (For when the partition table gets scrod.)
+
+       * ext2fs.h: Change the name of the feature from
+               EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to
+               EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel).
+
+1998-06-18  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (get_next_blockgroup): Fix bug where if
+               get_next_blockgroup() is called early because of a missing
+               inode table in a block group, the current_inode counter
+               wasn't incremented correctly.
+
+1998-06-16  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * read_bb.c (ext2fs_read_bb_inode): Make function more robust
+               against a completely trashed bad block inode.
+
+1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
+               the stride length hits a bad value, we retry the block
+               allocation starting at the beginning of the block group.
+
+       * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
+               expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
+               e2_blkcnt_t to avoid collision with LFS API.
+
+1998-05-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
+               way that avoids overflows on disk sizes greater than 4GB.
+
+1998-04-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the
+               return type for comparison functions for qsort.
+
+       * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function
+               declaration.
+
+1998-04-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do
+               inline functions.
+
+       * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to
+               evade a potential problem with glibc's header files trying
+               to spike out linux/types.h.
+
+       * ext2fs.h (ext2fs_resize_mem): Change the function prototype to
+               include the old size of the memory, which is needed for
+               some braindamaged memory allocation systems that don't
+               support realloc().
+
+       * badblocks.c (ext2fs_badblocks_list_add):
+         bb_inode.c (clear_bad_block_proc):
+         dblist.c (ext2fs_add_dir_block):
+         icount.c (insert_icount_el):
+         irel_ma.c (ima_put):
+         rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to
+                 pass the old size of the memory to be resized to
+                 ext2fs_resize_mem(). 
+
+1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Makefile.in: Change to use new installation directory variables
+               convention.  Fix uninstall rules to take $(DESTDIR) into
+               account.
+
+1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform
+               with 32 bit longs, then we need to manually define __s64
+               and __u64, since the current kernel header files don't
+               define these if __STRICT_ANSI__ is defined.  This is a
+               problem if we are compiling with full GCC warnings, since
+               we do need 64 bit support.
+       
+       * Makefile.in (OBJS): Remove bmove.o from files to be built,
+               since we're not using ext2fs_move_blocks() and there
+               is some question as to its usefulness in its current
+               form.
+
+       * bmap.c (block_bmap): Remove unused function.
+
+       * bmove.c (process_block): Fix -Wall warning.
+
+1998-03-23  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * block.c (ext2fs_block_iterate3): Make the ref_offset field
+               contain the offset into the inode.i_blocks array when
+               ref_block is zero.  Since we haven't done a formal
+               release of e2fsprogs since block_iterate2 was first
+               introduced, I removed block_iterate2, and renamed
+               block_iterate3 to be block_iterate2.
+
+       * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c,
+               expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change
+               use of block_iterate and block_iterate2 to
+               block_iterate2 with the new prototype for the
+               interator function.  (using blkcnt_t forr blockcount)
+
+1998-03-21  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap, 
+               s_prealloc_blocks, s_prealloc_dir_blocks).  Added
+               conditional defines of new features COMPAT_DIR_PREALLOC,
+               RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR,
+               INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE.  Changed
+               the library to declare that we support COMPAT_DIR_PREALLOC, 
+               INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE.
+
+       * fileio.c: Rename function ext2fs_file_llseek to be
+               ext2fs_file_lseek, which is more accurate.
+
+       * block.c: Add new function ext2fs_block_iterate3 which calls
+               the iterator function with the blockcount argument of
+               type blkcnt_t.  This version of the function is
+               allowed to handle large files; the other fucntions are
+               not.
+
+       * ext2fs.h: Add new type blkcnt_t
+
+       * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG
+
+       * block.c (ext2fs_block_iterate2): Fix bug where the block count
+               field wasn't getting correctly incremented for sparse
+               files when the indirect or doubly-indirect block
+               specified in the inode was zero.
+
+Sun Mar  8 22:42:47 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * unlink.c (unlink_proc): 
+       * lookup.c (lookup_proc): 
+       * link.c (link_proc): 
+       * get_pathname.c (get_pathname_proc): 
+       * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits
+               from dirent->name_len, so it can be used for other
+               purposes.
+
+       * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE,
+               and indicate that we have support for this incompatible
+               option.
+
+Mon Feb 23 08:46:33 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED.
+
+Fri Feb 20 23:58:01 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the
+               number of directories when the block group information is
+               unreliable.
+
+1998-02-20  Theodore Y. Ts'o  <tytso@edt.mit.edu>
+
+       * inode.c (ext2fs_get_next_inode): Always do the check to see if the
+               inode table is missing so that we catch the case where the
+               first block group is missing.
+
+       * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's
+               needed.
+
+Mon Feb 16 16:16:00 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2_io.h, ext2fs.h: Protect against being included multiple times.
+
+       * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
+
+       * test_io.c (test_flush): Add a debugging printf when the flush
+               method is called.
+
+       * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already
+               read in, return right away.
+
+Sun Feb  1 08:20:24 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * bitops.h: Don't try to do i386 inline asm functions if the
+               compiler isn't GCC.
+
+       * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
+               instead of linux/types.h, and e2_bitops.h instead of
+               ext2fs/bitops.h.
+
+       * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't
+               necessary. 
+
+Sat Jan 17 13:13:31 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_open_inode_scan): Initialize the group variables
+               so that we don't need to call get_next_blockgroup() the
+               first time around.  Saves a bit of time, and prevents us
+               from needing to assign -1 to current_group (which is an
+               unsigned value).
+
+       * icount.c (insert_icount_el): Cast the estimated number of inodes
+               from a float to an ino_t.
+
+       * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
+               bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
+               check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
+               dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
+               expanddir.c, ext2fs.h, fileio.c, freefs.c,
+               get_pathname.c, getsize.c, icount.c, initialize.c,
+               inline.c, inode.c, irel_ma.c, ismounted.c, link.c,
+               lookup.c, mkdir.c, namei.c, native.c, newdir.c,
+               openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
+               rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
+               tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c,
+               valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is
+               defined, then assume all of the
+               ext2-specific header files are in a flat directory.
+
+       * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
+               all assignments from void * to be compatible with C++.
+
+Tue Jan  6 11:28:15 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
+               make sure the contents of the disk are flushed to disk.
+
+Mon Dec 29 14:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
+               avoid C++ namespace clash.
+
+       * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
+               avoid C++ namespace clash.
+
+       * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
+               irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
+               ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
+               unlink.c: Change private to be priv_data (to avoid C++
+               namespace clash)
+
+Fri Nov 28 09:26:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more
+               paranoid about validating the directory counts from the
+               block group information.
+
+       * all files: Don't include stdlib.h anymore; include it in
+               ext2_fs.h, since that file requires stdlib.h
+
+Thu Nov 20 16:07:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * expanddir.c (ext2fs_expand_dir): Check to make sure the block
+               bitmap is loaded, and return an error if it is not.
+               (expand_dir_proc): Only use ext2fs_write_dir_block when
+               writing a directory block, not when writing out a fresh
+               indirect block.
+
+Tue Nov 11 22:46:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Makefile.in, tst_getsize.c: Added new file which is used to test
+               the ext2fs_get_device_size function.
+
+       * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
+
+Sun Nov  2 20:36:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
+
+       * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
+               ext2fs_file_get_fs): New functions added.
+
+
+Fri Oct 31 12:16:52 1997    <tytso@EDT.MIT.EDU>
+
+       * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
+               com_err if OMIT_COM_ERR is defined.
+
+Thu Oct 30 11:33:57 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Rename new error codes to _ET_ in them for consistency.
+
+Sat Oct 25 00:06:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * [all files, basically]: Added definition of ext2fs_get_mem, 
+               ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and
+               changed all library routines to use these wrapper functions.
+
+       * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND
+               instead of the system error messages.
+       
+       * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
+               EXT2_DB_NOT_FOUND
+
+       * ext2fs.h: Added function declarations and constants for bmap.c
+               and fileio.c.
+
+       * ext2_err.et.in: Added new error messages EXT2_FILE_RO and
+               EXT2_ET_MAGIC_EXT2_FILE
+
+       * Makefile.in: Added files bmap.c and fileio.c, and temporarily
+               commented out brel_ma.c and irel_ma.c
+
+       * bmap.c: New file which maps a file's logical block number to its
+               physical block number.
+
+       * fileio.c: New file which implements simple file reading and
+               writing primitives.
+
+       * alloc.c (ext2fs_alloc_block): New function which allocates a
+               block, zeros it, and updates the filesystem accounting
+               records appropriately.
+
+Wed Oct 22 16:47:27 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
+               EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL,
+               EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY
+
+       * Change various library files to use these functions instead of
+               EINVAL, ENOENT, etc.
+
+Mon Oct 20 19:32:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we
+               need to declare llseek().
+
+Sun Oct 19 18:56:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Rename io.h to be ext2_io.h (avoid namespace collisions)
+
+       * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H
+
+Fri Oct  3 13:35:59 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
+
+       * icount.c (ext2fs_icount_validate): 
+       * bmove.c (process_block): Fix lint error in type for fprintf().
+
+Mon Sep 15 11:45:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_check_directory): Add support for the callback
+               to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
+
+Thu Sep  4 12:28:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the
+               padding of the bitmap to be all one's.
+
+Wed Sep  3 14:27:30 1997  Theodore Y. Ts'o  <tytso@edt.mit.edu>
+
+       * llseek.c: Added missing semicolon to glibc fixup declaration of
+       llseek().
+
+       * bmove.c: Add #include of errno.h
+
+Sat Aug 23 22:47:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've
+               added a new field to the io_channel (app_data).
+
+       * io.h: Add a new element to the io_channel structure, app_data.
+
+       * initialize.c, openfs.c: Set io->app_data to point at the
+               filesystem handle.
+
+Thu Aug 14 08:14:17 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * io.h: Change the prototype of ext2fs_llseek() to use int's
+               instead of unsigned int's.
+
+       * llseek.c: Change to allow PIC and !HAVE_LLSEEK.  Add a prototype
+               to make life easer for GNU Libc 2.
+
+       * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
+               filesystem has its bitmaps stored as 32-bit words with bit
+               0 as the LSB of each word.  Thus a bitmap with only bit 0
+               set would be, as a string of bytes, 00 00 00 01 00 ...  To
+               cope with this, we byte-reverse each word of a bitmap if
+               we have a big-endian filesystem, that is, if we are *not*
+               byte-swapping other word-sized numbers.
+
+Mon Aug 11 03:30:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dosio.c: New file to do DOS/BIOS disk accesses.
+
+       * namei.c (open_namei): Make pathlen be of type size_t.
+
+       * llseek.c: Always #include stdlib.h since it's need to define
+               size_t.  
+
+       * io.h: Use errcode_t for magic numbers.
+
+       * icount.c (get_icount_el): Use size_t where appropriate
+       
+       * dupfs.c (ext2fs_dup_handle): 
+       * dblist.c (dir_block_cmp): Use size_t where appropriate.
+
+       * read_bb.c (ext2fs_read_bb_inode): 
+       * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t
+               and size_t where appropriate.
+
+       * closefs.c (ext2fs_flush): Use dgrp_t instead of int where
+               appropriate.
+
+       * openfs.c (ext2fs_open): 
+       * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where
+               appropriate.
+
+       * rw_bitmaps.c (read_bitmaps): 
+       * irel_ma.c: 
+       * inode.c (ext2fs_write_inode): 
+       * initialize.c (ext2fs_initialize):
+       * brel_ma.c: Fix to make be 16-bit safe.
+
+       * link.c (ext2fs_link): 
+       * unlink.c (ext2fs_unlink):
+       * lookup.c (lookup_proc): 
+       * ismounted.c (ext2fs_check_if_mounted): 
+       * block.c (xlate_func): Add #pragma argsused for Turbo C.
+
+Sun Aug 10 10:05:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t
+               type.
+
+       * bitmaps.c (make_bitmap): Use size_t instead of int where
+               appropriate.
+
+       * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
+
+       * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the
+               group number.
+
+       * get_pathname.c: Use ino_t instead of int where appropriate.
+
+       * ext2fs.h: Make the magic structure element be errcode_t instead
+               of int.
+
+       * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
+               bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
+               cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c
+               dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c
+               icount.c initialize.c inline.c inode.c irel_ma.c link.c
+               llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c
+               read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c 
+               test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c
+               valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H
+
+Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
+               is zero, then return EXT2_IO_LLSEEK_FAILED.
+
+       * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
+
+       * Release of E2fsprogs 1.11
+
+Mon Jun 16 23:53:06 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dblist.c (ext2fs_dblist_count): Added new function which returns
+               the number of directory blocks in dblist.
+
+Sat Jun 14 01:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * unix_io.c (unix_flush): Make the io_channel flush function do a
+               fsync to flush the kernel buffers to disk.
+
+Wed Jun 11 18:25:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
+               current inode number wasn't being set by the
+               goto_blockgroup function.
+
+Mon Jun  9 10:45:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
+               of blocks which need to be moved, and moves those blocks
+               to another location in the filesystem.
+
+       * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
+               bitmap, make sure all of the new parts of the bitmap are
+               zero. 
+
+Sun Jun  8 16:24:39 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
+               wasn't being returned to the caller.
+
+       * alloc_tables.c (ext2fs_allocate_group_table): Add new function
+               ext2fs_allocate_group_table() which sets the group tables
+               for a particular block group.  The relevant code was
+               factored out of ext2fs_allocate_tables().
+
+       * dblist.c (make_dblist): Adjust the initial size of the directory
+               block list to be a bit more realistic (ten plus twice the
+               number of directories in the filesystem).
+
+Thu May  8 22:19:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
+               ext2fs_badblocks_list_test would test the list (and exceed
+               array boundaries) if there were no bad blocks on the bad
+               blocks list.  (Showed up when user tried: mke2fs -c -b 4096).
+
+Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
+
+       * Release of E2fsprogs version 1.10
+
+Thu Apr 24 10:13:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
+
+       * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
+               inode and block bitmaps based on the RAID 0 stride
+               parameter (which is passed by mke2fs).
+
+       * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
+               mke2fs to communicate the stride length to
+               ext2fs_allocate_tables()
+
+Wed Apr 23 21:50:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
+               systems.  (We can't assume that the new filesystem types
+               are supported.)
+
+Wed Apr 23 18:40:53 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
+               allocate the inode and block bitmaps inside block group at
+               all times.
+
+Mon Apr 21 00:06:28 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
+               filesystem has no free blocks, ext2fs_new_block would loop
+               forever.
+
+       * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
+
+       * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
+               free if refcount goes to zero.
+
+       * inode.c (create_icache): Initialize refcount to 1.
+
+       * ext2fsP.h: Added refcount to ext2_inode_cache
+
+       * dblist.c (ext2fs_copy_dblist): New function to copy a directory
+               block list.
+
+       * badblocks.c (ext2fs_badblocks_copy): New function to copy a
+               badblocks structure.
+
+Sun Apr 20 23:19:51 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
+
+       * unix_io.c, test_io.c (unix_open, test_open): Initialize the
+               refcount to 1.
+               (unix_close, test_close): Decrement the refcount and only
+               close the io_channel if the refcount goes to 0.
+
+       * io.h: Add refcount to the io_channel structure.  Add new macro
+               interface io_channel_bumpcount() to bump the refcount.
+
+Thu Apr 17 20:25:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
+               cache in the filesystem handle, instead of the inode cache
+               in a static variable.
+
+       * freefs.c: Added static function to free the inode cache (called by
+               ext2fs_free). 
+
+       * ext2fsP.h: Added definition of the ext2_inode_cache structures.
+
+       * ext2fs.h: Added pointer to the inode_cache structure.
+
+       * block.c (block_iterate_ind, block_iterate_dind, 
+               block_iterate_tind): If there are holes in the indirect,
+               doubly indirect, or triply indirect blocks, increment the
+               block count field automatically.
+
+Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs version 1.09
+
+Mon Apr 14 20:38:56 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * version.c (ext2fs_parse_version_string): Check the passed in
+               version string (instead of the hard-coded one).
+
+       * alloc_tables.c (ext2fs_allocate_tables): If the last block is
+               greater filesystem size, clamp it to prevent allocating a
+               block or inode bitmap beyond the filesystem.
+
+       * initialize.c (ext2fs_initialize): Fix bug where the metatdata
+               overhead calculation was accidentally removed.
+
+Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs version 1.08
+
+Thu Apr 10 13:15:15 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dblist.c (ext2fs_set_dir_block): New function which sets the
+               block of a dblist entry, given the directory inode and
+               blockcnt.
+
+Sat Apr  5 12:42:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
+               inode bitmaps at staggered locations across the block
+               groups, to avoid concentrating the bitmaps on a small
+               number of disks when using striped RAID arrays.
+
+       * initialize.c (ext2fs_initialize): By default, choose the maximum
+               possible number of blocks per group (based on the size of
+               the bitmaps in the blocksize).
+
+Fri Apr  4 11:28:16 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Add support for
+               EXT2_COMPAT_SPARSE_SUPER feature.
+
+       * closefs.c (ext2fs_bg_has_super): New function to determine
+               whether or a particular block group should have a
+               superblock and block group descriptor.  Used for the
+               EXT2_COMPAT_SPARSE_SUPER feature is turned on.
+               (ext2fs_flush):  Check ext2fs_bg_has_super to see whether
+               or not the superblock should be written out for the block
+               group. 
+
+       * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
+               for sparse duplicate superblocks.
+
+       * version.c (ext2fs_get_library_version): New function which
+               returns the library version.
+
+       * version.c (ext2fs_parse_version_string): New function which
+               parses a version string and returns a version number,
+               so application programs can compare version numbers as
+               integers.
+
+Wed Mar 26 00:43:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * icount.c (ext2fs_create_icount): Change function so that it also
+               takes a new argument which contains a "hint" icount
+               structure.  This "hint" icount allows the create function
+               to set up the sorted list in advance.  This reduces
+               significantly the amount of data moving needed to insert
+               these inodes into the list later.
+       
+       * icount.c (ext2fs_icount_validate): New function which validates
+               that the icount structure's rep invariant.
+
+       * icount.c (get_icount_el): Completely revamped implementation
+               to subsume put_icount_el().  Put_icount_el() used to
+               use an O(N) implementation to insert in the middle
+               of the icount list.  It now uses a O(ln N) to search
+               for where the icount should be inserted, and then uses
+               a memcpy to move the list down (instead of a for loop).
+       
+       * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
+               ext2fs_icount_increment, ext2fs_icount_decrement): Check
+               to see if the inode is within bounds; if it isn't, return
+               EINVAL.
+
+       * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
+               when a bad inode number is passed to test_generic_bitmap
+               to be EXT2FS_TEST_ERROR instead of the wrong
+               EXT2FS_UNMARK_ERROR.
+
+Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
+
+       * Release of E2fsprogs version 1.07
+
+Sun Mar  2 16:46:18 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Makefile.in (ELF_VERSION): Change version to be 2.2
+
+Tue Feb 11 14:54:02 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * alloc.c (ext2fs_get_free_blocks): Change routine to use
+               ext2fs_fast_test_block_bitmap_range().
+
+       * bitops.h (ext2fs_fast_test_block_bitmap_range,
+               ext2fs_test_block_bitmap_range: New inline functions which
+               test to see whether a contiguous range of blocks is
+               available.
+
+Thu Feb  6 10:00:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
+               use ext2fs_badblocks_* instead of badblocks_*
+
+       * bb_compat.c: New file which translates between old badblocks_*()
+               names to ext2fs_badblocks_*()
+
+       * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
+               link.c (since e2fsck doesn't use ext2fs_unlink()).
+
+       * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
+               bitmap resizing routine moved from bitmaps.c, since e2fsck
+               doesn't need to use this function.
+
+       * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
+               since e2fsck only needs ext2fs_lookup.
+
+Mon Feb  3 10:11:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
+               already set; this is needed so that programs like dump
+               which use the inode scan functions will deal with
+               filesystems that have bad blocks in the inode table.
+
+Sun Feb  2 00:17:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate): 
+               Moved to ext2fsP.h, since it doesn't need to be part of
+               the public interface.
+
+       * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
+
+Sat Feb  1 10:14:55 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dblist.c (ext2fs_get_num_dirs): New file, which implements a
+               directory block list abstraction.  (Code moved from
+               e2fsck).
+
+       * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
+               to inode.c (since no one else should be peeking inside it!)
+
+       * valid_blk.c (ext2_inode_has_valid_blocks): New function.
+
+       * openfs.c (ext2fs_open): Check the feature set in the ext2
+               superblock, and refuse to open filesystems if they contain
+               incompatible features.  (Can be overriden with the
+               EXT2_FLAG_FORCE 
+
+Sun Jan 12 11:31:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * block.c (ext2fs_block_iterate2): Added new function
+               ext2fs_block_iterate2 which changes the function
+               signature of the callback function to include the
+               referencing block and offset.
+
+       * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
+               ext2fs_inode_scan_goto_blockgroup which allows an
+               application to jump to a particular block group while
+               doing an inode scan.
+
+Wed Jan  1 23:50:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * dirblock.c: Include string.h, since we use memcpy().
+
+Tue Dec  3 12:27:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
+               a long not an int; this doesn't matter on i386 machines,
+               but it does on Alpha's.
+       
+Fri Nov 29 20:57:37 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
+               table pointer is NULL, then return an error indicating
+               that the inode table is missing.
+               (get_next_blockgroup, get_next_blocks,
+               ext2fs_get_next_inode): Don't treat a missing inode table
+               as permanent error.  Return MISSING_INODE_TABLE, but as an
+               advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
+
+       * rw_bitmaps.c (ext2fs_write_block_bitmap,
+               ext2fs_write_inode_bitmap): If the inode or block bitmap
+               block is zero, then don't write out the inode or block
+               bitmap.  The idea here is to avoid stomping on the
+               superblock.
+               (read_bitmaps): If the inode or block bitmap block is
+               zero, then fill in that portion of the inode or block
+               bitmap with all zeros.
+
+       * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
+               blocks in inode table when the inode table size is
+               non-standard (and can therefore span blocks).
+
+Tue Oct 29 20:13:14 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * alloc.c (ext2fs_new_block): Fix fencepost error in
+               ext2fs_new_block; make sure we don't try to allocate the
+               first block beyond the end of the filesystem.
+
+Mon Oct 14 11:00:48 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (check_for_inode_bad_blocks): New function called by
+               get_next_blocks() to avoid reading in bad blocks marked in
+               fs->badblocks.  Inodes located in bad blocks are returned
+               by ext2fs_get_next_inode() returns the error code 
+               EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
+       
+       * alloc_tables.c (ext2fs_allocate_tables): New function which
+               performs the part of mke2fs's job of allocating the 
+               filesystem tables.
+
+       * test_io.c (test_close): IO manager which is used for testing
+               purposes.
+
+Sun Oct 13 04:31:57 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_get_next_inode): Separate out the function of
+               setting up for a new block group to get_next_blockgroup().
+               Separate out the function of reading in blocks of the
+               inode table to get_next_blocks().
+
+       * ext2fs.h: Add the badblocks list to the ext2_filsys entry
+
+       * badblocks.c (badblocks_list_add, badblocks_list_test): Add
+               blocks to the badblock list in sorted order.  This allows
+               badblocks_list_test to be coded using a binary search for
+               speed.
+
+Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs version 1.06
+
+Mon Oct  7 00:44:17 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
+               open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
+               consistency's sake.
+       
+       * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
+               set, then only write out the master superblock.
+
+Sun Oct  6 21:45:26 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * block.c (ext2fs_block_iterate): Fixed bug which caused
+               block_iterate to fail to handle HURD created filesystems;
+               it tested the inode translator field before the inode was
+               loaded.
+
+Tue Sep 17 14:08:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Make sure the description for
+               the inode bitmap is set correctly.
+
+       * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
+
+Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs version 1.05
+
+Sat Sep  7 07:36:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * initialize.c: Override the kernel's idea of default
+               checkinterval from 0 (never) to 180 days.
+
+Wed Aug 28 03:20:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * namei.c (ext2fs_namei_follow): New function which follows
+               symbolic link (if any) at the target.
+
+Tue Aug 27 01:48:43 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
+               for shortcut function fs->read_inode() and fs->write_inode().
+               Added inode_cache to reduce CPU time spent in doing
+               byte swapping.
+
+       * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
+               superblock.
+
+       * namei.c (ext2fs_follow_link): New function.
+               (ext2fs_namei): Extended to have support for chasing
+               symbolic links.  ext2fs_namei() still returns an inode
+               which is a symbolic link.  Symbolic links are only chased
+               while resolving the containing directory.  To chase
+               symbolic links of the final result, use
+               ext2fs_follow_link().
+
+Mon Aug 26 23:46:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
+
+       * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
+               provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
+
+Thu Aug 22 00:40:18 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): On systems where the byte
+               order is not i386 compatible, set the swap_byte flag.
+
+       * inode.c (inocpy_with_swap): Check to see if inode contains a
+               fast symlink before swapping the inode block fields.  This
+               required adding a new argument to inocpy_with_swap to
+               determine whether the mode field is in host order or not.
+
+Wed Aug 21 00:45:42 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
+               the sparc, if EXT2_STD_BITOPS set, use the standard
+               i386-compatible bitmask operations, instead on the
+               non-standard native bitmask operators.
+
+Fri Aug  9 11:11:35 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * block.c (ext2fs_block_iterate): Cause block iterator to return
+               the HURD translator block (along with everything else).
+               If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
+               iterator, then don't return any meta data blocks
+               (including the HURD translator).
+
+Wed Jul 17 17:13:34 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
+
+       * uuid.c: New file, containing UUID utility functions.
+
+Tue Jul 16 10:19:16 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h: Add a definition of the "real" ext2 superblock.
+
+Fri May 24 14:54:55 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
+
+Sun May 19 15:39:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * openfs.c (ext2fs_open): If the blocksize in the superblock is
+               zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
+               that's a basic value that must be correct for the rest of
+               the library to work.
+
+       * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
+               code.
+
+Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs version 1.04
+
+Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs version 1.03
+
+Tue Mar 26 12:06:32 1996    <tytso@rsts-11.mit.edu>
+
+       * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
+               Change the m68k bit numbering for bitmasks to match with
+               the bit numbering used by all other ext2 implementations.
+
+Thu Mar  7 03:37:00 1996    <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan, 
+       ext2fs_open_inode_scan): Support dynamically-sized inodes.
+
+Wed Mar  6 12:26:29 1996    <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
+               dynamically-sized inodes.
+
+       * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
+               loaded.
+
+Tue Mar  5 03:49:37 1996    <tytso@rsts-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Catch an error condition where
+               the passed in size is *really* too small.
+
+       * alloc.c (ext2fs_new_inode): 
+       * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
+               get first inode.
+
+Wed Feb 21 15:56:17 1996    <tytso@rsts-11.mit.edu>
+
+       * getsize.c (ext2fs_get_device_size): Open the device read-only
+               when trying to determine its size.
+
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+       * Release of E2fsprogs version 1.02
+
+Sat Dec  9 09:57:50 1995    <tytso@rsts-11.mit.edu>
+
+       * rw_bitops.c (ext2fs_write_block_bitmap):
+       * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
+       * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
+               Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit, 
+               to avoid conflicts with with kernel include files.  Also
+               rename ADDR and CONST_ADDR to EXT2FS_ADDR and
+               EXT2FS_CONST_ADDR. 
+
+Thu Oct 26 12:09:16 1995    <tytso@rsts-11.mit.edu>
+
+       * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
+
+       * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
+               s_def_resuid and s_def_resgid for backwards compatibility.
+
+Fri Oct 20 23:33:31 1995    <tytso@rsts-11.mit.edu>
+
+       * bitops.h: Added #ifdef's for Sparc.
+
+Wed Sep  6 22:14:46 1995    <tytso@rsts-11.mit.edu>
+
+       * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
+               declaration
+
+       * closefs.c: #include <string.h> to pick up memset() declaration
+
+Mon Sep  4 21:45:29 1995  Remy Card  <card@bbj>
+
+       * Makefile.in: Added support for BSD shared libraries.
+
+       * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
+               flag.
+
+Mon Sep  4 09:55:30 1995    <tytso@rsts-11.mit.edu>
+
+       * unix_io.c (unix_open): Add a double check; if the passed in name
+               is NULL, return EXT2_ET_BAD_DEVICE_NAME.
+
+       * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
+
+Wed Aug 16 15:44:10 1995    <tytso@rsts-11.mit.edu>
+
+       * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
+               S_ISDIR.
+
+Tue Aug 15 13:08:36 1995    <tytso@rsts-11.mit.edu>
+
+       * getsize.c (ext2fs_get_device_size): Add support for reading the
+               partition size from a BSD disk label.
+
+Thu Aug 10 09:33:26 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
+
+       * getsize.c (ext2fs_get_device_size): New function that determins
+               the size of a device.  Used by mke2fs and e2fsck.
+
+Sat Aug 12 03:09:54 1995  Remy Card  <card@bbj>
+
+       * Makefile.in (install): Install static libraries in $(ulibdir)
+               (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
+
+Wed Aug  9 17:04:23 1995  Theodore Y. Ts'o  <tytso@dcl>
+
+       * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
+               Move these functions to freefs.c.
+
+       * closefs.c (ext2fs_flush): If swapping blocks, clear the group
+               descriptors shadow memory to keep purify quiet.  (This
+               also has the nice benefit that the unused portion of the
+               shadow descriptors are zeroed out.)
+
+       * dirblock.c (ext2fs_write_dir_block): We need to use
+               dirent->rec_len *before* it's byteswapped to find the
+               location of the next directory structure!
+
+       * alloc.c (ext2fs_new_inode): Fix bug which could potentially
+               cause ext2fs_new_inode to loop infinitely if we're trying
+               to allocate an inode in group #0 and there are no free
+               inodes at all in the system.
+
+       * closefs.c: #include <errno.h> if it exists.
+
+Sun Aug  6 13:27:50 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
+
+       * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
+               BLOCK_FLAG_APPEND.  Added documentation for the block
+               interator flags.
+
+Sat Aug  5 11:44:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
+
+       * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
+               installation directories correctly.
+
+Tue Jul 18 09:27:38 1995    <tytso@rsx-11.mit.edu>
+
+       * namei.c (process_dir_block): 
+       * mkdir.c (ext2fs_mkdir): 
+       * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
+               to read/write the directory block.
+
+       * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
+               file containing functions for reading and writing
+               directory blocks (byte swapping if necesssary)
+
+       * block.c (block_iterate_ind, block_iterate_dind, 
+               block_iterate_tind): Byte swap the block addresses if
+               EXT2_SWAP_BYTES is set (and swap them back before writing
+               them out.)
+
+       * inode.c (inocpy_with_swap): New function.
+       (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
+               Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
+
+       * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
+               the superblock and group descriptors before writing it out.
+
+       * openfs.c (ext2fs_open): If the magic number is byte-swapped,
+               then set the EXT2_SWAP_BYTES and byte-swap the superblock
+               and group descriptors.
+
+       * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
+               to desp ext2 filesystem structures.
+
+       * bitops.c (set_bit, clear_bit, test_bit): Use modifications
+               supplied by Pete A. Zaitcev so that the C language
+               versions of these functions are more portable.  They will
+               now work on both little and big endian systems, and the
+               assumption that 32-bit integers are used is gone.
+
+       * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
+               doing byte swapping.
+
+       * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
+               byte swapping should take place.
+
+Sun Jul 16 06:21:43 1995    <tytso@rsx-11.mit.edu>
+
+       * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
+               ext2fs_compare_inode_bitmap_end): Added new file
+               containing routines to compare bitmaps.
+
+       * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP): 
+               Added new error codes.
+
+Sat Jul 15 04:23:37 1995    <tytso@rsx-11.mit.edu>
+
+       * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
+               if the magic number is correct, it will be allocated.
+
+Fri Jul 14 19:02:59 1995    <tytso@rsx-11.mit.edu>
+
+       * block.c (block_iterate_ind, block_iterate_dind, 
+               block_iterate_tind): Don't recompute block_nr each loop;
+               just increment it!  Factor check of BLOCK_FLAG_APPEND out
+               of the loop.  Factor mask of BLOCK_CHANGED into changed
+               variable out of the loop.  (block_iterate_ind, in
+               particular, gets called a lot, so every little
+               optimization helps.)
+
+Thu Jul 13 08:02:45 1995    <tytso@rsx-11.mit.edu>
+
+       * block.c (block_iterate_ind, block_iterate_dind, 
+               block_iterate_tind): Precompute limit of loop to speed up
+               block_iterate_ind and company.
+
+       * bitops.h (ext2fs_fast_mark_block_bitmap, 
+               ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
+               ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
+               ext2fs_fast_test_inode_bitmap): Add fast version of these
+               functions, which don't do range checking.
+
+       * bitops.h (ext2fs_get_block_bitmap_start, 
+               ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
+               ext2fs_get_inode_bitmap_end): Add new accessor functions
+               which return the start and end points of the bitmaps.
+
+Tue Jul 11 18:59:41 1995    <tytso@rsx-11.mit.edu>
+
+       * llseek.c (ext2_llseek): If the offset is small enough, use lseek
+               instead of llseek.  The errno if the offset is too large
+               and lseek is not supported should be EINVAL, not -EINVAL.
+
+Thu Jun 15 23:43:02 1995  Remy Card  <card@bbj>
+
+       * Makefile.in: Added support for ELF shared libraries.
+               Fixed typos in the compilation rules.
+               (distclean): Added Makefile.
+
+       * llseek.c (llseek): New function, if llseek() does not exist in the
+       C library.
+       (ext2_llseek): Changed to call llseek().
+
+Mon Jun 12 08:29:07 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
+
+       * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
+
+Sun Jun 11 15:02:54 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
+
+       * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
+
+       * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
+               the S_*, which are normally defined in <sys/stat.h>.  This
+               allows us to compile e2fsprogs on a non-Linux system,
+               which may have a different value for S_IFDIR.
+
+Sat Jun 10 23:47:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
+
+       * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
+               this is a user-mode application!
+
+Thu Jun  8 13:13:22 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
+
+       * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
+       __linux__ so that non-linux systems won't see it.
+
+       * alloc.c: Include <errno.h> if possible.
+       * badblocks.c: Ditto.
+       * bb_inode.c: Ditto.
+       * bitmaps.c: Ditto.
+       * block.c: Ditto.
+       * expanddir.c: Ditto.
+       * get_pathname.c: Ditto.
+       * initialize.c: Ditto.
+       * inode.c: Ditto.
+       * llseek.c: Ditto.
+       * mkdir.c: Ditto.
+       * namei.c: Ditto.
+       * newdir.c: Ditto.
+       * openfs.c: Ditto.
+       * rw_bitmaps.c: Ditto.
+       * unix_io.c: Ditto.
+
+       * Makefile.in: Rewritten to conform to GNU coding standards and
+       support separate compilation directories.
+
+Thu May 11 04:13:12 1995    <tytso@rsx-11.mit.edu>
+
+       * initialize.c (ext2fs_initialize): Don't allow more than one
+               bitmaps's worth of inodes in a group.
+
 Sat Mar 11 14:07:11 1995  Theodore Y. Ts'o  <tytso@localhost>
 
        * llseek.c (ext2_llseek): Added error checking to the llseek()