2008-06-10  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	* dev.c (dev_buf_rw, buffered_rw, dev_rw): Remove inline qualifier from
	parameters `buf_rw'.

2006-06-15  Thomas Schwinge  <tschwinge@gnu.org>

	* open.c (open_seek): Seek into the correct direction for `SEEK_END'.
	Return EINVAL if file pointer would become negative.

2005-01-08  Marco Gerards  <metgerards@student.han.nl>

	* storeio.c (trivfs_modify_stat): Don't initialize st_blocks.

2002-06-22  Roland McGrath  <roland@frob.com>

	* storeio.c (parse_opt): Fix fencepost error in -n arg parsing.
	Reported by Nicola Girardi <nicola@g-n-u.de>.

2002-06-13  Roland McGrath  <roland@frob.com>

	* io.c (trivfs_S_io_read, trivfs_S_io_write): off_t -> loff_t.
	Fix DATA argument type.
	(trivfs_S_file_sync): Add missing last arg.

2002-05-08  Roland McGrath  <roland@frob.com>

	* pager.c (pager_read_page, pager_write_page): int -> size_t

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

	* dev.c (dev_read): Return success with *LEN = 0 when reading
	exactly at the end of the store.

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

	* dev.h (struct dev): New member `no_fileio' (flag).
	* storeio.c (options): Add --no-file-io/-F.
	(parse_opt): Parse it to set PARAMS->dev->no_fileio.
	(trivfs_append_args): Add --no-file-io if it's set.
	* dev.c (dev_open): Pass STORE_NOFILEIO flag if DEV->no_fileio is set.

2001-08-12  Neal H Walfield  <neal@cs.uml.edu>

	* pager.c: Include <errno.h>.
	(pager_read_page): Use memset, not bzero.
	* storeio.c (check_open_hook): Typo fix in comment.
	(trivfs_modify_stat): STORE->size is a store_offset_t.
	It not a vm_size_t.

2001-05-06  Marcus Brinkmann  <marcus@gnu.org>

	* dev.c (dev_open): Do not create/open the store with
	STORE_INACTIVE, as this doesn't work correctly.  Inactivate the
	store afterwards instead.

2001-02-18  Marcus Brinkmann  <marcus@gnu.org>

	* dev.h (struct dev): New member nperopens.
	* storeio.c (open_hook): Hold device lock and check if this is the
	first open.  If yes, activate the store.
	(close_hook): Hold global_lock and check if this was the last
	open.  If yes, inactivate the store.
	* dev.c (dev_open): Open the store with STORE_INACTIVE
	(in store_parsed_open as well as in store_create).

2001-01-17  Roland McGrath  <roland@frob.com>

	* dev.c (dev_buf_discard): Don't check AMOUNT if store_write failed.

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

	* dev.c (dev_open): Add missing argument `classes' to invocation
	of store_create.

	* dev.h: Include <hurd/trivfs.h> for struct trivfs_control.

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

	* storeio.c (parse_opt): Set PARAMS->store_params.store_optional.
	(storeio_fsys): New global variable.
	(main): Use it.
	* dev.h: Declare it.
	* dev.c (dev_open): If DEV->store_name is null, open the underlying
	node using store_create.

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-03-19  Roland McGrath  <roland@baalperazim.frob.com>

	* io.c: Comments.

	* dev.h (struct dev): New members store_name, readonly, rdev.
	(dev_is_readonly): New inline function.
	* dev.c (dev_open): Take just one arg, a struct dev whose store==0.
	(dev_close): Shut down the store, but leave DEV intact with store==0.
	* storeio.c (struct storeio_argp_params): New type.
	(device, device_lock, store_name): Variables removed.
	(readonly, inhibit_cache, enforce_store, rdev): Likewise.
	These are all now members in struct storeio_argp_params or struct dev;
	rdev now uses dev_t instead of int.
	(parse_opt): Find a struct storeio_argp_params in STATE->input
	and fill it in accordingly.  Use makedev macro to construct rdev.
	(trivfs_append_args): Find options in struct dev off control hook.
	Use major, minor macros.
	(main): Make DEVICE a local here, and point FSYS->hook at it.
	Don't modify trivfs_allow_open.
	(getroot_hook): New static function.
	(trivfs_getroot_hook): New variable, initialized to that.
	(check_open_hook): Find struct dev in CNTL->hook and
	use new dev_open interface.  Use dev_is_readonly.
	(open_hook): Find struct dev in PEROPEN->cntl->hook and
	check DEV->store.
	(trivfs_modify_stat): Find struct dev in CRED->po->cntl->hook.
	Use dev_is_readonly.
	(trivfs_goaway): Find struct dev in FSYS->hook and use its lock.
	(trivfs_S_fsys_syncfs): Find struct dev in CNTL->hook.

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

	* storeio.c (trivfs_modify_stat): Clear writable bits if open store is
	readonly, not just if we got the --readonly switch.

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

	* dev.c (dev_read, dev_write): In DEV->inhibit_cache case,
	handle zero (i.e. unknown) block_size by treating it as 1.
	Use shift and bitwise-and rather than multiply and modulus
	for block size arithmetic, since it's a known power of two.

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

	* io.c (trivfs_S_file_get_storage_info): Fail with EOPNOTSUPP when
	there is no store open.

	* storeio.c (check_open_hook): Don't check for D_NO_SUCH_DEVICE here.
	Translation to ENXIO now done in libstore.

	* dev.h (struct dev): New member `enforced'.
	* storeio.c (enforce_store): New variable.
	(options, parse_opt, trivfs_append_args): Grok new option
	--enforced/-e to set enforce_store.
	(check_open_hook): Set DEVICE->enforced from enforce_store.
	* io.c (trivfs_S_file_get_storage_info): If DEV->enforced is set
	and the store flags lack STORE_ENFORCED, then return STORAGE_OTHER.

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

	* io.c: Reverted changes related to io_map_segment.

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

	* io.c (trivfs_S_io_map): Renamed to ...
	(trivfs_S_io_map_segment): ... here, and accept parameter `index'.

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

	* dev.c (dev_read: ensure_buf): Fix sloppy bugs in last change.

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

	* dev.c (dev_open): Use mmap instead of vm_allocate.
	(dev_read): Likewise.

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

	* dev.c: Add #include <sys/mman.h> for munmap decl.
	* pager.c: Likewise.

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

	* dev.c (dev_buf_fill): Use munmap instead of vm_deallocate.
	(dev_close): Likewise.
	(dev_read): Likewise.
	* pager.c (pager_write_page): Likewise.

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

	* storeio.c (check_open_hook): Translate D_NO_SUCH_DEVICE to ENXIO.

1999-05-09  Mark Kettenis  <kettenis@gnu.org>

	* pager.c (dev_stop_paging): Do not try to count ports in
	PAGER_PORT_BUCKET if it has not been created.

1999-04-30  Mark Kettenis  <kettenis@gnu.org>

	* storeio.c (trivfs_modify_stat): Do not assume that we have the
	device open in the caculation of st_mode.  If the device is not
	open, only return S_IFCHR if inhibit_cache is set.

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

	* storeio.c (trivfs_modify_stat): Return S_IFCHR if block size is 1.

	* storeio.c (trivfs_modify_stat): Return S_IFCHR iff inhibit_cache
	set, otherwsie S_IFBLK.  For a block-addressed device, S_IFCHR means
	"must do whole-block i/o".

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

	* io.c (trivfs_S_file_syncfs): Fix inverted test.
	Reported by OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>.

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

	* storeio.c (options): New option -c/--no-cache.
	(inhibit_cache): New variable.
	(parse_opt): Make -c set it.
	(trivfs_append_args): Report --no-cache if set.
	(check_open_hook): Pass inhibit_cache flag to dev_open.
	* dev.h (struct dev): New member `inhibit_cache'.
	(dev_open): Update decl.
	* dev.c (dev_open): Take new arg inhibit_cache, store in new dev.
	If set, don't initialize buf_offs, io_lock, pager, pager_lock.
	(dev_read, dev_write): If DEV->inhibit_cache is set, allow only
	whole-block i/o: EINVAL for non-whole-block attempts.
	* pager.c (dev_get_memory_object): If DEV->inhibit_cache is set, don't
	make our own pager; if store_map returns EOPNOTSUPP, so do we.

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

	* dev.c (dev_buf_fill): Add braces to silence gcc warning.

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

	* storeio.c (main): Fix return type to int, and use return.

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

	* pager.c (dev_get_memory_object): Deal with errors from
	pager_create properly.

	* pager.c (service_paging_requests): New args for
	ports_manage_port_operations_multithread.
	* storeio.c (main): Likewise.

1997-07-23  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (trivfs_S_io_readable, trivfs_S_io_read, trivfs_S_io_map):
	Return EBADF instead of EINVAL.
	(trivfs_S_io_select): Don't bother returning EBADF.

1997-07-22  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (trivfs_S_io_read): Return EINVAL instead of EBADF.
	(trivfs_S_io_map): Return EINVAL if CRED cannot be read or written.

1997-07-21  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (HURDLIBS): Add iohelp.

1997-07-17  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (trivfs_S_io_map): Pass PROT argument to dev_get_memory_object.
	* pager.c (dev_get_memory_object): Add PROT arg.  Use store_map.
	* dev.h (dev_get_memory_object): Add PROT arg.

1997-07-16  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager.c (pager_read_page): Initialize READ to 0.

	* pager.c (dev_get_memory_object): Implement correctly.
	(dev_stop_paging): Work entirely by flushing user pagers; don't kill pager.
	(pager_clear_user_data): Zero our pointer to the pager.

	* io.c (trivfs_S_io_map): Make sure there are enough references to
	MEMOBJ for both read & write ports.

Wed Feb 19 21:42:45 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeio.c (fsys_port_class, root_port_class, port_bucket,
	trivfs_protid_portclasses, trivfs_protid_nportclasses,
	trivfs_cntl_portclasses, trivfs_cntl_nportclasses): Variables removed.
	(main): Don't set or use port class/bucket variables, let
	trivfs_startup do it.
	Add FSYS variable.
	(doc): Make an initialized array.
	(parse_opt): New function (was nested in main).
	(argp, argp_kids): New variables (were nested in main).
	(trivfs_goaway): Get ROOT_PORT_CLASS from FSYS.

Fri Nov 15 17:54:10 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* storeio.c (trivfs_check_open_hook): New arg syntax.
	(check_open_hook): Likewise.

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

	* storeio.c (main): Use elements of type `struct argp_child' for KIDS.

Mon Oct  7 16:38:06 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* io.c (trivfs_S_file_get_storage_info): If necessary to enforce
 	security, make a copy of STORE and inactivate it before returning.

Thu Sep 26 14:26:17 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeio.c (trivfs_S_file_check_access): Function removed (trivfs
	default is now sufficient).

Tue Sep 24 15:52:04 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeio.c (trivfs_S_file_check_access): New function.
	(check_open_hook): Return EROFS if O_WRITE on a readonly device.

Mon Sep 23 17:21:23 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeio.c (trivfs_append_args): Make ARGZ_LEN of type `size_t *'.
	Narrow scope of BUF.
	<argz.h>: New include.

Thu Sep 19 18:12:48 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeio.c (trivfs_append_args): New function.

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

	* io.c (trivfs_S_io_read, trivfs_S_io_write): Use void * buffers.
	* open.h (open_read, open_write): Likewise.
	* open.c (open_read, open_write): Likewise.
	* dev.h (struct dev, dev_read, dev_write): Likewise.
	* dev.c (dev_buf_fill, dev_read, dev_write): Likewise.
	* pager.c (pager_read_page): Cast BUF into void ** for dev_read.

	* storeio.c (main): Use STORE_PARAMS variable to get result from
	parsing STORE_ARGP.

	* dev.c (dev_open): Remove CLASSES argument to store_parsed_open.

Thu Sep 19 17:18:11 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (HURDLIBS): New variable.
	(storeio): Deleted special dependencies.

Fri Sep 13 11:05:06 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* storeio.c (argp_program_version): New variable.
	<version.h>: New include.

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

	* dev.c (dev_rw): Return EINVAL instead of EIO for too-large offsets.

	* dev.c (dev_open, dev_close): Remove ifdef'd-out code for allocating
	DEV's buffer with valloc; other things depend on it being vm_allocated.

	* io.c (trivfs_S_file_get_storage_info): Use store_return.
