2002-01-03  Roland McGrath  <roland@frob.com>

	* inode.c (write_node): Never clear i_translator here.
	That is only done by diskfs_set_translator.

2001-11-21  Roland McGrath  <roland@frob.com>

	* inode.c (read_node): Just always call getpid for the fsid value.

2001-08-17  Marcus Brinkmann  <marcus@gnu.org>

	* ialloc.c (diskfs_alloc_node): Remove warnings about stale
	nonzero st_blocks or st_size.

2001-08-16  Roland McGrath  <roland@frob.com>

	* inode.c (write_node): Leave i_size, i_blocks, i_translator unchanged
	when the inode has been deleted.  Suggested by Marcus Brinkmann.

	* dir.c (diskfs_dirremove_hard): Remove redundant DP->dn_set_mtime set.
	Noticed by Marcus Brinkmann.

2001-08-09  Roland McGrath  <roland@frob.com>

	* inode.c (diskfs_get_translator): Fail with EFTYPE if the length
	field stored on disk is unreasonable.  Don't crash on ENOMEM.
	Use memcpy instead of bcopy.

2001-06-09  Mark Kettenis  <kettenis@gnu.org>

	* inode.c (diskfs_set_statfs): If number of free blocks is less
	than the number of reserved blocks, set the number of available
	blocks to 0.

2001-03-03  Roland McGrath  <roland@frob.com>

	* hyper.c (zeroblock, modified_global_blocks): Remove superfluous
	zero initializers.
	(allocate_mod_map): Likewise for static here.
	(get_hypermetadata): Don't munmap old ZEROBLOCK, just keep it.
	Allocate ZEROBLOCK with PROT_READ.

2001-02-28  Roland McGrath  <roland@frob.com>

	* dir.c (count_dirents): Check for bogus rec_len having pushed us past
	the end.

2001-01-08  Marcus Brinkmann  <marcus@gnu.org>

	* ext2fs.c (main): Use %Ld instead %ld to print store->size.
	* hyper.c (get_hypermetadata): Likewise.

2001-01-07  Marcus Brinkmann  <marcus@gnu.org>

	* dir.c: Make diskfs_dirstat_size const.

2000-12-21  Marcus Brinkmann  <marcus@gnu.org>

	* pager.c: Include <errno.h>.
	(create_disk_pager): Panic if malloc fails.
	Reported by Igor Khavkine <i_khavki@alcor.concordia.ca>.

	* inode.c (diskfs_get_translator): If malloc fails, set err to ENOMEM.
	Initialize err with 0, and return it at the end of the function.
	Reported by Igor Khavkine <i_khavki@alcor.concordia.ca>.

2000-12-02  Roland McGrath  <roland@frob.com>

	* inode.c (write_all_disknodes): Call diskfs_set_node_times after
	pokel_sync, since it might delay a little.
	(write_node): Remove assert that dn_set_mtime et al are clear.
	It is ok if they are set in parallel, because the latter setting
	will be carried out eventually.

2000-10-01  Roland McGrath  <roland@frob.com>

	* truncate.c (diskfs_truncate): Use & instead of %.

2000-11-30  Marcus Brinkmann  <marcus@gnu.org>

	* dir.c (diskfs_lookup_hard): If name is too long, clear
	DS before returning ENAMETOOLONG.

2000-10-01  Roland McGrath  <roland@frob.com>

	* inode.c (write_node): Use memcpy instead of a loop.

2000-07-26  Mark Kettenis  <kettenis@gnu.org>

	* Makefile (HURDLIBS): Reorder libs such that the threads lib
	comes before the ports lib.  This makes sure the functions in
	libthreads properly override the stubs in libports with the new
	dynamic linker semantics in glibc 2.2.

2000-07-26  Marcus Brinkmann  <marcus@gnu.org>

	* truncate.c (trunc_indirect): Add missing argument to
	pager_flush_some.

2000-07-25  Thomas Bushnell, BSG  <tb@mit.edu>

	* truncate.c (trunc_indirect): Before freeing an indirect block,
	remove it from the disk pager's kernel cache.

2000-03-09  Roland McGrath  <roland@baalperazim.frob.com>

	* balloc.c (ext2_free_blocks, ext2_new_block): Fix formats to avoid
	-Wformat warnings.
	* getblk.c (ext2_alloc_block, inode_getblk, ext2_getblk): Likewise.
	* ialloc.c (ext2_count_free_inodes): Likewise.
	* truncate.c (trunc_direct): Likewise.
	* pager.c (pending_blocks_write, diskfs_grow): Likewise.

2000-03-03  Roland McGrath  <roland@baalperazim.frob.com>

	* dir.c (diskfs_get_directs): Don't allocate buffer for *DATA until
	after scanning for ENTRY and possibly returning EOF.

2000-02-05  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2_fs.h: Update from Linux 2.3.42 version (ext2_fs_i.h unchanged).
	* inode.c (check_high_bits): In accordance with Linux 2.3.42 behavior,
	permit 32-bit uids on non-hurd filesystems unless i_dtime is zero
	(which indicates an extra old Linux ext2 implementation I guess).

2000-01-16  Mark Kettenis  <kettenis@gnu.org>

	* pager.c (file_pager_write_page): Lock NODE->dn->alloc_lock
	before accessing NODE->allocsize.  Fixes Debian bug #40302.

1999-10-13  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2fs.c (diskfs_name_max): New variable.

1999-10-06  Roland McGrath  <roland@baalperazim.frob.com>

	* hyper.c (get_hypermetadata): Avoid overflow in calculation of disk
	size vs superblock-specified requirement.
	Add a warning for wasted disk blocks after last filesystem block.

1999-10-03  Roland McGrath  <roland@baalperazim.frob.com>

	* dir.c (ext2_file_type): #if 0 out this variable.
	(diskfs_get_directs): #if 0 out code to interpret file_type field
	and set d_type.  Instead, always return DT_UNKNOWN for now.

	* dir.c (file_type_ext2): #if 0 out.
	(diskfs_direnter_hard): #if 0 out code to set file_type field in
	directory entries.  Instead, always set it to zero.

1999-10-03  Roland McGrath  <roland@baalperazim.frob.com>

	* bitmap.c (ffz): Subtract one from (1-origin) result of ffs to get
	our (0-origin) result.

	* Makefile (LCLHDRS): bitmap.h -> bitmap.c

	* ext2fs.h (test_bit, set_bit, clear_bit): Rewritten to operate on
	32-bit words instead of bytes.

	* truncate.c (diskfs_truncate): Add missing call to
	diskfs_end_catch_exception.

	* ext2fs.h (group_desc): Inline function replaced with macro.
	(group_desc_image): New variable.
	* hyper.c (get_hypermetadata): Initialize it.

	* ext2fs.h (sblock_block): Declare new variable.
	(SBLOCK_LBLOCK): Macro removed.
	(SBLOCK_OFFS): Define in terms of sblock_block.
	* ext2fs.c (options): Add --sblock/-S.
	(parse_opt): Parse it to set sblock_block.
	* hyper.c (sblock_block): New variable.
	(get_hypermetadata): Use sblock_block instead of constant SBLOCK_BLOCK.

	* ext2fs.c (options): List --debug/-D unconditionally, adding to help
	text #ifndef EXT2FS_DEBUG
	(parse_opt): Always grok -D.  #ifndef EXT2FS_DEBUG, reject it with
	message saying debugging support not compiled in.

	* hyper.c (get_hypermetadata): Use EXT2_MAX_BLOCK_SIZE instead of
	hard-wired 8192.  Don't use ffs to compute log2_block_size, and don't
	check for the impossible case of non-power-of-two block size (the
	block size specification we start with is given as a power of two!).
	* ext2fs.h (block_size): Change type to unsigned int.
	(BLOCKSIZE_SCALE): Just use SBLOCK->s_log_block_size directly.
	* hyper.c (get_hypermetadata): Fix printf formats to silence warning.
	* dir.c (dirscanblock): Likewise.

	* dir.c (file_type_ext2): New const variable, map DT_* -> EXT2_FT_*.
	(diskfs_direnter_hard): Move initialization of directory entry content
	fields out of switch; use memcpy or memmove as appropriate, instead of
	bcopy.  Set file_type field in new directory entry to appropriate
	type for the node, or to zero if the filesystem doesn't have the
	EXT2_FEATURE_INCOMPAT_FILETYPE flag set.

1999-10-02  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2fs.h (SBLOCK_LBLOCK): New macro, filesystem block number of sb.
	(BLOCKSIZE_SCALE): New macro for converting min-blocks to fs blocks.
	(group_desc): Fix calculation of offset from superblock, so it works
	properly with block_size != EXT2_MIN_BLOCK_SIZE.

	* ext2fs.h (EXT2FS_EI): New macro, use it for all extern inlines.

	* bitmap.c (count_free, find_next_zero_bit, find_first_zero_bit):
	Make these all static inline.
	(ffz, ffz_nibble_map): Function and variable removed.
	(ffz): Replace decl with macro defined in terms of ffs.
	* ext2fs.h (count_free, find_next_zero_bit, find_first_zero_bit, ffz):
	Remove these declarations.
	* Makefile (SRCS): Remove bitmap.c.
	(LCLHDRS): Add bitmap.c here instead.
	* balloc.c, ialloc.c: #include "bitmap.c" here.

1999-10-01  Roland McGrath  <roland@baalperazim.frob.com>

	* bitmap.c (memscan): Function removed.
	* ext2fs.h: Removed its decl.
	* balloc.c (memscan): New static function, defined using memchr.

1999-09-13  Roland McGrath  <roland@baalperazim.frob.com>

	* dir.c, truncate.c, pager.c: Reverted changes related to
	io_map_segment.

1999-09-09  Roland McGrath  <roland@baalperazim.frob.com>

	* Makefile (makemode): server -> servers.
	(targets): Replaced with target; remove ext2fs.static.
	(ext2fs.static-LDFLAGS): Variable removed.
	(ext2fs, ext2fs.static): Remove deps.

1999-09-07  Thomas Bushnell, BSG  <tb@mit.edu>

	* dir.c (diskfs_lookup_hard): Pass additional parameter to
	diskfs_get_filemap.
	(diskfs_dirempty): Likewise.
	* truncate.c (force_delayed_copies): Likewise.
	* pager.c (diskfs_get_filemap): Accept additional parameter.

1999-09-04  Thomas Bushnell, BSG  <tb@mit.edu>

	* pager.c (file_pager_write_page): Don't report errors on writes
	that extend past NODE->allocsize.  This avoids a race between sync
	and truncate.  Reported by Mark Kettenis <kettenis@wins.uva.nl>.

1999-08-23  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2_fs.h, ext2_fs_i.h: Replaced with Linux 2.3.14 versions.
	* ext2fs.h (i_mode_high): New macro, missing from ext2_fs.h.

	* inode.c (read_node): Don't set INFO->i_version.
	Extract INFO->i_dir_acl value only for a directory;
	otherwise use zero and instead extract INFO->i_high_size.
	Fail with EFBIG if INFO->i_high_size is nonzero.

	* ialloc.c (diskfs_alloc_node): Propagate initial value of i_flags
	from directory, as Linux 2.3.14 does.

	* inode.c (write_node): Get i_flags from NP->dn->info instead of from
	the disk inode, so we can have modified the in-core version.
	* dir.c (diskfs_direnter_hard, diskfs_dirremove_hard,
	diskfs_dirrewrite_hard): Clear EXT2_BTREE_FL flag bit from
	DP->dn->info.i_flags after modifying the directory (this is what
	Linux 2.3.14 does).

	* inode.c (read_node): i_version -> i_generation
	* inode.c (write_node): Likewise.

	* balloc.c (ext2_free_blocks): Handle freeing across group boundary,
	as Linux 2.3.14 does.

	* balloc.c (ext2_check_blocks_bitmap): If RO_COMPAT_SPARSE_SUPER
	feature flag is set, or if group number is not a power of 3, 5, or 7
	(I don't know why; this is what Linux 2.3.14 does), skip tests for
	superblocks and descriptor blocks being free in bitmap.

	* dir.c: Replace `struct ext2_dir_entry' with `struct ext2_dir_entry_2'
	in all uses.
	(ext2_file_type): New static const variable.
	(diskfs_get_directs): Set d_type member based on file_type field in
	directory entry.

	* balloc.c (ext2_new_block): Take new arg PREALLOC_GOAL.
	Use that instead of hard-coded 8 as maximum of blocks to preallocate.
	Also test that instead of PREALLOC_COUNT to decide whether to
	try any preallocation at all.
	* getblk.c (ext2_alloc_block): Pass new arg to ext2_new_block.
	Use EXT2_DEFAULT_PREALLOC_BLOCKS as default (replaces hard-coded 8);
	For a regular file, use SBLOCK->s_prealloc_blocks before default.
	For a directory, use SBLOCK->s_dir_prealloc_blocks if the
	EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is set, otherwise zero.
	* inode.c (diskfs_set_translator): Pass new arg (zero).

1999-07-11  Roland McGrath  <roland@baalperazim.frob.com>

	* dir.c (diskfs_get_directs): Fix sloppy bugs in last change.
	* hyper.c (allocate_mod_map): Likewise.
	* pager.c (get_page_buf): Likewise.

1999-07-10  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2fs.h: Add #include <sys/mman.h> for munmap decl.

1999-07-06  Thomas Bushnell, BSG  <tb@mit.edu>

	* dir.c (diskfs_get_directs): Use mmap instead of vm_allocate.
	* hyper.c (allocate_mod_map): Likewise.
	(get_hypermetadata): Likewise.
	* pager.c (get_page_buf): Likewise.

	* hyper.c (diskfs_readonly_changed): Use mprotect instead of
	vm_protect.

1999-07-03  Thomas Bushnell, BSG  <tb@mit.edu>

	* dir.c (diskfs_lookup_hard): Use munmap instead of vm_deallocate.
	(diskfs_direnter_hard): Likewise.
	(diskfs_dirremove_hard): Likewise.
	(diskfs_dirrewrite_hard): Likewise.
	(diskfs_dirempty): Likewise.
	(diskfs_drop_dirstat): Likewise.
	(diskfs_get_directs): Likewise.
	* hyper.c (allocate_mod_map): Likewise.
	(get_hypermetadata): Likewise.
	* pager.c (free_page_buf): Likewise.
	* truncate.c (poke_pages): Likewise.

1999-06-29  Thomas Bushnell, BSG  <tb@mit.edu>

	* hyper.c (diskfs_readonly_changed): Adjust whether the store
	should permit writes too.

1999-06-19  Roland McGrath  <roland@baalperazim.frob.com>

	* pager.c (free_page_buf): Fix type cast.

Tue Jun 15 21:51:58 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* pager.c: Clamp the number of free pages we keep around to some
	reasonably small value.  Patch from Mark Kettenis
	<kettenis@wins.uva.nl>.

1999-06-15  Thomas Bushnell, BSG  <tb@mit.edu>

	* inode.c (diskfs_validate_flags_change): Invert sense of test wrt
	bits that haven't yet been defined.  Reported by Kalle Olavi
	Niemitalo <tosi@ees2.oulu.fi>.

1999-05-23  Roland McGrath  <roland@baalperazim.frob.com>

	* ialloc.c (diskfs_alloc_node): Frob printf format to suppress warning.
	* getblk.c (ext2_getblk): Likewise.
	* balloc.c (ext2_free_blocks): Likewise.
	* hyper.c (get_hypermetadata): Likewise.

	* ialloc.c (diskfs_alloc_node): If creator_os is not EXT2_OS_HURD,
	suppress warnings about stale nonzero st_blocks or st_size.

1999-05-19  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2fs.c (main): Include store size in panic msg when it's too small.

1999-01-23  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2fs.c (main): Use diskfs_init_main.

1998-12-27  Roland McGrath  <roland@baalperazim.frob.com>

	* inode.c (diskfs_set_statfs): Remove __ from struct members.

1998-12-21  Mark Kettenis  <kettenis@phys.uva.nl>

	* inode.c (diskfs_set_statfs): Fill in statfs members that are
	used to implement statvfs.

1998-12-27  Roland McGrath  <roland@baalperazim.frob.com>

	* ext2fs.c (main): Pass ARGP_IN_ORDER flag to argp_parse because
	diskfs options need it.

1998-12-20  Roland McGrath  <roland@baalperazim.frob.com>

	* inode.c (diskfs_write_disknode): Add braces to silence warning.
	* pager.c (file_pager_read_page): Likewise.

	* storeinfo.c: Don't include <netinet/in.h>.

1998-09-04  Roland McGrath  <roland@baalperazim.frob.com>

	* dir.c (dirscanblock): Fix defn with `const'.
	(diskfs_direnter_hard): Likewise.
	* inode.c (diskfs_create_symlink_hook): Likewise.
	(write_symlink): Likewise.

	* pager.c: strings.h -> string.h; gets strerror decl.

	* ext2fs.c (main): Fix return type to int.

	* dir.c (diskfs_lookup_hard): Fix defn with `const'.
	* inode.c (diskfs_set_translator): Likewise.

Wed Aug 20 14:28:00 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* dir.c (diskfs_lookup_hard): Cope with error return from
	diskfs_get_filemap.
	(diskfs_dirempty): Cope (poorly) with error return from
	diskfs_get_filemap.
	* truncate.c (force_delayed_copies): Likewise.

	* pager.c (diskfs_get_filemap): If pager_create fails, return
	error to caller.

Mon Jun 30 17:34:27 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* ext2fs.c (diskfs_readonly): Delete variable definition.
	(main): If the store cannot be made writable, then set
	diskfs_hard_readonly and diskfs_readonly.

1997-06-20  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (disk_pager_read_page): Initialize READ to 0 to force
	store_read to allocate a buffer.

1997-06-18  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Get rid of device-block-size-is-power-of-2 check.

Tue Jun  3 17:18:35 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (read_node): Don't assert that st_blocks is zero for
	non-dir/file/long-symlink inodes.

Tue Nov 19 18:30:37 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (read_node): If SBLOCK->s_creator_os != EXT2_OS_HURD,
	set NP->author_tracks_uid to true.

Mon Nov 18 17:14:31 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ialloc.c (diskfs_alloc_node): Clear S_IPTRANS bit in ST->st_mode
	instead of NP->istranslated.
	* inode.c (read_node): Set S_IPTRANS bit in ST->st_mode (and clear
	S_ITRANS) rather than NP->istranslated.
	(write_node): Don't write S_IPTRANS to disk.
	(diskfs_set_translator): Frob S_IPTRANS bit rather than
	istranslated field.

Sat Nov 16 17:26:20 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): diskfs_isuid ->
 	idvec_contains.

Tue Nov 12 17:53:08 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (diskfs_validate_flags_change): New function.
  	(write_node): Convert generic flags in ST->st_flags to ext2-
 	specific flags in DI->i_flags.
	(read_node): Renamed from read_disknode; all callers changed.
	Convert ext2-specific flags on disk to generic flags in ST.
	[!UF_APPEND] (UF_APPEND): New macro (temporary).
	[!UF_NODUMP] (UF_NODUMP): New macro (temporary).
	[!UF_IMMUTABLE] (UF_IMMUTABLE): New macro (temporary).
	<sys/stat.h>: New include.

Thu Oct 24 16:24:05 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (startup_children, runtime_children): New variables.
	(startup_parents, runtime_parents): Variables removed.
	(startup_argp, runtime_argp): Use new *_CHILDREN variables instead of
	corresponding *_PARENT ones.

Wed Oct  9 13:30:15 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Return ports with
	MACH_MSG_TYPE_COPY_SEND, not MACH_MSG_TYPE_MAKE_SEND.

Tue Oct  8 23:25:53 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): If st_size
 	indicates a lower value for NUM_FS_BLOCK, use it instead of the
 	value derived from st_blocks.

Mon Oct  7 15:48:49 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Typo.

Fri Oct  4 23:51:05 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Add security
	check, and deactivate FILE_STORE if necessary.

Mon Sep 30 15:40:53 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Set *PORTS_TYPE.

Thu Sep 19 17:57:07 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (HURDLIBS): Add store.

Wed Sep 18 15:28:32 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Remove CLASSES argument to store_parsed_open.
	Use STORE_PARAMS variable to get result from parsing STORE_ARGP.
	(diskfs_extra_version): Put `GNU Hurd' in here.

Fri Sep 13 00:15:56 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (diskfs_append_args): Renamed from diskfs_get_options.
	Don't initialize *ARGZ & *ARGZ_LEN anymore, or deallocate on errors.
	Append store args too.

	* pager.c (file_pager_read_page:do_pending_reads, pager_unlock_page,
 	pending_blocks_write, diskfs_grow, find_block): Use filesystem blocks,
 	not device blocks, in block<->offset/size conversions.

	* Makefile (ext2fs ext2fs.static): Add ../libstore/libstore.a.

1996-09-12  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (diskfs_disk_name): Renamed from STORE_NAME.

Wed Sep 11 12:59:28 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (create_disk_pager): Create PAGER_BUCKET.  Pass in new
	args to diskfs_pager_setup (renamed from disk_pager_setup).
	(disk_image): New variable.
	(service_paging_request): Function removed.
	(diskfs_shutdown_pager): Use DISKFS_DISK_PAGER instead of DISK_PAGER.
	* ext2fs.h (disk_image): New declaration.
	(sync_global_ptr): Use DISKFS_DISK_PAGER instead of DISK_PAGER.
	* ext2fs.c (main, diskfs_reload_global_state): Use
	DISKFS_DISK_PAGER instead of DISK_PAGER.

	* ext2fs.c (main): Change store_parsed_get_name to store_parsed_name.

	* storeinfo.c (diskfs_S_file_get_storage_info): Clone STORE before
	remapping it.

Tue Sep 10 17:12:16 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Rewritten to use
	store functions.

Mon Sep  9 11:10:11 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Use store fields instead of diskfs variables.
	(store, store_parsed, store_name): New variables.
	(free_page_bufs, free_page_bufs_lock): Variables removed.
	(get_page_buf, free_page_buf): Functions removed.
	<argp.h>, <hurd/store.h>: New includes.
	* ext2fs.h (store_parsed, store_name): New declarations.
	(get_page_buf, free_page_buf): Declarations removed.
	* hyper.c <hurd/store.h>: New include.
	* pager.c <hurd/store.h>: New include.
	(file_pager_write_pager): Make BUF void *.
	(file_pager_read_page): Make BUF void **, NEW_BUF void *, and
	LENGTH size_t.  Pass &LENGTH to store_read, not LENGTH.
	(pending_blocks_write): Make PAGE_BUF void *, and LENGTH size_t.
	Check amount written, and return EIO if it's wrong.
	(disk_pager_read_page): Make BUF void **, and LENGTH size_t.
	Check amount read, and return EIO if it's wrong.
	(disk_pager_write_page): Make BUF void *, and LENGTH size_t.
	Check amount written, and return EIO if it's wrong.
	(pager_read_page, pager_read_page): Convert BUF to a pointer when
	calling work functions.
	(struct pending_blocks): Make BUF void *.
	(free_page_bufs, free_page_bufs_lock): New variables.
	(get_page_buf, free_page_buf): New functions.

Sun Sep  8 18:47:10 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* hyper.c (diskfs_readonly_changed): Use STORE->size.
	(get_hypermetadata): Use STORE->size & STORE->block_size.

	* pager.c (file_pager_read_page, pending_blocks_write,
 	disk_pager_read_page, disk_pager_read_page, disk_pager_write_page,
 	pager_report_extent, find_block, pager_unlock_page, diskfs_grow):
	Use store_ operations instead of the old device ones, and some
	store fields instead of globals.
	* inode.c (read_disknode): Use STORE->log2_block_size instead of
	LOG2_BLOCK_SIZE.
	* ext2fs.h (store): New declaration.
	* ext2fs.c (startup_parents): Use diskfs_store_startup_argp
	instead of diskfs_std_device_startup_argp.
	(startup_parents, startup_argp, runtime_parents, runtime_argp,
	options, parse_opt, diskfs_get_options):
	Define always, not just when EXT2FS_DEBUG is defined.
	(parse_opt): Propagate our input to the first child argp.
	(parse_opt, diskfs_get_options): Guard debug-specific bits with
	#ifdef EXT2FS_DEBUG.

Thu Sep 12 16:41:20 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (HURDLIBS): New variable.
	(ext2fs ext2fs.static): Depend on $(library_deps) instead of
	explicit list.

Fri Sep  6 16:03:11 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* ext2fs.c: Include <version.h>.
	(diskfs_major_version, diskfs_minor_version, diskfs_edit_version):
	Deleted variables.
	(diskfs_server_version): New variable.

Thu Aug 29 16:59:51 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	Changes from ufs/dir.c:
	* dir.c (diskfs_lookup_hard): When setting ds->stat to EXTEND, set
 	ds->idx by looking at the size of the file.  After successful
 	dirscanblock, record index where we finished in DP->dn->dir_idx.
  	Start searches at that index.
	(dirscanblock): Size dirents correctly when mallocing it.
	(diskfs_direnter_hard): Be more careful when sizing or resizing
	dirents.  Correctly set to -1 all the new entries we create after
	realloc call.
	* ext2fs.h (struct disknode): New member `dir_idx'.
	* inode.c (diskfs_cached_lookup): Initialize DN->dir_idx.

	* dir.c (diskfs_direnter_hard): Initialize OLDSIZE to quiet gcc.

Sun Aug 18 01:45:42 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (file_pager_read_page): Use get_page_buf to get a free page.
	(file_pager_read_page): Use free_page_buf to deallocate pages.
	* ext2fs.c (get_page_buf): Return 0 if we can't allocate.

Thu Aug 15 14:55:01 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (diskfs_edit_version): Change to `1'.
	(diskfs_version_extra): New variable.
	* inode.c (read_disknode): Change assertion to allow non-zero
	st_size for anything, but assert that st_blocks == 0 for any case
	where we set allocsize to 0.
	* truncate.c (diskfs_truncate): Allow any sort of node to have a
	size without any blocks (as linux apparently does this sometimes
	with devices).

Wed Aug 14 14:03:33 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (diskfs_minor_version): Change to `2'.

Tue Aug 13 15:11:42 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2_fs.h: Update to version from linux-2.0.12.
	* ialloc.c (ext2_alloc_inode, diskfs_free_node): Pass SBLOCK as a
	parameter to EXT2_FIRST_INO (v2.x change).
	* hyper.c (get_hypermetadata): Use EXT2_INODE_SIZE instead of
	sizeof (struct ext2_inode).
	Deal with various version 2.x features.
	* ext2fs.h (dino): Dont recalculate INODES_PER_BLOCK here.
	(ext2_debug): redefine macro after including ext2_fs.h.

Mon Aug 12 13:48:17 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (diskfs_minor_version): Changed to `1'.

	* inode.c (read_disknode): Don't set allocsize for in-inode symlinks.
	(MAX_INODE_SYMLINK): New macro.
	(write_symlink, read_symlink): New functions.
	(diskfs_create_symlink_hook, diskfs_read_symlink_hook): New variables.
	* truncate.c (diskfs_truncate): For in-inode symlinks, just frob
	the size.

	* ext2fs.h (__u32, __u16, __u8, __s32, __s16, __s8): New types.
	* ext2_fs.h (u32, u16, u8, s32, s16, s8): All uses of these types
	changed to have a leading `__', and the definitions removed.
	* ext2_fs_i.h (u32, u16, u8, s32, s16, s8): All uses of these types
	changed to have a leading `__'.

Mon Aug 12 11:18:37 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* hyper.c (diskfs_set_hypermetadata): Return an error code now.

Fri Aug  2 12:10:40 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (diskfs_write_disknode): If WAIT is false, still record
 	the write for later, using record_global_poke.

Thu Aug  1 16:18:59 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2_fs.h (ext2_debug_flag): New decl.
	(ext2_debug): Pay attention to EXT2_DEBUG_FLAG.
	* ext2fs.c [EXT2FS_DEBUG] (options, ext2_debug_flag): New variables.
	[EXT2FS_DEBUG] (parse_opt, diskfs_get_options): New functions.
	[EXT2FS_DEBUG] (startup_parents, startup_argp, runtime_parents,
	diskfs_runtime_argp): New variables.
	[!EXT2FS_DEBUG] (startup_argp): New macro.
	(main): Use STARTUP_ARGP instead of DISKFS_STD_DEVICE_STARTUP_ARGP.
	* pager.c (diskfs_grow): Fix ext2_debug format strings.
	* truncate.c (trunc_direct): Fix ext2_debug call.

Sat Jul 20 00:58:44 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.h (struct disknode): Remove debugging info.
	(RECORD_LAST): Function removed.
	(LAST_BUFSZ): Macro removed.
	(enum last_act): Type removed.
	* inode.c (diskfs_cached_lookup): Don't initialize debugging info.
	* pager.c (file_pager_read_page, file_pager_write_page,
	pager_unlock_page, diskfs_grow): Don't record debugging info.
	* truncate.c (diskfs_truncate): Likewise.

	* pager.c (file_pager_read_page): Set
	NODE->dn->last_page_partially_writable if we return such a page.

Fri Jul 19 15:02:24 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (diskfs_grow): Rename OLD_END_BLOCK to END_BLOCK.
	Correctly determine whether to set DN->last_page_partially_writable
	after allocating new blocks.

	* pager.c (file_pager_read_page, file_pager_write_page): Pass
	NODE->dn, not &NODE->dn to RECORD_LAST.

Mon Jul 15 18:00:26 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.h (struct disknode): Add debugging info.
	(RECORD_LAST): New function.
	(LAST_BUFSZ): New macro.
	(enum last_act): New type.
	* pager.c (pager_unlock_page, diskfs_grow, file_pager_read_page,
	file_pager_write_page): Record debugging info.
	* truncate.c (diskfs_truncate): Likewise.
	* inode.c (diskfs_cached_lookup): Initialize debugging info.

	* pager.c (file_pager_read_page): Initialize *WRITELOCK to 0.

Tue Jun 25 12:22:21 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.h (sync_global): Renamed from sync_global_data.  Add WAIT
 	flag.  Don't call diskfs_set_hypermetadata.
	(alloc_sync): Call diskfs_set_hypermetadata instead of sync_global_data.
	(sync_super_block): Function removed.
	* hyper.c (diskfs_readonly_changed): No longer clear the clean bit.
	(diskfs_set_hypermetadata): Work correctly.
	* truncate.c (diskfs_truncate): Add call diskfs_check_readonly to
	clear clean bit.
	* inode.c (diskfs_cached_lookup): Use diskfs_check_readonly
	instead of diskfs_readonly.
	* dir.c (diskfs_lookup_hard, diskfs_dirempty): Likewise.
	* pager.c (diskfs_shutdown_pager): Don't shutdown the disk pager,
	just sync it.
	(diskfs_sync_everything): Call sync_global instead of pokel_sync.
	(final_sblock): Variable removed.
	(diskfs_grow): Add call diskfs_check_readonly to clear clean bit.

Mon Jun 24 17:14:25 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (check_high_bits, diskfs_validate_owner_change,
	diskfs_validate_group_change, diskfs_validate_mode_change,
	diskfs_validate_author_change): New functions.
	(write_node): For non-hurd filesystems, assert that no hurd
	extensions should be used.

Thu Jun 20 22:36:23 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Rename diskfs_device_startup_argp to
	diskfs_std_device_startup_argp.

Sat Jun 15 15:56:01 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (read_disknode, write_inode): Use hurd-specific fields
	only on a hurd filesystem.

Fri May 10 09:32:43 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* inode.c (diskfs_set_statfs): Fix one reference to old name of ST
 	member.

Thu May  9 11:52:20 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* inode.c (diskfs_set_statfs): Expect and fill in new format
 	statfs buffer.

	* Makefile (ext2fs ext2fs.static): s/ioserver/iohelp/g.
	* ext2fs.h: ioserver.h -> iohelp.h.

Tue May  7 16:22:56 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Rewrite for new
	interface.

Tue Apr 30 12:51:09 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (targets): Renamed from `target'.

Fri Apr 26 16:10:19 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (makemode): Now `servers'.
	(targets): Renamed from `target'; now include ext2fs.static.
	(ext2fs.static-LDFLAGS): Renamed from `LDFLAGS'.
	(ext2fs.static): Depend on same things as `ext2fs'.
	(include ../Makeconf): Must come before dependency information.

Wed Apr 17 13:30:49 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (diskfs_write_disknode): Only sync DI if WAIT.

	* dir.c (diskfs_lookup_hard): Set atime appropriately, and sync
	the new atime if we are running synchronously (!).
	(diskfs_dirempty): Likewise.
	(diskfs_direnter_hard): Set mtime appropriately.
	(diskfs_dirremove_hard): Likewise.
	(diskfs_dirrewrite_hard): Likewise.

Thu Apr  4 18:51:19 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (diskfs_cached_lookup): Renamed from iget; all uses updated.
	Initialize the CACHE_ID field in the new node.
	* ext2fs.h (struct disknode): Get rid of NUMBER field; all references
	replaced by references to the CACHE_ID field in the corresponding node.

Fri Mar 29 11:03:58 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir.c (diskfs_null_dirstat): New function.
	(diskfs_lookup_hard, diskfs_direnter, diskfs_dirremove_hard,
	diskfs_dirrewrite_hard): Renamed from versions without `_hard' suffix.
	Get rid of stuff now done by diskfs.

	* ext2fs.c (main): Pass new argument to argp_parse.

Tue Mar 19 17:52:04 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (pager_unlock_page, diskfs_grow): Try to make the logic
	a bit simpler and more robust.

Fri Feb 16 17:05:01 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Check error return from diskfs_init_diskfs.

Tue Feb  6 14:49:40 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.h (ext2_warning): Make a declaration, not a macro.
	* msg.c (ext2_warning): Rename from _ext2_warning; don't take (or
	print) a function argument any more.

	* dir.c (diskfs_get_directs): When BUFSIZ is 0, allocate enough
	extra space over the directory size to account for the worst case
	difference between the ext2 and canonical formats.

Sat Feb  3 11:27:07 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* hyper.c (get_hypermetadata, diskfs_readonly_changed): Use
	ext2_warning to print warnings instead of error().
	* msg.c (_ext2_warning): Include `warning:' in message.

Sat Feb  3 06:10:43 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hyper.c: Fixed handling of the filesystem `clean bit'.
	(ext2fs_clean): New boolean variable.
	(get_hypermetadata): Set it iff the clean bit is set on entry.
	If not clean, complain and force read-only.
	(diskfs_set_hypermetadata): Set clean bit only if ext2fs_clean is set.
	(diskfs_readonly_changed): Complain if going writable and clean
	bit clear.

	* ext2fs.c: Include string.h for strerror decl.

Tue Jan 30 22:25:19 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* hyper.c (get_hypermetadata): Don't return any error value, just
	panic if we can't read the superblock.
	* ext2fs.c (main): Move warp_inode() inline.  Make sure root inode
	is really there.  Don't check return value from get_hypermetadata.
	(warp_inode): Function removed.
	* ext2fs.h (get_hypermetadata): Returns void now.

Tue Jan 30 17:04:41 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* pager.c (file_pager_read_page, file_pager_write_page): Check for
	a page offset beyond the allocsize and return EIO.

Wed Jan 17 15:11:55 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Calculate the
	right value for *RUNS_LEN.

Tue Jan 16 17:37:00 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (diskfs_file_update): Ext2fs doesn't require that the
	last block in the file always be allocated, so don't.
	(diskfs_grow, pager_unlock_page): Don't set last_block_allocated.
	* ext2fs.h (struct disknode): Get rid of last_block_allocated field.
	* inode.c (read_disknode): Don't set last_block_allocated.
	* truncate.c (diskfs_truncate): Likewise.

	* Makefile (LDFLAGS): Add -static.

Mon Jan 15 10:25:19 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (pager_unlock_page, diskfs_grow): Leave things in a
	slightly more consistent state when block allocation errors happen.

	* dir.c (diskfs_direnter): Don't include the terminating '\0' in
	on-disk directory entry names.

	* inode.c (diskfs_node_norefs): When losing our in-core copy of an
	inode, remember which indirect blocks still have to be written.
	* pokel.c (pokel_inherit, pokel_finalize): New functions.
	* ext2fs.h (pokel_inherit, pokel_finalize): New declarations.

	* dir.c (diskfs_lookup): Patch from ufs/dir.c: If we are returning
 	an error, then set the dirstat to be ignored by drop_dirstat.

Sun Jan 14 13:17:33 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ialloc.c (diskfs_alloc_node): Set NP->istranslated to 0.
	* inode.c (write_node): If NP isn't translated, force
	DI->i_translator to 0.

	* getblk.c (inode_getblk, block_getblk): Set dn_set_mtime too.

Sat Jan  6 11:57:26 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* pager.c (pager_bucket): Made global.
	(create_disk_pager): Pass MAY_CACHE to disk_pager_setup.
	* ext2fs.c (main): Don't map in disk image here; create_disk_pager
	now does it.

Fri Jan  5 16:57:54 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* ext2fs.h: Declare create_disk_pager.

Thu Jan  4 18:46:40 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* ext2fs.h (disk_pager, disk_pager_port, disk_image,
	create_disk_pager): Decls removed.
	Include hurd/diskfs-pager.h instead.

	* pager.c (create_disk_pager): Use disk_pager_setup.

Tue Nov 14 14:59:32 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir.c (dirscanblock): Apply mib's changes to ufs/dir.c.

Sat Nov  4 20:01:01 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Add FLAGS argument.

Wed Nov  1 20:09:59 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Add FLAGS arg to diskfs_startup_diskfs call.

Mon Oct 23 17:49:16 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (diskfs_get_translator, diskfs_set_translator): Only
	support these if the filesystem's creator-os is `hurd'.
	(read_disknode): Only check the i_translator field if the
	filesystem's creator-os is `hurd'.

Fri Oct 20 19:18:16 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.h (MS_RDONLY, MS_NOSUID, MS_NODEV, MS_NOEXEC,
	MS_SYNCHRONOUS, MS_REMOUNT, S_APPEND, S_IMMUTABLE, IS_APPEND,
	IS_IMMUTABLE): Macros deleted.

Thu Oct 19 19:15:15 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (create_disk_pager, diskfs_get_filemap,
	pager_clear_user_data): Don't use the p field in a upi.
	(diskfs_get_filemap): Update/initialize the max_prot field.
	Add the prot arg.

	* ext2fs.h (struct user_pager_info): Add max_prot field, remove p.
	* pager.c (drop_pager_softrefs): Declare PAGER, not UPI.
	(enable_caching): The disk node is upi->node, not upi->np.
	(diskfs_enable_pagers): Function removed.
	* inode.c (read_disknode): Add DN and OFFSET variables.  Use
	log2_block_size to mask instead of doing a modulo with block_size.
	* hyper.c (diskfs_readonly_changed): Typo.
	(allocate_mod_map): Declare ERR; OLD_MOD_MAP_SIZE --> MOD_MAP_SIZE.
	* dir.c (diskfs_lookup, diskfs_dirempty): Give diskfs_get_filemap
	a protection arg.
	* truncate.c (force_delayed_copies): Ditto.

Wed Oct 18 21:00:28 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.h (struct disknode): Replace fileinfo field with pager.
	* inode.c (diskfs_node_norefs, iget): Use pager field, not fileinfo.
	* pager.c (diskfs_get_filemap_pager_struct, flush_node_pager,
	diskfs_file_update, pager_clear_user_data, drop_pager_softrefs): Ditto.
	* truncate.c (enable_delayed_copies, force_delayed_copies): Ditto.

	* ext2fs.c (main): Always include VM_PROT_WRITE in max prot.
	* hyper.c (diskfs_readonly_changed): Change the protection of
	DISK_IMAGE to reflect the new state.
	* pager.c (diskfs_enable_pagers): New function.

Tue Oct 17 21:16:04 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* pokel.c (_pokel_exec, pokel_flush): New functions.
	(pokel_sync): Use _pokel_exec to do the work.
	* pager.c (flush_node_pager): New function.
	* ext2fs.h (pokel_flush, flush_node_pager): New declarations.

	* hyper.c (allocate_mod_map): New function (from get_hypermetadata).
	(zeroblock, modified_global_blocks): Define (were common).
	(get_hypermetadata): Deallocate ZEROBLOCK if necessary.  Use
	allocate_mod_map to allocate MODIFIED_GLOBAL_BLOCKS.
	(diskfs_readonly_changed): New function.
	* main.c (main): Move stuff into get_hypermetadata.
	Writable init code moved to diskfs_readonly_changed.

	* inode.c (diskfs_node_reload): New function.
	(iget, read_disknode): Code to set allocsize and the last_* fields
	moved from iget to read_disknode.

	* ext2fs.h (disk_pager): Type changed to struct pager.
	(sync_global_ptr): Use DISK_PAGER, not DISK_PAGER->p.
	* pager.c (create_disk_pager): Store the actual pager into DISK_PAGER.
	* ext2fs.c (main): Use DISK_PAGER directly, not ->p.
	* inode.c (iget): Ditto.
	* pager.c (diskfs_shutdown_pager, diskfs_sync_everything): Ditto.

Mon Oct 16 15:23:25 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (diskfs_lost_hardrefs): #ifdef'd out contents removed.

Fri Oct 13 17:50:23 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Use argp for parsing.
	(usage, USAGE, SHORT_OPTS, long_opts, console_stdio): Removed

Thu Oct 12 18:16:00 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* hyper.c (get_hypermetadata): Use diskfs device functions &
	variables instead of our own.
	* ext2fs.h (device_arg, device_name, device_port, device_start,
	device_size, device_block_size): Declarations removed.

	* ext2fs.c (printf, _ext2_error, _ext2_panic, _ext2_warning):
	Functions moved to msg.c
	* msg.c: New file.
	(printf, _ext2_error, _ext2_panic, _ext2_warning): Funcs from ext2fs.c.
	* Makefile (SRCS): Remove devio.c, add msg.c.

Sat Oct  7 20:47:19 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): run_elem_t --> off_t.

	* ext2fs.c (diskfs_init_completed): Func deleted (now in libdiskfs).

Fri Oct  6 17:24:57 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): Change type of
	ADDRESSES to off_t **, and add BLOCK_SIZE parameter.

Wed Oct  4 20:02:34 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* inode.c (diskfs_set_statfs): fsys_stb_bsize -> fsys_stb_iosize.
  	fsys_stb_fsize -> fsys_stb_bsize.

Wed Sep 27 20:07:53 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* ext2fs.c (main): Use diskfs routines to open the device.
	Support both file and mach devices.  Move the parse function here.
	(parse_opt): Move into main (as a nested function).
	* ext2fs.h (device_arg, device_start): New declarations.
	* devio.c (dev_read_sync, dev_write_sync): Offset the address to
	which we're doing i/o with DEVICE_START.

Tue Sep 26 18:39:58 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeinfo.c (diskfs_S_file_get_storage_info): New function.
	* Makefile (SRCS): Add storeinfo.c.

Fri Sep 15 14:21:18 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* truncate.c (trunc_indirect): Only record an indirect block as
	being modified when it actually is.

	* truncate.c (diskfs_truncate): Use the new truncate functions.
	(poke_pages): Gratuitous cosmetic changes.
	(trunc_direct): Rewritten, new args.
	(trunc_indirect): Rewritten, new args, now more general to support
	all the various indirection levels.
	(trunc_triple_indirect, trunc_double_indirect,
	trunc_single_indirect): New functions.
	(struct free_block_run): New structure.
	(free_block_run_finish, free_block_run_free_ptr,
	free_block_run_add, free_block_run_init, _free_block_run_flush):
	New functions.
	(trunc_dindirect, trunc_tindirect): Functions deleted.
	(DIRECT_BLOCK, INDIRECT_BLOCK, DINDIRECT_BLOCK, TINDIRECT_BLOCK):
	Macros deleted.

	* getblk.c (block_getblk, ext2_getblk): u32 --> block_t.
	* balloc.c (ext2_new_block): Ditto.
	* hyper.c (get_hypermetadata): Ditto.
	* pager.c (file_pager_write_page): Ditto.

Wed Sep 13 12:30:23 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* dir.c (diskfs_lookup): Don't attempt to lock NP if NPP is not
 	set.  Don't even set NP if NPP is not set; use INUM as "lookup
 	succeeded flag" instead.  Lookups for REMOVE and RENAME now *must*
	set NPP.

Tue Sep 12 11:03:19 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* pokel.c (pokel_init): Initialize the free_pokes field.
	(pokel_add): Assert that this malloc should succeed.
	(pokel_sync): Don't hold POKEL's spin lock while syncing.

	* ialloc.c (diskfs_alloc_node): Check for a non-zero ALLOCSIZE.

Tue Sep  5 16:59:40 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* pager.c (diskfs_pager_users): Ignore the disk pager when seeing
	if there are any active pagers.
	(diskfs_shutdown_pager): shutdown_one gets passed a pager, not a upi.
	(diskfs_sync_everything): sync_one gets passed a pager, not a upi.

Sun Sep  3 17:28:13 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* ext2fs.c (thread_cancel): Removed.

Fri Aug 25 14:37:32 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (ext2fs): Put libports in the right place in the
	linking order.

Thu Aug 24 10:34:15 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (ext2fs): Put all dependencies here.
	(HURDLIBS): Removed.

Tue Aug 22 19:39:06 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (HURDLIBS): Add libshouldbeinlibc.
	Remove rules for error.o.

Fri Jul 21 17:51:33 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* pager.c (diskfs_get_filemap): Free initial reference created by
 	pager_create.

	* pager.c (diskfs_get_filemap): Avoid race with simultaneous
	termination by looping until we win.
	(pager_clear_user_data): Only clear UPI->np->dn->fileinfo if it
	still points to us.

Thu Jul  6 15:33:24 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile: Removed dependencies that are now automatically
 	generated.

Thu Jul  6 13:36:25 1995  Miles Bader  <miles@geech.gnu.ai.mit.edu>

	* pager.c (diskfs_pager_users): New function.

Tue Jun 27 13:08:33 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* pager.c (pager_unlock_page): Declare BLOCK volatile.

Sat Jun 24 17:59:36 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (HURDLIBS): Add libihash.

	* ext2fs.c (thread_cancel): Dummy function.

	* dir.c (diskfs_direnter): Move assignment out of test.
	(diskfs_get_directs): Fix print-format types.
	* ialloc.c (diskfs_free_node): Fix print-format types.

	* pager.c (thread_function): New function.
	(create_disk_pager): Make a new thread to service paging requests.
	* ext2fs.c (main): Have the initial thread die when it's done, leaving
	other thread to do the work.

	* pager.c (pager_bucket): New variable.
	(pager_list_lock, file_pager_list): Variables deleted.
	(create_disk_pager): Create pager_bucket.
	(create_disk_pager, diskfs_get_filemap): Pass pager_bucket to
	pager_create.
	(pager_traverse): Function deleted.
	(diskfs_get_filemap, pager_clear_user_data): Don't add/remove UPI
	to/from the pager list, as there isn't any.
	(diskfs_shutdown_pager, diskfs_sync_everything): Use
	ports_bucket_iterate on pager_bucket to go through all the pagers,
	instead of pager_traverse.
	(diskfs_file_update, pager_traverse, allow_pager_softrefs,
	drop_pager_softrefs): Change pager [un]ref calls to use the new ports
	ref calls directly instead.
	(pager_dropweak): New function (does nothing).
	* ext2fs.h (struct user_pager_info): Remove the next & prevp fields.

	* truncate.c (force_delayed_copies, enable_delayed_copies): Change
	pager [un]ref calls to use the new ports ref calls directly instead.
	* inode.c (diskfs_lost_hardrefs): Ditto.

	* inode.c (diskfs_node_iterate): New function.
	(write_all_disknodes): Re-implemented using diskfs_node_iterate.

Wed Jun 14 16:19:49 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* inode.c (diskfs_get_translator): Conform to new memory usage
        semantic.

Fri May 19 20:56:51 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* ext2fs.c (main): Use options_parse & diskfs_standard_startup_options
	to do command line options parsing.
	(long_opts): Was `options'.  Most things removed, as
	they're now handled by libdiskfs.
	(parse_opt): New routine to deal with our few meagre remaining
	options in the approved options_parse manner.

Mon May 15 15:55:49 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* ext2fs.c (main, usage, options): Add --writable & --nosync options.

Sat May 13 20:04:55 1995  Miles Bader  <miles@duality.gnu.ai.mit.edu>

	* inode.c (diskfs_set_statfs): Set st->fsys_stb_bsize, not _fsize,
	to the block size.

Sat May 13 05:02:59 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (OBJS): Remove exec_server_image.o.
	(exec_server_image.o): Rule removed.

Fri May 12 15:23:02 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* ext2fs.c (main): Add an optional argument to the --sync option
	that lets the user specify an initial sync interval.

Thu May 11 13:30:06 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* pager.c (pager_unlock_page): Give an explanation of why the file
	system will shortly crash.

	* balloc.c (ext2_free_blocks, ext2_new_block): Get rid of the
	CHECK_STRICT variable, and just always do the tests it controlled.
	* ext2fs.h: Get rid of the CHECK_STRICT variable.

	* ext2fs.h (ext2_error, ext2_warning, ext2_panic, all callers changed):
	Make these into macros that automagically supply the caller's
	function name, and rename the original functions (which these
	macros call) to have an underline prefix.
	* ext2fs.c (ext2_error, ext2_warning, ext2_panic): Rename to add
	the underline prefix.  Also rearrange a bit to hold the lock
	around the use of the global message buffer.

	* ext2fs.c (main): Enable the bootstrap code.

	* inode.c (read_disknode): Make st_blksize larger: 2 * pagesize.

Wed May 10 14:03:34 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* getblk.c (block_getblk, inode_getblk): Return ENOSPC instead of
	EIO when we can't allocate a new block.

	* bitmap.c (find_next_zero_bit): Fix stupid typos (present in the
	original linux source I copied this function from!) which were
	causing occasional garbage results.

Tue May  9 18:08:41 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* ext2fs.h (DONT_CACHE_MEMORY_OBJECTS): Don't define this any
	more, as the bugs we were using it to catch are supposedly gone :-|