2001-09-02  Theodore Tso  <tytso@thunk.org>

	* Release of E2fsprogs 1.24a

2001-08-30  Theodore Tso  <tytso@thunk.org>

	* Release of E2fsprogs 1.24

2001-08-15  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.23

2001-06-23  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.22

2001-06-15  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.21

2001-06-01  Theodore Tso  <tytso@valinux.com>

	* Makefile.in: Move include/asm/types.h.in to
		lib/ext2fs/ext2_types.h.in.

2001-05-25  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.20

2001-05-14  Theodore Tso  <tytso@valinux.com>

	* resize2fs.h: Change location of ext2_fs.h to be ext2fs/ext2_fs.h

2001-01-11    <tytso@snap.thunk.org>

	* main.c (main): Use ext2fs_sync_device() instead of calling the
		BLKFLSBUF ioctl directly.

	* extent.c, main.c, resize2fs.c: Change ino_t to ext2_ino_t.

2001-01-01    <tytso@snap.thunk.org>

	* main.c (main): Replace use of struct ext2fs_sb with struct
		ext2_super_block.

2000-12-08    <tytso@snap.thunk.org>

	* Makefile.in: Fix so that top-level "make check" works correctly.

2000-07-13    <tytso@valinux.com>

	* Release of E2fsprogs 1.19

2000-07-05    <tytso@snap.thunk.org>

	* Makefile.in (install): Install resize2fs in /sbin, not /usr/sbin.

2000-06-12  Theodore Ts'o  <tytso@valinux.com>

	* main.c, resize2fs.c, resize2fs.h, extent.c: Add NLS support.

2000-04-06  Theodore Ts'o  <tytso@valinux.com>

	* Update copyright of files in preparation for release of
		resize2fs.  Also removed the (obsolete) beta-test check
		that had been in the code, as well as the old spec files
		used to package the separate distribution of resize2fs.

	* Makefile.in: No longer build resize2fs.static, since there's no
		real point in it any more.

2000-04-03  Theodore Ts'o  <tytso@valinux.com>

	* main.c: For platforms that don't define optarg.h, manually
		define optarg and optind.

2000-02-02  Theodore Ts'o  <tytso@valinux.com>

	* resize2fs.h: Remove unneeded #include of linux/fs.h

	* main.c: Fix gcc -Wall bug.  main() should return an int.

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-10-26    <tytso@valinux.com>

	* Release of E2fsprogs 1.17

1999-10-22    <tytso@valinux.com>

	* Release of E2fsprogs 1.16

1999-07-18  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.15

1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.14

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-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* main.c (main): Print a feedback message stating the new size of
		the filesystem when we're through.

1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.c: Rename max to max_groups and max_dirs to avoid
		possible conflicts with a cpp macro named "max".

1998-07-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.h: Protect include of unistd.h with HAVE_UNISTD_H.

1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.12

1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.c (process_block): Change blkcnt_t to be e2_blkcnt_t
		to avoid collision with LFS API.

1998-04-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* extent.c (ext2fs_create_extent_table): Use ext2fs_free_mem
		instead of free().
	  (extent_cmp): Use EXT2_QSORT_TYPE to define the appropriate
		return type for comparison functions for qsort.

1998-04-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.c (adjust_superblock): 
	* extent.c (ext2fs_add_extent_entry): 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.  Remove cat8dir from the installdirs target,
		since modern man package don't necessarily put the cat
		directory in /usr/man/cat?.

1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* extent.c (extent_cmp): Add const to cast to prevent -Wall warning.

	* main.c (check_mount): Rename function argument to prevent -Wall
		warning. 

1998-03-24  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* main.c (main): Check to make sure we can really resize this
		filesystem.  If there are compatible feature sets that we
		don't support, we need to abort.

	* resize2fs.c: Change to use the new prototype required by
		block_iterate2 (which uses blkcnt_t for the blockcount).

1998-03-20  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.c (inode_scan_and_fix): If we are expanding the
		filesystem, temporarily set
		rfs->old_fs->super->s_blocks_count to ultimate size of the
		filesystem, to avoid catching an error on the block
		iterator.

Mon Mar  9 12:02:47 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* main.c: Use a local version.h file.

Sat Mar  7 18:18:04 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in: Change the name of the complete source file that we
	 	built (that includes resize2fs) to be
	 	e2fsprogs-ALL-<version>.tar.gz.  Don't link with libuuid,
	 	since it's not needed.

	* main.c (main): Add copyright notice.

	* resize2fs.c (blocks_to_move): Create the meta_bmap using the old
		filesystem, not the new filesystem.  
		(get_new_block): Don't try checking the old block bitmap
		if the block we're testing is beyond the boundaries of the
		old filesystem.

Fri Feb 27 01:02:50 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in: Add rule to build a static version of resize2fs.
	  	Update dependency rules.

	* main.c: #include ../version.h, instead of using a hard-coded
		version string.

Tue Feb 24 15:22:52 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Change the progress function to return an errcode_t; this allows
		the progress function to return a error indicating a
		user-requested cancel.

1998-02-20  Theodore Y. Ts'o  <tytso@edt.mit.edu>

	* main.c (check_mount, main): Resize2fs now checks the size of the
		partition, and uses this as a default new_size of the
		partition if one is not specified.  Resize2fs will not let
		you resize a mounted partition.

	* resize2fs.c: Change how the progress function for the INODE_SCAN
		pass is performed, so that the maximum size is never zero.

	* resize2fs.8.in: Updated man page.
	
Mon Feb 16 17:13:01 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.c, resize2fs.h, main.c, ext2_block_move.c,
	 	ext2_inode_move.c: Major reoganization of how resizing
	 	works.  Functions in ext2_block_move.c, and
	 	ext2_inode_move.c moved into resize2fs.c.  Multiple passes
	 	in those two files also combined into a single inode
	 	scanning pass.  Made the inode table moving function
	 	better handling the case where it needs to abort
	 	mid-operation.  When moving blocks around, made the block
	 	allocation function preferentially avoid the old group
	 	descriptor blocks, to make resize2fs more robust.

Fri Feb 13 17:15:43 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.c, resize2fs.h, ext2_block_move.c, ext2_inode_move.c,
	 	main.c: Reorganize how the progress functions are called.

Mon Jan 19 09:12:28 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.h: If EXT2_FLAT_INCLUDES is defined, then assume all
 		of the ext2-specific header files are in a flat directory.

	* ext2_block_move.c, ext2_inode_move.c, extent.c, resize2fs.c,
 		resize2fs.h: Rename variables named "new" to "new_block",
 		"new_inode", or "new_loc" to avoid C++ reserved word
 		clash.
	
	* ext2_block_move.c, ext2_inode_move.c, extent.c, resize2fs.c,
 		sim_progress.c: Use ext2fs_get_memory(),
 		ext2fs_free_memory(), et. al., instead of malloc() and
 		free().
	
	* ext2_block_move.c, ext2_inode_move.c, extent.c: Explicitly cast
	 	all assignments from void * to be compatible with C++.
	
Mon Dec 29 19:09:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* banalysis.c, banalysis.h, ext2_inode_move.c, ext2_block_move.c:
		Change private to priv_data to avoid C++ namespace clash.

Mon Nov  3 14:45:06 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.h: Remove STDC magic, since everyone is STDC these days.

	* resize2fs.c, ext2_block_move.c ext2_inode_move.c: Only include
		printf statements if RESIZE2FS_DEBUG is defined.

	* main.c: Don't read in the bitmaps since resize2fs.c does that.

Sun Oct 19 20:40:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* resize2fs.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H.

Wed Sep  3 17:31:49 1997  Theodore Y. Ts'o  <tytso@edt.mit.edu>

	* resize2fs.h: Add #include for errno.h

Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.11

