2002-04-30  Marcus Brinkmann  <marcus@gnu.org>

       * priv.h: Add OPT_NO_INHERIT_DIR_GROUP and OPT_INHERIT_DIR_GROUP.
       (_diskfs_no_inherit_dir_group): New declaration.
       * node-create.c (_diskfs_no_inherit_dir_group): New variable.
       (diskfs_create_node): Implement SysV group behaviour.
       * opts-common.c (diskfs_common_options): Add
       --no-inherit-dir-group (--nogrpdir, --sysvgroups) and
       --inherit-dir-group (--grpdir, --bsdgroups).
       * opts-append-std.c (diskfs_append_std_options): Add
       --no-inherit-dir-group if set.
       * opts-std-startup.c (parse_startup_opt): Add toggle for
       _diskfs_no_inherit_dir_group.
       * opts-std-runtime.c (struct parse_hook): Add noinheritdirgroup.
       (set_opts): Handle H->noinheritdirgroup.
       (parse_opt): Initialize H->noinheritdirgroup.  Handle
       OPT_NO_INHERIT_DIR_GROUP and OPT_INHERIT_DIR_GROUP.

2002-03-23  James A. Morrison  <ja2morri@uwaterloo.ca>

	* init-startup.c (_diskfs_init_completed): Use error, not
        fprintf.

2002-03-25  Neal H Walfield  <neal@cs.uml.edu>

	* peropen-make.c (diskfs_make_peropen): Instead of returning the
	peropen, return as error_t and return the peropen in the new
	parameter *PPO.
	* diskfs.h (diskfs_make_peropen): Change declaration to reflect
	new semantics.

	* boot-start.c (diskfs_start_bootstrap): Check the return value of
	diskfs_make_peropen using the new semantics.
	(diskfs_S_exec_startup_get_info): Likewise.
	(diskfs_execboot_fsys_startup): Likewise.
	(diskfs_S_fsys_init): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* file-exec.c (diskfs_S_file_exec):  Likewise.
	* file-reparent.c (diskfs_S_file_reparent): Likewise.
	* fsys-getfile.c (diskfs_S_fsys_getfile): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* trans-callback.c (_diskfs_translator_callback2_fn): Likewise.
	* init-startup.c (diskfs_startup_diskfs): Likewise.

2002-03-12  Marcus Brinkmann  <marcus@gnu.org>

	* opts-append-std.c (diskfs_append_std_options): Only add --sync=N
	or --no-sync option if it is not the default.

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

	* dir-mkfile.c (diskfs_S_dir_mkfile): Clear OPENONLY_STATE_MODES bits
	from FLAGS, not all bits outside O_RDWR|O_EXEC.

2002-03-05  Marcus Brinkmann  <marcus@gnu.org>

	* diskfs.h: Refer to dir_lookup, not dir_pathtrans, in comment.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	Reported by James A Morrison <ja2morri@student.math.uwaterloo.ca>.

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

	* dir-lookup.c (diskfs_S_dir_lookup): Clear S_ITRANS bits in MODE.
	* dir-mkdir.c (diskfs_S_dir_mkdir): Likewise.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.

	* file-chmod.c (diskfs_S_file_chmod): Preserve S_ITRANS bits in change.

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

	* boot-start.c (diskfs_start_bootstrap) [KERN_INVALID_LEDGER]:
	Pass extra arguments to task_create for OSF variant.

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

	* disk-pager.c (fault_handler): Use sc_pc instead of sc_eip.

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

	* dir-lookup.c (diskfs_S_dir_lookup): Append trailing / to RETRYNAME
	returned for absolute symlink when MUSTBEDIR is set.
	Reported by Moritz Schulte <moritz@duesseldorf.ccc.de>.
	Also, bcopy -> memcpy; avoid strcat.

2001-10-30  Marcus Brinkmann  <marcus@gnu.org>

	* dir-lookup.c (diskfs_S_dir_lookup): When looking up the next
	pathname component, remove assertion for DS and allocate DS if 0.
	Allow creation of files through symlink with non-existant target.
	From Roland McGrath <roland@frob.com>.

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

	* dir-renamed.c (diskfs_rename_dir): Fix bogus assert.
	From Moritz Schulte <moritz@chaosdorf.de>.

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

	* file-getfh.c (diskfs_S_file_getfh): Fix tag of diskfs_fhandle.
	Submitted by Maurizio Boriani <baux@debian.org>.

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

        * opts-std-startup.c (startup_options): New compatibility
        option: bootflags, a hidden alias to multiboot-command-line.
        (parse_startup_opt): Bug fix.

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

	* opts-std-startup.c: diskfs_boot_flags -> diskfs_boot_command_line.
	(OPT_BOOT_CMDLINE): Renamed from OPT_BOOTFLAGS.
	(startup_options): --bootflags -> --multiboot-command-line
	(parse_startup_opt): Parse it.
	* diskfs.h: diskfs_boot_flags -> diskfs_boot_command_line.
	(diskfs_boot_filesystem): New macro.
	* init-main.c (diskfs_init_main): Use it.
	* init-init.c (diskfs_init_diskfs): Likewise.
	* console.c (diskfs_console_stdio): Likewise.
	* boot-start.c (_diskfs_boot_privports): Likewise.
	(diskfs_start_bootstrap): Split boot_command_line into words and pass
	those arguments to init instead of diskfs_bootflags.

	* opts-std-startup.c (_diskfs_boot_pause): New variable.
	(OPT_BOOT_PAUSE): New macro.
	(startup_options): Add --boot-debug-pause.
	(parse_startup_opt): Parse it.

	* diskfs.h: Declare it.
	* boot-start.c (diskfs_start_bootstrap, start_execserver): Use it.

	* boot-start.c (diskfs_boot_init_program): New variable.
	* diskfs.h: Declare it.
	* boot-start.c (default_init): Variable removed.
	(diskfs_start_bootstrap): Use diskfs_boot_init_program instead
	of default_init or prompting under -i.
	* opts-std-startup.c (OPT_BOOT_INIT_PROGRAM): New macro.
	(startup_options): Add --boot-init-program.
	(parse_startup_opt): Parse it.

2001-06-21  Neal H Walfield  <neal@cs.uml.edu>

	* file-getcontrol.c (diskfs_S_file_getcontrol):  When checking
	if we can give the control port out, use fshelp_iscontroller
	rather than doing the check by hand.

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

	* dir-lookup.c (diskfs_S_dir_lookup): Handle symlinks to "".

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

	* file-set-trans.c (diskfs_S_file_set_translator): Add some parens.

2001-04-01  Neal H Walfield  <neal@cs.uml.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Use
	iohelp_create_empty_iouser.
	* fsys-getfile.c (diskfs_S_fsys_getfile): Use
	iohelp_create_complex_iouser.
	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Use
	new iohelp_reauth semantics.
	* io-restrict-auth.c (diskfs_S_io_restrict_auth): Use
	new iohelp_create_iouser semantics.
	* protid-make.c (diskfs_finish_protid): Use
	iohelp_create_simple_iouser and new iohelp_dup_iouse
	semantics.
	* trans-callback.c (_diskfs_translator_callback2_fn):
	Use iohelp_create_simple_iouser.

2001-06-15  Neal H Walfield  <neal@cs.uml.edu>

	* file-set-trans.c (diskfs_S_file_set_translator):  If
	FS_TRANS_ORPHAN is set, do not ask the active translator to go
	away, just disconnect it.

2001-06-15  Roland McGrath  <roland@frob.com>

	* Makefile (FSSRCS): Last change got botched in merging.

2001-06-10  Neal H Walfield  <neal@cs.uml.edu>

        * file-inv-trans.c: Remove this file, function no longer exists.
        * Makefile (FSSRCS): Remove reference to file-inv-trans.c.

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

	* file-exec.c: Initialize GID with st_gid rather than st_uid.

2001-04-22  Neal H Walfield  <neal@cs.uml.edu>

	* Makefile (OTHERSRCS): Add extern-inline.c.
	* diskfs.h (DISKFS_EXTERN_INLINE): New macro.
	(diskfs_spawn_first_thread): Update prototype to include the
	additional parameter, a demuxer.
	(diskfs_begin_using_protid_port): Moved and renamed function
	begin_using_protid_port from priv.h.
	(diskfs_end_using_protid_port): Moved and renamed function
	end_using_protid_port from priv.h.
	* extern-inline.c: New file.
	* fsmutations.h (FILE_INTRAN): Use new function name.
	(FILE_DESTRUCTOR): Likewise.
	(IO_INTRAN): Likewise.
	(IO_DESTRUCTOR): Likewise.
	* init-first.c: Include <hurd/ports.h>.
	(master_thread_function): Unnamed parameter is now the demuxer.
	Use that rather than diskfs_demuxer directly.
	(diskfs_spawn_first_thread): New parameter DEMUXER.
	* init-main.c (diskfs_init_main): Pass diskfs_demuxer to
	diskfs_spawn_first_thread to conform to new semantics.
	* priv.h (begin_using_protid_port): Moved to diskfs.h.
	(end_using_protid_port): Likewise.

2001-04-14  Neal H Walfield  <neal@cs.uml.edu>

	* node-create.c (diskfs_create_node):  If we fail, set *NEWNODE
	to NULL; at least diskfs_S_dir_lookup depends on this behavior.

	* init-startup.c (diskfs_startup_diskfs): Use ERR, not errno, so
	we can actually read this variable in a debugger.

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

        * io-write.c (diskfs_S_io_write): Make local variable OFF an
        off_t and not an int.
        * io-read.c (diskfs_S_io_read): Likewise.
        * io-stat.c (diskfs_S_io_stat): Use memcpy, not bcopy.

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

	* io-interrupt.c: Obsolete file removed.
	* Makefile (IOSRCS): Remove it from the list.
	Reported by Neal H Walfield <neal@cs.uml.edu>.

2001-03-28 Neal H Walfield  <neal@cs.uml.edu>

	* protid-rele.c: Doc typo fix.

        * shutdown.c: Move initialization of diskfs_fsys_lock from here ...
        * init-init.c: ... to here with the rest of the initialization
        code.

        * init-init.c: Do not initialize global variables to zero.

        * protid-rele: Doc fix.
        * node-nput.c: Likewise.
        * io-prenotify.c: Likewise.

        * dir-chg.c (diskfs_S_dir_notice_changes): Check what malloc
        returns.
        * peropen-make.c (diskfs_make_peropen): Likewise.

        * io-identity.c (diskfs_S_io_identity): Use INUM; that is what
        we bothered getting the lock for.

	* ports-noports.c, ports-clean.c, ports-soft.c, ports-idle.c,
	ports-consts.c: Dead files finally removed from cvs.

2001-03-28  Marcus Brinkmann  <marcus@gnu.org>

	* dir-lookup.c (diskfs_S_dir_lookup): New variable USER. Store new
	iouser in that variable and free it after creating the protid for
	DIRPORT.
	* trans-callback.c (_diskfs_translator_callback2_fn): Likewise.
	* io-restrict-auth.c (diskfs_S_io_restrict_auth): Likewise.
	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Likewise.

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

	* readonly-changed.c: New file.
	* Makefile (OTHERSRCS): Add it.

	* init-first.c: Include <stdlib.h> for exit decl.

2001-01-30  Neal H Walfield   <neal@cs.uml.edu>

	* diskfs.h: Fix comment (fsys_shutdown -> fsys_goaway).

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

	* diskfs.h: Make diskfs_dirstat_size const.

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

	* file-statfs.c: Include <string.h>.

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

	* file-statfs.c (diskfs_S_file_statfs): Zero out the struct statfs
	before calling diskfs_set_statfs.  Set f_namelen to diskfs_name_max
	after the call.
	* diskfs.h: Update comment.

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

	* node-times.c (diskfs_set_node_times): Make individual flag checks
	race-proof so we don't lose any flag settings.

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-18  Thomas Bushnell, BSG  <tb@mit.edu>

	* io-seek.c (diskfs_S_io_seek): Don't use CHANGE_NODE_FIELD
	anymore; it was causing problems and was a gross hack anyway.

2000-05-14  Marcus Brinkmann  <Marcus.Brinkmann@ruhr-uni-bochum.de>

	* priv.h (DEFAULT_SYNC_INTERVAL): New macro.
	(DEFAULT_SYNC_INTERVAL_STRING): Likewise.
	(STRINGIFY): Likewise.
	(STRINGIFY_1): Likewise.
	* opts-common.h (diskfs_common_options): Use
	DEFAULT_SYNC_INTERVAL_STRING instead hardcoded value.
	* sync-default.h: Include "priv.h". Use DEFAULT_SYNC_INTERVAL
	instead hardcoded value.

2000-04-29  Marcus Brinkmann  <Marcus.Brinkmann@ruhr-uni-bochum.de>

	* init-main.c (diskfs_init_main): Dereference BOOTSTRAP before
	checking for MACH_PORT_NULL.

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

	* file-exec.c (diskfs_S_file_exec): Fix typo and braino in last change.
	* init-startup.c (diskfs_startup_diskfs): Fix braino in last change.

2000-03-17  Thomas Bushnell, BSG  <tb@mit.edu>

	* boot-start.c (diskfs_S_fsys_init, diskfs_start_bootstrap): Don't
	use MOVE_SEND in Hurd RPC.

	* file-exec.c (diskfs_S_file_exec): Don't use MAKE_SEND in Hurd
	RPC.
	* init-startup.c (diskfs_startup_diskfs, _diskfs_init_completed):
	Likewise.

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

	* dir-lookup.c (diskfs_S_dir_lookup): Use ports_get_send_right.

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Use
	ports_get_send_right.

	* boot-start.c (diskfs_start_bootstrap): Use ports_get_send_right.
	(diskfs_execboot_fsys_startup): Use ports_get_send_right.
	(diskfs_S_fsys_init): Use ports_get_send_right.
	(start_execserver): Use ports_get_send_right.

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

	* file-exec.c (diskfs_S_file_exec): Give the new peropen for the exec
	server O_EXEC permission as well as O_READ.

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

	* dir-lookup.c (diskfs_S_dir_lookup): Follow symlink despite flags if
	MUSTBEDIR is set (i.e. there was a trailing slash).

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

	* rdwr-internal.c (_diskfs_rdwr_internal): Short-circuit return for
	zero-length transfer to avoid side effects, as POSIX requires.

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

	Rewrite of a fix provided by Bill White <bill.white@griggsinst.com>:
	* fhandle.h (union diskfs_fhandle): Replaces struct diskfs_fhandle.
	Use a union element of char[28] to ensure size requirement.
	* fsys-getfile.c (diskfs_S_fsys_getfile): Update uses for new type.
	* file-getfh.c (diskfs_S_file_getfh): Likewise.

1999-12-02  Mark Kettenis  <kettenis@gnu.org>

	* io-read.c (diskfs_S_io_read): Add braces to silence gcc
	warning.

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

	* priv.h (_diskfs_chroot_directory): Remove const from type.
	* init-startup.c (_diskfs_chroot_directory): Likewise.

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

	* disk-pager.c (fault_handler): Put more detail in assert failures.

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

	* node-nput.c (diskfs_nput): Call diskfs_set_node_times before
	diskfs_lost_hardrefs.  This should address the late mtime update
	bug reported and investigated by Mark Kettenis.

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

	* sync-interval.c (periodic_sync): With diskfs_fsys_lock reader lock
	held, check _diskfs_diskdirty and don't sync if not dirty.

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

	* opts-std-startup.c (TOGGLE): Fix `off' case.
	Reported by Kalle Olavi Niemitalo <tosi@ees2.oulu.fi>.

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

	* io-pathconf.c (diskfs_S_io_pathconf): Cap diskfs_name_max to size
	representable in struct dirent.d_namlen.
	(diskfs_S_io_pathconf): Always return 1 for _PC_NO_TRUNC, since we
	always constrain diskfs_name_max.

	* lookup.c (diskfs_lookup): Enforce diskfs_name_max limit for CREATE
	and RENAME, returning ENAMETOOLONG for violations.
	* io-pathconf.c (diskfs_S_io_pathconf): _PC_NO_TRUNC controlled by
	diskfs_name_max setting.

	* diskfs.h (diskfs_name_max): Declare new variable.
	* io-pathconf.c (diskfs_S_io_pathconf): Use it for _PC_NAME_MAX,
	capping it to 1024.

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

	* opts-std-runtime.c (parse_opt: ARGP_KEY_INIT): Initialize H->noatime.

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

	* dir-readdir.c (diskfs_S_dir_readdir): Take new DATA_DEALLOC param.

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

	* lookup.c (diskfs_lookup): Rewrite code from last change, which had
	typos (and then I just decided to change the details of the string
	diddling).

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

	* lookup.c (diskfs_lookup): NAME is no longer const.  Update
	documentation.  Strip leading and trailing slashes from NAME before
	using it.
	* diskfs.h (diskfs_lookup): NAME is no longer const.
	Update documentation.

1999-10-05  Thomas Bushnell, BSG  <tb@mit.edu>

	* priv.h (CHANGE_NODE_FIELD): Use diskfs_check_readonly instead of
	directly reading diskfs_readonly.

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

	* node-times.c (diskfs_set_node_times): Don't implement
	_diskfs_noatime here.
	* conch-fetch.c (iohelp_fetch_shared_data): Don't update
	dn_set_atime on affected node if _diskfs_noatime.
	* rdwr-internal.c (_diskfs_rdwr_internal): Likewise.

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

	* node-times.c (diskfs_set_node_times): If _diskfs_noatime is set and
	neither NP->dn_set_mtime nor NP->dn_set_ctime is set, clear
	NP->dn_set_atime.  Short-circuit return if none of dn_set_?time set.
	* opts-common.c (diskfs_common_options): Include "priv.h".
	Add aliases --ro/--rw for -r/-w.  Add alias --nosuid for --no-suid,
	--noexec for --no-exec. Move --suid-ok, --exec-ok here from ...
	* opts-std-runtime.c (std_runtime_options): ... here.
	(struct parse_hook): New member `noatime'.
	(set_opts): Use H->noatime to set _diskfs_noatime.
	(parse_opt): Grok -A and OPT_ATIME to set/clear H->noatime.
	(OPT_ATIME): New macro.
	(OPT_SUID_OK, OPT_EXEC_OK): Moved to ...
	* priv.h: ... here.
	(diskfs_common_options): Add const to decl.
	* opts-std-startup.c (parse_startup_opt): Grok OPT_SUID_OK,
	OPT_EXEC_OK, -A, and OPT_ATIME.
	* init-init.c (_diskfs_noatime): New variable.
	(_diskfs_nosuid, _diskfs_noexec): Use uninitialized defns.
	* opts-append-std.c (diskfs_append_std_options): Add --no-atime if
	_diskfs_noatime is set.

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

	* Makefile, rdwr-internal.c, io-map.c, io-map-segment.c, diskfs.h:
	Reverted changes related to io_map_segment.

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

	* io-pathconf.c: Include <unistd.h>.
	(diskfs_S_io_pathconf): Provide real definition.

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

	* io-map-segment.c: New file.  Guts from io-map.c.
	* io-map.c (diskfs_S_io_map): Just call diskfs_S_io_map_segment.
	* diskfs.h (diskfs_get_filemap): New parameter `index'.
	* rdwr-internal.c (_diskfs_rdwr_internal): Pass additional
	parameter to diskfs_get_filemap.
	* Makefile (IOSRCS): Add io-map-segment.c.

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

	* dir-rmdir.c (diskfs_S_dir_rmdir): Fix bugs in last change.
	Replace label `out' with local inline function `done'.
	Don't try diskfs_nput (NP) when NP is null.

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

	* dir-link.c (diskfs_S_dir_link): Fix error checks on ports.
	If DIRCRED (receiver port) is bad, return EOPNOTSUPP.
	If FILECRED (argument port) is bad, return EXDEV (after EROFS check).

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

	* boot-start.c (diskfs_S_exec_startup_get_info): Typo in last change.

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

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

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

	* boot-start.c (diskfs_S_exec_startup_get_info): Use mmap instead
	of vm_allocate.
	(diskfs_S_fsys_init): Likewise.
	* file-get-trans.c (diskfs_S_file_get_translator): Likewise.
	* file-getfh.c (diskfs_S_file_getfh): Likewise.
	* io-read.c (diskfs_S_io_read): Likewise.

Mon Jul  5 20:03:18 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* node-nputl.c (diskfs_nput_light): Fix typo in function
	declaration.  Reported by Yamashita TAKAO
	(jargon@lares.dti.ne.jp).

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

	* file-get-trans.c (diskfs_S_file_get_translator): Use munmap
	instead of vm_deallocate.
	* io-read.c (diskfs_S_io_read): Likewise.
	* protid-rele.c (diskfs_protid_rele): Likewise.

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

	* node-nref.c: New file; guts from diskfs.h.
	* node-nput.c: Likewise.
	* node-nrele.c: Likewise.
	* node-nrefl.c: Likewise.
	* node-nputl.c: Likewise.
	* node-nrelel.c: LIkewise.
	* diskfs.h (diskfs_nref, diskfs_nput, diskfs_nrele,
	diskfs_nref_light, diskfs_nput_light, diskfs_nrele_light): Replace
	inline definitions with ordinary declarations.
	(DISKFS_EI): Removed macro.
	* diskfs.c: Deleted file.
	* Makefile (OTHERSRCS): Added node-nref.c, node-nput.c
	node-nrele.c, node-nrefl.c, node-nputl.c, node-nrelel.c.  Removed
	diskfs.c.

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

	* dev-globals.c, dev-io.c, dev-open.c: Files removed.

	* lookup.c (diskfs_lookup): If we get an error from
	fshelp_checkdirmod, clear *NP as well as returning the error.
	Use diskfs_nrele instead of diskfs_nput in case *NP and DP are
	the same.

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

	* dir-rmdir.c (diskfs_S_dir_rmdir): Reorganized to make clearer;
	several little buglets fixed too.

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

	* sync-default.c (diskfs_default_sync_interval): Reduce to five
	seconds.  Hardware is much different than when Unix originally
	picked thirty, plus we manage VM differently than the Unix buffer
	cache did, and tend to delay many more writes than Unix did.

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

	* file-get-trans.c (diskfs_S_file_get_translator): Fix type cast in
	last change.

	* file-get-trans.c (diskfs_S_file_get_translator): If we return an
	error, vm_deallocate any vm_allocated memory.
	From Mark Kettenis <kettenis@gnu.org>.

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

	* boot-start.c (diskfs_start_bootstrap): Pass environment collected
	from `environ' on to init.  The kernel can send more parameters
	through this way without us knowing about them specifically.

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

	* console.c (diskfs_console_stdio): If there is an fd 2 that appears
	to work, just leave it as is and dup2 it to fd 1 as well.

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

	* file-chown.c (diskfs_S_file_chown): Fix last change: not just
	permission check, actually don't make the change if value is -1.

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

	* file-chown.c (diskfs_S_file_chown): Either arg being -1 means don't
	change that id.

Tue Apr  6 10:05:49 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* dir-renamed.c (diskfs_rename_dir): Stage 1, if TNP == FNP, we
	have to unlock TNP with diskfs_nput and not just diskfs_nrele it.

Tue Mar 16 17:20:06 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* lookup.c (diskfs_lookup): Reformat for prettiness.

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

	* io-revoke.c (diskfs_S_io_revoke): Use ports_class_iterate.
	* readonly.c (diskfs_set_readonly): Likewise.

Mon Feb 22 04:28:56 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* io-revoke.c (diskfs_S_io_revoke): Protect the actual revocation
	by blocking all other rpcs.

Sat Feb 20 20:46:21 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* io-revoke.c (diskfs_S_io_revoke): Release NP->lock before
	beginning iteration.

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

	* io-revoke.c (diskfs_S_io_revoke): Fix typo in 1999-02-16 change.

	* init-startup.c (diskfs_startup_diskfs): Fix typo 1999-02-12 change.

Tue Feb 16 05:31:23 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* io-revoke.c: New file.
	* Makefile (IOSRCS): Add io-revoke.c.

Sat Feb 13 04:29:29 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* peropen-make.c (diskfs_make_peropen): If there is no existing
	context, then set the shadow_root iff we are a chrooted virtual
	root filesystem.

1999-02-12  Gordon Matzigkeit  <gord@trick.fig.org>

	* init-startup.c (diskfs_startup_diskfs): Release the virtual
	root's lock as soon as we've checked that it's a valid directory.
	Ignore leading slashes in _diskfs_chroot_directory.

Sun Jan 31 18:24:33 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* file-utimes.c (diskfs_S_file_utimes): Implement new semantics
	for setting to exactly present time.

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

	* Makefile (OTHERSRCS): Add init-main.c.

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

	* init-main.c: New file, defining new function diskfs_init_main.
	* diskfs.h: Declare diskfs_init_main.

	* file-set-trans.c: Remove makedev, major, minor macro definitions.
	* dir-lookup.c: Likewise.

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

	* sync-interval.c (diskfs_set_sync_interval): Use ENOMEM, not EIEIO.

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

	Use a struct hurd_port for the cached exec server port,
	so it is properly reference-counted and locked.
	* boot-start.c (diskfs_exec): Variable removed.
	(diskfs_start_bootstrap): Make it a local here.
	Install that port in _diskfs_exec_portcell.
	(diskfs_S_fsys_init): Use _diskfs_exec_portcell instead
	of diskfs_exec.
	* init-init.c (_diskfs_exec_portcell): New variable.
	(diskfs_init_diskfs): Initialize it.
	* priv.h: Declare it.
	* diskfs.h (diskfs_exec, diskfs_exec_ctl): Remove decls.
	* file-exec.c (diskfs_S_file_exec): Use _diskfs_exec_portcell instead
	of diskfs_exec.

	* init-completed.c: File removed (obsolete since 1996).

	* boot-start.c (diskfs_start_bootstrap): Twiddle boot-time messages.

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

	* boot-start.c (_diskfs_boot_privports): Renamed from diskfs_*.

	* priv.h: Declare it.
	* console.c (diskfs_console_stdio): Change caller.

	* file-statfs.c (diskfs_S_file_statfs): Remove __ from struct members.

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

	* file-statfs.c (diskfs_S_file_statfs): Initialize mount options
	in statbuf.

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

	* opts-std-startup.c (startup_options): Move -C above "Boot options:",
	give it a docstring.  Docstrings for --bootflags, --boot-command.
	(_diskfs_boot_command): New variable.
	(startup_options, parse_startup_opt): New option --boot-command,
	consumes remaining args to set _diskfs_boot_command.
	* priv.h: Declare _diskfs_boot_command.
	* boot-start.c (diskfs_start_bootstrap): If diskfs_exec_server_task is
	null, assume we are running as the boot command and have a root with
	/servers/exec.
	If _diskfs_boot_command is set, start that command in place of init.
	If can't lookup initname, print error msg and loop to prompt.
	Put a newline before "Init name" prompt.
	After starting exec server, try to set active trans on /servers/exec.
	(diskfs_boot_getpriv): New function: if _hurd_host_priv
	is null, use fsys_getpriv on our bootstrap port.
	(parent_task): New static variable, set there with fsys_getpriv call.
	(diskfs_S_fsys_init): If diskfs_exec_server_task is null, don't do
	anything with it; instead register parent_task as our child
	and send an fsys_init to our parent on our bootstrap port.
	* console.c (diskfs_console_stdio): Call diskfs_boot_privports before
	get_privileged_ports if diskfs_boot_flags is set.

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

	* file-exec.c (diskfs_S_file_exec): If exec server port is stale, try
	once to look up a new one.

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

	* boot-parse.c: File removed (it has been obsolete since 1995).

1998-11-29  Roland McGrath  <roland@baalperazim.frob.com>

	* trans-callback.c (_diskfs_translator_callback1_fn): Use size_t*
	instead of int* for ARGZ_LEN arg.

1998-11-25  Mark Kettenis  <kettenis@phys.uva.nl>

	* boot-start.c (diskfs_S_fsys_init): Call _hurd_proc_init with new
	args set to zero.

Wed Aug 12 23:35:59 1998  Thomas Bushnell, BSG  <tb@mit.edu>

	* file-chflags.c (diskfs_S_file_chflags): Only set
	NP->dn_set_ctime if we actually set the flags.

1998-10-26  Gordon Matzigkeit  <gord@trick.fig.org>

	* init-startup.c (diskfs_startup_diskfs): Use diskfs_nput to free
	the old diskfs_root_node when switching to a virtual root.

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

	* dir-lookup.c (diskfs_S_dir_lookup): Add braces to silence gcc
	warning.
	* io-identity.c (diskfs_S_io_identity): Likewise.
	* opts-append-std.c (diskfs_append_std_options): Likewise.
	* opts-std-runtime.c (set_opts): Likewise.

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

	* diskfs.h (diskfs_lookup_hard, diskfs_lookup,
	diskfs_set_translator, diskfs_create_symlink_hook,
	diskfs_notice_dirchange, diskfs_direnter, diskfs_direnter_hard,
	diskfs_dirrewrite, diskfs_dirremove,
	diskfs_create_node, diskfs_enter_lookup_cache,
	diskfs_check_lookup_cache, dir_rename_dir, diskfs_set_options):
	Add `const' qualifier to `char *' parameters where appropriate.
	* opts-set.c (diskfs_set_options): Fix defn with `const'.
	* node-create.c (diskfs_create_node): Likewise.
	* name-cache.c (diskfs_enter_lookup_cache): Likewise.
	(diskfs_check_lookup_cache): Likewise.
	* dirremove.c (diskfs_dirremove): Likewise.
	* dirrewrite.c (diskfs_dirrewrite): Likewise.
	* lookup.c (diskfs_lookup): Likewise.
	* direnter.c (diskfs_direnter): Likewise.
	* dir-renamed.c (diskfs_rename_dir): Likewise.
	* dir-chg.c (diskfs_notice_dirchange): Likewise.

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

	Add support for a "virtual root directory" specified at startup.
	* priv.h (_diskfs_chroot_directory): Declare new variable.
	* opts-std-startup.c (startup_options, parse_startup_opt): New
	string-valued option -C/--directory/--virtual-root/--chroot sets
	_diskfs_chroot_directory.
	* init-startup.c (_diskfs_chroot_directory): New variable.
	(diskfs_startup_diskfs): If that's set, look up the name and
	warp us to that as a virtual root directory.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Initialize new peropen's
	shadow_root_parent to null, and shadow_root to either null or,
	if _diskfs_chroot_directory is set, to diskfs_root_node.

	* dir-lookup.c (diskfs_S_dir_lookup): Treat a shadow_root with null
	shadow_root_parent as a "virtual root".

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

	* fsys-options.c (diskfs_S_fsys_get_options):
	fshelp_return_malloced_buffer renamed to iohelp_*.
	* file-get-fs-opts.c (diskfs_S_file_get_fs_options): Likewise.

Tue Aug 11 16:17:49 1998  Thomas Bushnell, BSG  <tb@mit.edu>

	* file-chflags.c (diskfs_S_file_chflags): Set NP->dn_set_ctime.

	* file-utimes.c (diskfs_S_file_utimes): Add file notifications.

Sun Aug  9 21:09:24 1998  Jose M. Moya  <josem@gnu.org>

	* diskfs.h (struct node): Add filemod_reqs member.
	(struct modreq): Rename struct dirmod to reqmod as it is used for
 	directory and file notifications.
	(diskfs_notice_filechange): Add prototype.
	* dir-chg.c (diskfs_S_dir_notice_changes): Check
 	nowait_dir_changed return value for errors.
	(diskfs_notice_dirchange): Remove requests when the notification
 	fails.
	* file-chg.c (diskfs_S_file_notice_changes): Implement.
	(diskfs_notice_filechange): New function.
	* node-make.c (diskfs_make_node): Initialize filemod_reqs.
	* node-drop.c (free_modreqs): New function.
	(diskfs_drop_node): Free filemod_reqs.
	* file-chauthor.c (dithkfth_TH_file_chauthor): Add file
 	notifications.
	* file-chflags.c (diskfs_S_file_chflags): Likewise.
	* file-chmod.c (diskfs_S_file_chmod): Likewise.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* file-set-size.c (diskfs_S_file_set_size): Likewise.
	* io-prenotify.c (diskfs_S_io_prenotify): Likewise.
	* io-write.c (diskfs_S_io_write): Likewise.
	* node-rdwr.c (diskfs_node_rdwr): Likewise.

Sat Aug  8 17:01:58 1998  Thomas Bushnell, BSG  <tb@mit.edu>

	* boot-start.c (diskfs_S_fsys_init): __vm_allocate -> vm_allocate
 	and __mach_task_self -> mach_task_self.  Reported by Mark Kettenis
 	(kettenis@phys.uva.nl).

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

	* shutdown.c (diskfs_shutdown): Sync and set the clean flag even if we
	don't shut down.  Thus a disk that was in use but hadn't been touched
	recently needn't necessarily be checked after a system crash.

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

	* dir-lookup.c (diskfs_S_dir_lookup: short_circuited_callback1): Fix
	type of arg `argz_len' to use size_t *.

Tue Jul 14 16:27:00 1998  Thomas Bushnell, n/BSG  <tb@mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Don't require the node to be
	a directory in the null pathname case.  (Thus reverting one of the
	changes of June 15, 1994.)

Mon Jun 29 18:54:23 1998  Thomas Bushnell, n/BSG  <tb@mit.edu>

	* lookup.c (diskfs_lookup): If NAME is empty, return an error.

Tue May 12 12:08:35 1998  Thomas Bushnell, n/BSG  <tb@mit.edu>

	* file-get-trans.c (diskfs_S_file_get_translator) [S_ISCHR ||
 	S_ISBLK]: Free BUF after using it.  Reported by Katusya Tanaka
 	(wyvern@pb3.so-net.ne.jp).

Tue Sep 23 15:28:57 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* file-reparent.c (diskfs_S_file_reparent): Use diskfs_nrele
 	instead of protocol-violating up-tree lock.
	* peropen-rele.c (diskfs_release_peropen): Likewise.

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

	* priv.h (fs_control_port): Declaration removed.
	(_diskfs_nosuid, _diskfs_noexec): Renamed from nosuid & noexec.
	* init-init.c: Prepend "_diskfs" to uses of NOSUID & NOEXEC.
	* file-exec.c (diskfs_S_file_exec): Likewise.
	* opts-std-startup.c (parse_startup_opt): Likewise.
	* opts-std-runtime.c (set_opts): Likewise.
	(OPT_EXEC_OK, OPT_SUID_OK): Rename definitions from ..._OPT.

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

	* opts-append-std.c (diskfs_append_std_options): Add --no-suid and
	--no-exec options.  Don't deallocate ARGZ when we get an error.

Tue Sep 16 14:37:51 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* opts-append-std.c (diskfs_append_std_options): Add --no-suid and
	--no-exec when appropriate.
	* priv.h (nosuid, noexec): New variables.
	* init-init.c (nosuid, noexec): New variables, initialized to zero.
	* file-exec.c (diskfs_S_file_exec): If noexec is on, then prohibit
	all execution with EACCES.  If nosuid is on, then prohibit setuid
	or setgid execution by silently omitting the uid substitution.
	* opts-std-startup.c (parse_startup_opt): Implement --no-suid and
	--no-exec.
	* opts-common.c (diskfs_common_options): Add --no-suid and
	--no-exec.
	* opts-std-runtime.c (struct parse_hook): Add nosuid and noexec.
	(parse_opt) [cases 'S', 'E', OPT_SUID_OK, OPT_EXEC_OK] Understand
	--no-suid, --no-exec, --suid-ok, and --exec-ok.
	(parse_opt) [case ARGP_KEY_INIT]: Initialize H->nosuid and
	H->noexec.
	(OPT_SUID_OK, OPT_EXEC_OK): New macros.
	(std_runtime_options): Add --suid-ok and --exec-ok.
	(set_opts): Set nosuid and noexec from H->nosuid and H->noexec.

	* opts-common.c (diskfs_common_options): Rename --nosync to
	--no-sync; leave --nosync as an alias.

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

	* diskfs.h: Doc fix.

	* io-map.c (diskfs_S_io_map): Cope with error return from
	diskfs_get_filemap.
	* rdwr-internal.c (_diskfs_rdwr_internal): Likewise.

	* disk-pager.c (service_paging_requests): New args for
	ports_manage_port_operations_multithread.
	* init-first.c (master_thread_function): Likewise.

1997-08-19  Miles Bader  <miles@gnu.ai.mit.edu>

	* filedev.c, machdev.c: Files removed.

Thu Jul 24 12:57:26 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* name-cache.c (find_cache): Grammar doc fix.

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

	* opts-std-runtime.c (parse_opt): Turn off synchronous mode when
	setting a sync interval.

Mon Jul  7 16:25:49 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* file-exec.c: Include <fcntl.h> instead of <fcntlbits.h>.
  	Suggested by Marcus G. Daniels (marcus@cathcart.sysc.pdx.edu).

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

	* diskfs.h (diskfs_hard_readonly): New variable.
	(diskfs_readonly): Doc change.
	* readonly.c (diskfs_readonly): Provide initialized declaration.
	(diskfs_check_readonly): If we cannot write the media and so we
	switch to readonly, set diskfs_hard_readonly too.
	(diskfs_set_readonly): If diskfs_hard_readonly is set, then
	inhibit any attempt to clear readonly status.

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

	* peropen-make.c (diskfs_make_peropen): Initialize the
	ROOT_PARENT, SHADOW_ROOT, and SHADOW_ROOT_PARENT fields.

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

	* io-stat.c (diskfs_S_io_stat): Use fshelp_translated rather than
	fshelp_fetch_control.

Fri Jun  6 11:42:14 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (LCLHDRS): Add fhandle.h.

Tue May 27 11:55:56 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* file-chmod.c (diskfs_S_file_chmod): Turn off S_ITRANS bits too.

Mon Feb 24 17:22:05 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* io-identity.c (diskfs_S_io_identity): Pass CRED's shadow root
	inode number to fshelp_get_identity when creating a shadow root
	fsid, not INUM.

Mon Feb 24 14:40:02 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* dir-rmdir.c (diskfs_S_dir_rmdir): Check EBUSY-when-translated
	error before ENOTDIR-when-not-dir.

Sat Feb 22 00:00:32 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* io-stat.c (diskfs_S_io_stat): Mark shadow roots with S_IROOT.
	* io-identity.c (diskfs_S_io_identity): Return different fsys ids
	for different shadow roots.

	* peropen-rele.c (diskfs_release_peropen): Don't deadlock if PO's
	shadow_root is also it's node.
	* file-reparent.c (diskfs_S_file_reparent): Don't release a
	reference to any old shadow_root if it was == NODE.  Don't aquire
	a new reference for NODE.

Fri Feb 21 17:12:04 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-init.c (diskfs_init_dir): Use CRED->po as LOOKUPCRED's po,
	so that root detection works (and doesn't crash).

Thu Feb 20 00:43:38 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* io-read.c (diskfs_S_io_read): Support reading from sylinks.
	* dir-lookup.c (diskfs_S_dir_lookup): Allow symlinks to be opened
	for O_READ.

Thu Feb 13 19:27:16 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-rename.c (diskfs_S_dir_rename): Return EXDEV if FROMCRED and
	TOCRED are in different shadow trees.

	* file-reparent.c (diskfs_S_file_reparent): New function, from
	dir-reparent.c.
	* dir-reparent.c: File removed.
	* Makefile (FSSRCS): dir-reparent.c replaced by file-reparent.c.

Wed Feb 12 14:23:15 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* peropen-make.c (diskfs_make_peropen): Add & use CONTEXT param.
	Remove DOTDOT & DEPTH params.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Pass a prototype peropen
	instead of the dotdotport and depth to diskfs_make_peropen.
	* fsys-getfile.c (diskfs_S_fsys_getfile): Likewise.
	* file-exec.c (diskfs_S_file_exec): Likewise.
	* dir-reparent.c (diskfs_S_dir_reparent): Likewise.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.
	* boot-start.c (diskfs_start_bootstrap): Likewise.
	(diskfs_S_exec_startup_get_info): Likewise.
	(diskfs_execboot_fsys_startup): Likewise.
	(diskfs_S_fsys_init): Likewise.
	* trans-callback.c (_diskfs_translator_callback2_fn): Pass COOKIE
	directly to diskfs_make_peropen instead of unpacking each arg.
	* priv.h (struct diskfs_trans_callback_cookie2): Type removed.
	* dir-lookup.c (diskfs_S_dir_lookup): Use DIRCRED->po as the
	cookie for fshelp_fetch_root instead of a local structure.
	* diskfs.h (diskfs_lookup): Remove DEPTH & NEW_DEPTH params.
	* dir-lookup.c (diskfs_S_dir_lookup): Get rid of DEPTH variable.
	Get rid of depth parameters to diskfs_lookup.
	Deal properly with EAGAIN return from diskfs_lookup.
	Replace references to dotdotport with root_parent.
	* dir-unlink.c (diskfs_S_dir_unlink): Don't pass depth args to
	diskfs_lookup.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.
	* dir-renamed.c (diskfs_rename_dir, checkpath): Likewise.
	* dir-rename.c (diskfs_S_dir_rename): Likewise.
	* dir-mkdir.c (diskfs_S_dir_mkdir): Likewise.
	* dir-link.c (diskfs_S_dir_link): Likewise.
	* dir-init.c (diskfs_init_dir): Likewise.
	* dir-clear.c (diskfs_clear_directory): Likewise.
	* lookup.c (diskfs_lookup): Remove DEPTH & NEW_DEPTH params.
	Check CRED->po->shadow_root for root traversals, and get rid of assert
	that EAGAIN isn't returned from diskfs_lookup_hard.
	* diskfs.h (struct peropen):
	Add shadow_root_parent & shadow_root fields.
	Removed depth field.
	Rename dotdotnode field to root_parent.
	* peropen-rele.c (diskfs_release_peropen): Finalize new state.

	* dir-lookup.c (diskfs_S_dir_lookup): Remove O_EXLOCK & O_SHLOCK
 	from FLAGS mask, now that they're included in O_HURD.

Thu Feb  6 02:17:35 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* io-write.c (diskfs_S_io_write): Check OFF for validity and
	return EINVAL if it's bogus.
	* io-read.c (diskfs_S_io_read): Likewise.

	* dir-mkfile.c (diskfs_S_dir_mkfile): New file's depth is one
	greater than CRED's.

	* file-getfh.c (diskfs_S_file_getfh): Implement (code from ufs).
	* fsys-getfile.c (diskfs_S_fsys_getfile): Likewise.
	* fhandle.h: New file.

Wed Feb  5 16:06:26 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-reparent.c (diskfs_S_dir_reparent): Implement.

	* lookup.c (diskfs_lookup): Add DEPTH & NEW_DEPTH arguments.
	Implement new fs-root detection using them.
	* diskfs.h (diskfs_lookup): Add DEPTH & NEW_DEPTH arguments.
	* dir-link.c (diskfs_S_dir_link): Supply DEPTH & NEW_DEPTH
	arguments to diskfs_lookup.
	* dir-clear.c (diskfs_clear_directory): Likewise.
	* dir-init.c (diskfs_init_dir): Likewise.
	* dir-renamed.c (checkpath, diskfs_rename_dir): Likewise.
	* dir-rename.c (diskfs_S_dir_rename): Likewise.
	* dir-mkdir.c (diskfs_S_dir_mkdir): Likewise.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.
	* dir-unlink.c (diskfs_S_dir_unlink): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.
	Add DEPTH variable.
	* dir-link.c (diskfs_S_dir_link): Translate EAGAIN (meaning root's
 	parent) to EINVAL.
	* dir-rename.c (diskfs_S_dir_rename): Likewise.

	* diskfs.h (struct peropen): Add DEPTH field.
	(diskfs_make_peropen): Add DEPTH argument.
	* peropen-make.c (diskfs_make_peropen): Add & use DEPTH argument.
	* boot-start.c (diskfs_start_bootstrap,
	diskfs_S_exec_startup_get_info, diskfs_execboot_fsys_startup,
	diskfs_S_fsys_init): Supply DEPTH argument to diskfs_make_peropen.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* file-exec.c (diskfs_S_file_exec): Likewise.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.
	* priv.h (struct diskfs_trans_callback_cookie2): New type.
	* trans-callback.c (_diskfs_translator_callback2_fn): Expect
	COOKIE2 to be a pointer to a struct diskfs_trans_callback_cookie2,
	and use that to pass args to diskfs_make_peropen.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Pass new type of cookie2 to
	fshelp_fetch_root, as expected by _diskfs_translator_callback2.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.

Mon Jan 20 16:18:00 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-reparent.c (diskfs_S_dir_reparent): New file.
	* Makefile (FSSRCS): Add dir-reparent.c.

	* disk-pager.c (preemptor): Renamed from `preempter'; type & init
	changed as well.
	(diskfs_start_disk_pager): `preempter' -> `preemptor'.
	* diskfs-pager.h: Doc fix.

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

	* diskfs.h (struct node): Add author_tracks_uid field.
	* file-chown.c (diskfs_S_file_chown): If NP->author_tracks_uid,
	modify NP->dn_stat.st_author as well.
	* node-create.c (diskfs_create_node): Likewise.

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

	* diskfs.h (struct node): Remove istranslated field.
	* io-stat.c (diskfs_S_io_stat): Set S_IATRANS & S_IROOT bits in
	st_mode field of returned buffer if appropiate.
	* dir-lookup.c (diskfs_S_dir_lookup): Use S_IPTRANS bit in dn_stat
 	st_mode field rather than istranslated field.
	* file-get-trans.c (diskfs_S_file_get_translator): Likewise.
	* file-set-trans.c (diskfs_S_file_set_translator): Likewise.
	* file-inv-trans.c (diskfs_S_file_invoke_translator): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* node-drop.c (diskfs_drop_node): Likewise.
	* trans-callback.c (_diskfs_translator_callback1_fn): Likewise.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.

	* file-get-transcntl.c (diskfs_S_file_get_translator_cntl): Use
	MACH_MSG_TYPE_MOVE_SEND to return *ctl, rather than COPY.
	(diskfs_S_file_get_translator_cntl): Correctly test for errors
	from fshelp_fetch_control.

Fri Nov 15 14:06:16 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* protid-make.c (diskfs_finish_protid): Fix typo.

	* file-chown.c (diskfs_S_file_chown): Look for UID, not CRED in
	the uid set.

	* dir-lookup.c (diskfs_S_dir_lookup): Make the unauthenticated
	port correctly.

Thu Nov 14 13:07:37 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* dir-init.c (diskfs_init_dir): New vars VEC and USER; fabricate
	LOOKUPCRED to correspond to new structure definitions.

	* io-restrict-auth.c (diskfs_S_io_restrict_auth): Declare I and
	add a missing semicolon.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Eliminate PSEUDOCRED
	entirely.  Fix unrelated typo.

	* file-chauthor.c (dithkfth_TH_file_chauthor): Fix first arg in
	call to fthhelp_ithowner.

Tue Nov 12 22:45:07 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* diskfs.h: Correctly close comment.

Thu Nov  7 14:49:19 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* io-restrict-auth.c (diskfs_S_io_restrict_auth): If CRED has
	root, use the requested id sets verbatim.

Thu Nov  7 01:03:11 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* protid-rele.c (diskfs_protid_rele): Free CRED->user.

Wed Nov  6 17:55:17 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* diskfs.h (diskfs_isuid, diskfs_groupmember, diskfs_isowner,
	diskfs_access, diskfs_checkdirmod): Delete functions.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Replace PSEUDOCRED with
	a real iouser and specify that in the relevant calls.
	* io-restrict-auth.c (diskfs_S_io_restrict_auth): Reworked to use
	idvecs.
	* file-chmod.c (diskfs_S_file_chmod): diskfs_isuid ->
	idvec_contains.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* file-getcontrol.c (diskfs_S_file_getcontrol): Likewise.
	* file-chmod.c (diskfs_S_file_chmod): diskfs_groupmember ->
	idvec_contains.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* node-create.c (diskfs_create_node): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): diskfs_isowner ->
	fshelp_isowner.
	* file-chflags.c (diskfs_S_file_chflags): Likewise.
	* file-chmod.c (diskfs_S_file_chmod): Likewise.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* file-get-transcntl.c (diskfs_S_file_get_translator_cntl):
	Likewise.
	* file-set-trans.c (diskfs_S_file_set_translator): Likewise.
	* file-utimes.c (diskfs_S_file_utimes): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* lithp.h (dithkfth_ithowner): Deleted macro.
	(fthhelp_ithowner, uther): New macros.
	* file-chauthor.c (dithkfth_TH_file_chauthor): dthkfth_ithowner ->
	fthhelp_ithowner.
	* dir-lookup.c (diskfs_S_dir_lookup): diskfs_access ->
	fshelp_access.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* file-access.c (diskfs_S_file_check_access): Likewise.
	* file-exec.c (diskfs_S_file_exec): Likewise (in dead code).
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* ifsock.c (diskfs_S_ifsock_getsockaddr): Likewise.
	* lookup.c (diskfs_lookup): Likewise.
	(diskfs_lookup): diskfs_checkdirmod -> fshelp_checkdirmod.
	* dir-lookup.c (diskfs_S_dir_lookup): New arg format for
	fshelp_fetch_root.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* diskfs.h, protid-make.c (diskfs_create_protid): Delete args
 	`uids', `gids', `nuids', and `ngids'.  Replace with new arg
 	`user'.  All callers changed.
	(diskfs_finish_protid): Likewise.
	* file-inv-trans.c (diskfs_S_file_invoke_translator): Use
	CRED->user instead of old fields.
	* io-restrict-auth.c (diskfs_S_io_restrict_auth): Likewise.
	* node-create.c (diskfs_create_node): Likewise.
	* file-exec.c (diskfs_S_file_exec): Likewise.  Use idvec_merge
	instead of idvec_merge_ids, now that it's convenient.
	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Use new
	iohelp_reauthenticate.

Tue Nov  5 21:10:18 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* diskfs.h: Include <idvec.h>.
	(struct protid): Delete members `uids', `gids', `nuids' and
	`ngids'.  New member `user'.

Thu Oct 24 15:56:30 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-std-startup.c (store_argp_children, startup_argp_children):
	New variables.
	(store_argp_parents, startup_argp_children): Variable removed.
	(diskfs_store_startup_argp): Use STORE_ARGP_CHILDREN instead of
	STORE_ARGP_PARENTS.
	(diskfs_startup_argp): Use STARTUP_ARGP_CHILDREN instead of
	STARTUP_ARGP_PARENTS.
	* opts-std-runtime.c (children): New variable.
	(parents): Variable removed.
	(diskfs_std_runtime_argp): Use CHILDREN instead of PARENTS.

Mon Oct 21 21:54:34 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* diskfs.h: Add extern inline protection.
	* diskfs.c: New file.
	* Makefile (OTHERSRCS): Add diskfs.c.

Fri Oct 11 21:55:45 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Temporarily add O_EXLOCK and
	O_SHLOCK to the set of retained flags, until they get added to O_HURD.
	Turn off OPENONLY_STATE_MODES bits in the flags we pass to
	diskfs_make_peropen, not everything *but* them!
	* priv.h (OPENONLY_STATE_MODES): Add O_EXLOCK & O_SHLOCK.

Thu Oct 10 17:22:06 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Frob lock in NEWPI->po, not PO.
	Free NEWPI if we get an error trying to lock it.
	<sys/file.h>: New include.

Thu Oct 10 17:11:05 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Implement O_SHLOCK and
	O_EXLOCK directly here.

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

	* peropen-rele.c (diskfs_release_peropen): Before freeing PO,
 	release any user lock it's holding.
	<sys/file.h>: New include.

Tue Oct  8 15:01:32 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* ifsock.c (diskfs_S_ifsock_getsockaddr): Write permission governs
	access to sockets, not read permission.

Mon Oct  7 14:50:04 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-rmdir.c (diskfs_S_dir_rmdir): Return ENOTDIR if NP isn't a dir.

Tue Sep 24 23:51:37 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-version.c (_print_version): Follow version string with newline.

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

	* Makefile (HURDLIBS): Add store.

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

	* opts-version.c (_print_version): Change to use new version
	format from the coding standards.

	* opts-std-runtime.c (std_runtime_options): Change --remount to
	--update (keep --remount as a deprecated alias).
	<argp.h>: New include.
	* opts-append-std.c <stdio.h>: New include.
	* dir-lookup.c <stdio.h>: New include.

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

	* file-get-fs-opts.c (diskfs_S_file_get_fs_options): Free ARGZ if
	diskfs_append_args returns an error.
	* fsys-options.c (diskfs_S_fsys_get_options): Likewise.

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

	* diskfs.h (diskfs_disk_name): New declaration.
	* readonly.c (diskfs_check_readonly): Use DISKFS_DISK_NAME
	instead of DISKFS_DEVICE_ARG.
	* init-startup.c (_diskfs_init_completed): Likewise.

Wed Sep 11 17:25:14 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* disk-pager.c (diskfs_start_disk_pager): Renamed from
	setup_disk_pager.
	Add PAGER_BUCKET, IMAGE, and SIZE arguments.
	Pass in PAGER_BUCKET to thread routine, and don't create it.
	(diskfs_disk_pager): Renamed from disk_pager.
	(disk_image): Variable removed.
	(pager_bucket): Declaration removed.
	(service_paging_requests): Get PAGER_BUCKET from argument.
	* diskfs-pager.h (diskfs_start_disk_pager): Renamed from
	disk_pager_setup.
	Add PAGER_BUCKET, IMAGE, and SIZE arguments.
	(diskfs_disk_pager): Renamed from disk_pager.
	(disk_image, pager_bucket): Declarations removed.

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

	* fsys-options.c (diskfs_S_fsys_get_options): Initialize ARGZ &
	ARGZ_LEN to the program name, and call diskfs_append_args instead
	of diskfs_get_options.
	* file-get-fs-opts.c (diskfs_S_file_get_fs_options): Likewise.
	<argz.h>: New include.
	* diskfs.h (diskfs_append_args): Renamed from diskfs_get_options.
	* opts-get.c (diskfs_append_args): Likewise.
	* opts-std-startup.c <hurd/store.h>: New include.
	(store_argp_parents): Use diskfs_startup_argp, not
	diskfs_std_startup_argp.
	* Makefile (libdiskfs.so): Depend on libstore.so.

	* opts-version.c <argp.h>, <stdio.h>: New includes.
	(_print_version): Test diskfs_extra_version against 0 too.
	* io-version.c <stdio.h>: New include.
	(diskfs_S_io_server_version): Use snprintf instead of sprintf.

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

	* diskfs.h <argp.h>: Include removed.
	(struct argp): New (incomplete) declaration.
	(diskfs_get_file_device, diskfs_get_mach_device): Declarations removed.
	(diskfs_startup_argp): Renamed from diskfs_std_startup_argp.
	(diskfs_store_startup_argp): Renamed from
	diskfs_std_device_startup_argp.
	(diskfs_device_arg, diskfs_use_mach_device, diskfs_device_open,
 	diskfs_device, diskfs_device_name, diskfs_device_start,
 	diskfs_device_size, diskfs_device_block_size,
 	diskfs_log2_device_block_size, diskfs_log2_device_blocks_per_page,
 	diskfs_device_write_sync, diskfs_device_read_sync): Declarations
 	removed.
	* opts-std-startup.c (diskfs_use_mach_device, diskfs_device_arg,
	dev_startup_options, dev_startup_argp_parents,
	diskfs_std_device_startup_argp): Variables removed.
	(parse_dev_startup_opt): Function removed.
	(diskfs_startup_argp): Renamed from diskfs_std_startup_argp.
	* Makefile (OTHERSRCS): Remove filedev.c, machdev.c, dev-open.c,
 	dev-io.c, & dev-globals.c.

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

	* Makefile: New variable.
	(libdiskfs.so): Delete special depedency.

Thu Sep  5 11:13:54 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* io-version.c (diskfs_S_io_server_version): Only fill in
	SERVER_NAME; ignore the rest.

	* diskfs.h (diskfs_major_version, diskfs_minor_version,
	diskfs_edit_version): Delete variables.
	(diskfs_server_version, diskfs_extra_version): New variables.
	* boot-start.c (diskfs_S_fsys_init): Register version from
	diskfs_server_version; pass empty string as release.
	* extra-version.c: New file.
	* Makefile (OTHERSRCS): Add extra-version.c.
	* opts-version.c: Include <version.h>.
 	(diskfs_extra_version): Delete special declaration.
	(_print_version): Use the user's provided version number, and also
	give it our (libdiskfs) version number.

Tue Sep  3 10:48:05 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* name-cache.c (diskfs_enter_lookup_cache): Cache `.' and `..'
	just like other nodes.
	(diskfs_check_lookup_cache): If we get a cache hit on `..', then
	do the inverse locking semantic, and only return success if things
	are stable around the call.

Fri Aug 30 21:57:18 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* lookup.c (cache_misses): New variable, to find out what sort of
	thing all the cache misses are.
	(cm_lock): New variable.
	(diskfs_lookup): Keep track of cache misses in cache_misses.

	* name-cache.c (MAXCACHE): 200 now.  After experimentation, this
	appears to be a pretty good value.  Very little benefit after
	this.

Fri Aug 30 20:41:27 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* name-cache.c (struct lookup_cache): Delete member `hits'.
	New member `stati'.
	(diskfs_enter_lookup_cache): Don't initialize C->hits.
	(find_cache): Set C->stati before returning.
	(build_partial): Delete function.
	(diskfs_check_lookup_cache): Delete calls to build_partial.
	Register all statistics through register_neg_hit,
	register_pos_hit, and register_miss.
	(MAXCACHE): 2000 now.

Wed Aug 28 12:20:53 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* name-cache.c (MAXCACHE): 500 for now.

Mon Aug 26 15:10:55 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* name-cache.c (MAXCACHE): Increase to 50000.
	(struct lookup_cache): New member `hits'.
	(statistics): Name struct type `struct stats'.
	(diskfs_enter_lookup_cache): Initialize C->hits.
	(PARTIAL_THRESH, NPARTIALS): New macros.
	(partial_stats): New variable.
	(build_partial): New function.
	(diskfs_check_lookup_cache): Call build_partial after statistics
	frobbing.

	* name-cache.c (diskfs_check_lookup_cache): Increment members of
	statistics while still holding CACHE_LOCK.

Fri Aug 16 18:23:25 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* name-cache.c (diskfs_check_lookup_cache): Keep track of negative
	hits properly.
	* lookup.c (diskfs_lookup): On LOOKUPs that fail to find the node,
	enter a negative cache entry.

Thu Aug 15 16:07:23 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-version.c (diskfs_extra_version): New (weak) reference.
	(_print_version): Use DISKFS_EXTRA_VERSION.  Tweak edit version.
	Fix type of EV.

Thu Aug 15 16:38:41 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* io-identity.c (diskfs_S_io_identity): Don't hold lock around
	call to fshelp_get_identity.

Mon Aug 12 15:54:27 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-version.c (_print_version): Print the edit version too if
	it's non-zero.

Thu Aug  8 18:18:09 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* readonly.c: Include <error.h>.

Wed Aug  7 13:53:56 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* readonly.c (diskfs_check_readonly): If we get an error from
	diskfs_hypermetadata, then switch to readonly.
	* diskfs.h (diskfs_set_hypermetadata): Require an error code return.
	* dev-io.c (diskfs_device_write_sync): If we get D_READ_ONLY, then
	return EROFS to the caller instead of EIO.

	* node-create.c (diskfs_create_node): New files always copy GID
	from their parent; that's NetBSD's behavior, and it's good enough
	for me.

Thu Aug  1 17:24:08 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* file-get-transcntl.c (diskfs_S_file_get_translator_cntl): Don't
	diskfs_nput NP; we've never created a reference.  Just unlock it.
	(And bother to lock it in the first place.)

Sat Jul 27 20:05:17 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* lookup.c (diskfs_lookup): Don't nput *NP if we didn't find a file.

	* init-startup.c (diskfs_S_startup_dosync): Clean up after ourselves.
	Don't sync if DISKFS_READONLY.
	* file-syncfs.c (diskfs_S_file_syncfs): Don't sync if DISKFS_READONLY.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs): Likewise.
	* sync-interval.c (periodic_sync): Likewise.
	* shutdown.c (diskfs_shutdown): Likewise.

Fri Jul 26 14:52:23 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): Unlock NP before we attempt to
 	do setuid/setgid (which otherwise can deadlock during port reauth).
	Pay attention to the error code returned by fshelp_exec_reauth,
	and don't make NEWPI if it's an error.
	Initialize ERR.

Tue Jul 23 16:05:55 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-version.c (_print_version): Make return type void.

Fri Jul 19 21:19:42 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* filedev.c (diskfs_get_file_device): INTS[3] contains the number
	of runs, not the number of offsets (which is 2*NUM_RUNS).
	Don't deallocate the device port we've fetched.

	* opts-std-startup.c (startup_options, parse_startup_opt): Remove
	the --version option, which is handled elsewhere now.

Thu Jul 18 23:05:56 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* protid-make.c (diskfs_start_protid): Use noinstall version of
	ports_create_port.
	(diskfs_finish_protid): Install port right into port set here.

Mon Jul 15 21:37:12 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* diskfs.h (diskfs_checkdirmod): diskfs_isowner returns error or
 	zero, so invert sense of tests.

	* lookup.c (diskfs_lookup): If we get an error from
 	diskfs_checkdirmod, diskfs_nput the node we picked up; the caller
 	won't want it.

	* dir-renamed.c (diskfs_rename_dir): When unlocking FDP, only do
 	it if we FDP != TDP.  Also, only do step two (changing .. in the
 	directory being moved) if FDP != TDP.

Sat Jul 13 20:05:27 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Repeat
 	diskfs_start_protid and auth_server_authenticate for as we get
 	EINTR.

Sun Jul  7 21:07:53 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* boot-start.c (diskfs_S_fsys_init): Don't use unsafe MOVE_SEND in
 	call to exec_init.
	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Don't use
 	unsafe MOVE_SEND in auth_server_authenticate.

Sun Jul  7 10:27:37 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-version.c (_print_version): Include HURD_RELEASE in default.

Sat Jul  6 16:27:01 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-version.c: New file.
	* Makefile (OTHERSRCS): Add opts-version.c.

Sat Jul  6 13:32:58 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* node-drop.c (diskfs_drop_node): If this might be a special
 	symlink, then truncate it even though NP->allocsize might be
 	clear.

Wed Jul  3 11:22:58 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* io-identity.c (diskfs_S_io_identity): Fetch identity using
 	fshelp_get_identity rather than creating it ourselves.
	* diskfs.h (struct node): Remove member `identity'.
	* node-drop.c (diskfs_drop_node): Don't deallocate NP->identity.
	* node-make.c (diskfs_make_node): Don't initialize NP->identity.

Thu Jun 27 10:07:03 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* init-startup.c (diskfs_startup_diskfs): Don't call
 	diskfs_readonly_changed here anymore.

	* disk-pager.c (disk_pager_setup): Check diskfs_readonly variable
	instead of calling diskfs_check_readonly.

	* Makefile (LCLHDRS): Add diskfs-pager.h.

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

	* opts-std-runtime.c (parse_opt): Add hair to share arg parsing
	state between two parsers that use the same parse_opt function at
	the same time.

Mon Jun 24 14:55:50 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* init-startup.c (diskfs_S_startup_dosync): Don't crash the
 	filesystem, just do a clean sync.
	* node-drop.c (diskfs_drop_node): Call diskfs_check_readonly
 	before making mods.
	* priv.h (_diskfs_diskdirty): New variable.
	* diskfs.h (diskfs_check_readonly): New function.
	* readonly.c (_diskfs_diskdirty): New var.
	(diskfs_check_readonly): New function.
	(diskfs_set_readonly): After clean sync, clear _diskfs_diskdirty.
	* rdwr-internal.c (_diskfs_rdwr_internal): Use
 	diskfs_check_readonly instead of diskfs_readonly.
	* node-create.c (diskfs_create_node): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* file-set-trans.c (diskfs_S_file_set_translator): Likewise.
	* disk-pager.c (disk_pager_setup): Likewise.
	* dir-unlink.c (diskfs_S_dir_unlink): Likewise.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.
	* dir-rename.c (diskfs_S_dir_rename): Likewise.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* dir-mkdir.c (diskfs_S_dir_mkdir): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.
	* dir-link.c (diskfs_S_dir_link): Likewise.
	* conch-fetch.c (iohelp_fetch_shared_data): Likewise.
	* remount.c (diskfs_remount): Likewise.

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): If
 	auth_server_authenticate fails, then fill with empty IDs.  We
 	can't permit interruption, because this is a simpleroutine.

	* file-set-trans.c (diskfs_S_file_set_translator): Validate rdev
 	change before making it.
	* file-chflags.c (diskfs_S_file_chflags): Validate flags change
 	before making it.
	* lithp.h (dithkfth_validate_author_change): New macro.
	* file-chauthor.c (dithkfth_TH_file_chauthor): Validate new author
 	before changing it.
	* node-create.c (diskfs_create_node): Validate group change before
 	making it.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* node-create.c (diskfs_create_node): Validate mode change before
 	making it.
	* file-set-trans.c (diskfs_S_file_set_translator): Likewise
	* file-chmod.c (diskfs_S_file_chmod): Likewise.
	* node-create.c (diskfs_creade_node): Validate owner change before
 	making it.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* Makefile (OTHERSRCS): Add validate-mode.c, validate-group.c,
 	validate-author.c, validate-flags.c, validate-rdev.c, and
 	validate-owner.c.
	* validate-mode.c, validate-group.c, validate-author.c,
	validate-flags.c, validate-rdev.c, validate-owner.c: New files.
	* diskfs.h (diskfs_validate_mode_change,
 	diskfs_validate_owner_change, diskfs_validate_group_change,
 	diskfs_validate_author_change, diskfs_validate_flags_change,
 	diskfs_validate_rdev_change): New decls.

Fri Jun 21 00:18:16 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* fsys-options.c (diskfs_S_fsys_get_options): Use
	fshelp_return_malloced_buffer to setup the return data.
	* file-get-fs-opts.c (diskfs_S_file_get_fs_options): Likewise.
	* opts-set.c (diskfs_set_options): Supply INPUT arg to
	fshelp_set_options.

	* opts-append-std.c (diskfs_append_std_options): Use argz_add
	instead of rolling our own.  Deal with errors.
	<argz.h>: New include.

Wed Jun 19 21:57:46 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* init-startup.c (diskfs_S_startup_dosync): Pass HANDLE to
	ports_lookup_port.  Declare ERR.

	* opts-get.c (diskfs_get_options): Call diskfs_append_std_options to
	do most of the work.
	* opts-append-std.c: New file.
	* opts-set.c: New file (old version renamed).
	* opts-std-runtime.c: Renamed from opts-set.c.
	(diskfs_set_options): Function removed.
	(struct parse_hook): New type.
	(set_opts, parse_opt): New functions.
	(common_argp, parents, diskfs_std_runtime_argp): New variables.
	* diskfs.h (diskfs_parse_runtime_options): Decl removed.
	(diskfs_std_startup_argp): Renamed from diskfs_startup_argp, now a
	structure decl, not a pointer decl.
	(diskfs_std_device_startup_argp): Renamed from
 	diskfs_device_startup_argp, now a structure decl, not a pointer
 	decl.
	(diskfs_set_options): Update decl (now takes argz & argz_len).
	(diskfs_runtime_arg): New declaration.
	(diskfs_std_runtime_argp, diskfs_append_std_options): New declarations.
	* opts-runtime-parse.c, opts-runtime-unparse.c: Files removed.
	* opts-std-startup.c (parse_dev_startup_opt): Use argp_error.
 	(diskfs_startup_arg, diskfs_device_startup_arg): Variables removed.
	(diskfs_std_startup_argp): Renamed from startup_argp, exported.
	(diskfs_std_device_startup_argp): Renamed from dev_startup_argp,
	exported.
	* fsys-options.c (diskfs_S_fsys_set_options): Don't split
	arguments, just call diskfs_set_options with what we got.
	* opts-runtime.c: New file.
	* Makefile (OTHERSRCS): Add opts-std-runtime.c, opts-append-std.c,
	opts-runtime.c.  Remove opts-runtime-parse.c, opts-runtime-unparse.c

Thu Jun 13 10:05:51 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (MIGSTUBS): Add startup_notifyServer.o.
	* init-startup.c (diskfs_S_startup_dosync): Uncomment function.
	* demuxer.c (diskfs_demuxer): Call diskfs_startup_notify_server.
	* init-startup.c (_diskfs_init_completed): NOTIFY doesn't need
 	deallocation.

	* boot-start.c (diskfs_S_fsys_init): Build version string
 	correctly.

Tue May 14 11:14:12 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (OTHERSRCS): Remove init-completed.c.

	* node-drop.c (diskfs_drop_node): Fix typo.

Sat May 11 01:11:19 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-std-startup.c (parse_dev_startup_opt, parse_startup_opt):
	Use ARGP_ERR_UNKNOWN instead of EINVAL.
	* opts-set.c (diskfs_set_options): Likewise.

Fri May 10 17:15:51 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* io-identity.c: New file.
	* Makefile (IOSRCS): Add io-identity.c.
	* diskfs.h (diskfs_fsys_identity): New variable.
	(struct node): New member `identity'.
	* init-init.c (diskfs_fsys_identity): New variable.
	(diskfs_init_diskfs): Initialize diskfs_fsys_identity.
	* node-make.c (diskfs_make_node): Initialize NP->identity.
	* node-drop.c (diskfs_drop_node): Free NP->identity if it's been
 	allocated.

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

	* protid-make.c (diskfs_make_protid): Delete function.
	* diskfs.h (diskfs_make_protid): Delete declaration.

	* init-startup.c (_diskfs_init_completed): Don't need to insert
 	right any more now that it's a poly arg.
	Provide helpful name to init.

	* fsys-options.c (diskfs_S_fsys_get_options): Accept and ignore
 	replyport parameters.

	* file-sync.c (diskfs_S_file_sync): Accept and ignore new parm
	OMITMETADATA.

	* priv.h: ioserver.h -> iohelp.h.
	* diskfs.h: Likewise.
	* file-sync.c (diskfs_S_file_sync): s/ioserver/iohelp/g
	* io-prenotify.c (diskfs_S_io_prenotify): Likewise.
	* io-get-conch.c (diskfs_S_io_get_conch): Likewise.
	* io-modes-off.c (diskfs_S_io_clear_some_openmodes): Likewise.
	* io-modes-on.c (diskfs_S_io_set_some_openmodes): Likewise.
	* io-modes-set.c (diskfs_S_io_set_all_openmodes): Likewise.
	* io-read.c (diskfs_S_io_read): Likewise.
	* io-readable.c (diskfs_S_io_readable): Likewise.
	* io-rel-conch.c (diskfs_S_io_release_conch): Likewise.
	* io-seek.c (diskfs_S_io_seek): Likewise.
	* io-stat.c (diskfs_S_io_stat): Likewise.
	* io-write.c (diskfs_S_io_write): Likewise.
	* conch-fetch.c (iohelp_fetch_shared_data): Likewise.
	* conch-set.c (iohelp_put_shared_data): Likewise.
	* node-make.c (diskfs_make_node): Likewise.
	* node-rdwr.c (diskfs_node_rdwr): Likewise.
	* Makefile (libdiskfs.so): Likewise.

	* dir-rename.c (diskfs_S_dir_rename): Understand new parm EXCL and
 	do the right thing with it.
	* dir-link.c (diskfs_S_dir_link): Likewise.

Thu May  9 12:12:41 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Don't pass CRED
 	port in auth_server_authenticate.

	* io-select.c (diskfs_S_io_select): Removed TAG arg.

Thu May  9 11:42:53 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* filedev.c (diskfs_get_file_device): Deallocate most things we
	got back from file_get_storage_info even if we didn't get an error.

	* filedev.c (diskfs_get_file_device): Fix type of DATA & _DATA.
	BLOCKSIZE -> BLOCK_SIZE.  Copy name from DATA, not DEV_NAME_BUF.

Mon May  6 20:12:34 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* filedev.c (diskfs_get_file_device): Enable new version.

Fri May  3 15:55:44 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* filedev.c [0] (diskfs_get_file_device): Rewrite to use new interface.

Tue Apr 30 14:39:06 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* init-startup.c: Include <string.h> and <hurd/startup.h>.
	(diskfs_startup_diskfs): If not bootstrap filesystem, call
	_diskfs_init_completed here.
	(diskfs_S_startup_dosync): New function (commented out).
	(_diskfs_init_completed): New function.
	* init-completed.c: Delete file.
	* init-init.c (diskfs_shutdown_notification_class): New variable.
	(diskfs_init_diskfs): Initialize diskfs_shutdown_notification_class.
	* diskfs.h (diskfs_shutdown_notification_class): New variable.
	* boot-start.c (diskfs_S_fsys_init): diskfs_init_completed ->
 	_diskfs_init_completed.
	* priv.h (_diskfs_init_completed): New declaration.
	* diskfs.h (diskfs_init_completed): Delete function.

Mon Apr 29 15:42:23 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* name-cache.c (struct lookup_cache): Add HDR, remove NEXT & PREV.
	(lookup_cache): Change type to struct cacheq.
	(mru_cache, lru_cache): Variables removed.
	(make_mru, make_lru, init_lookup_cache): Functions removed.
	(find_cache, diskfs_purge_lookup_cache,
	diskfs_check_lookup_cache): Use cacheq functions.

Sun Apr 28 15:22:30 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* protid-make.c: Add obsolescence link warning.

Tue Apr 23 11:05:04 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* node-drop.c (diskfs_drop_node): Don't do anything special for
 	socket naming points.
	* Makefile (OTHERSRCS): Add dead-name.c.
	* dead-name.c: New file.
	* ifsock.c (diskfs_S_ifsock_getsockaddr): Request notification for
 	new SOCKADDR; count that notification as a reference.

Fri Apr 12 15:56:48 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* name-cache.c (diskfs_enter_lookup_cache): Never cache . or ..

Thu Apr 11 17:59:18 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* console.c: Include <hurd.h>.

	* Makefile (fsys-MIGSFLAGS, fs-MIGSFLAGS, io-MIGSFLAGS,
 	ifsock-MIGSFLAGS): Reference fsmutations.h in $(srcdir).

        * boot-start.c (diskfs_start_bootstrap): Print helpful message
	before doing anything else.

Wed Apr 10 16:47:21 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* name-cache.c (struct lookup_cache): Add NEXT & PREV fields.
	Rename LEN back to NAME_LEN.
	(lru_cache, mru_cache): New variables.
	(first_cache, last_cache): Variables removed.
	(make_mru, make_lru, find_cache, init_lookup_cache): New functions.
	(diskfs_enter_lookup_cache, diskfs_purge_lookup_cache,
	diskfs_check_lookup_cache): Rewrite to use the linked list.  Deal
	with negative entries.

Tue Apr  9 12:59:02 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* lookup.c (diskfs_lookup): Deal with DS or NP being 0.
	* name-cache.c (diskfs_check_lookup_cache): Correctly handle the
 	case where the lookup returns DIR itself.

	* diskfs.h (diskfs_enter_lookup_cache, diskfs_purge_lookup_cache,
 	diskfs_check_lookup_cache): Renamed from versions without `lookup_'.
	* name-cache.c (diskfs_enter_lookup_cache, diskfs_purge_lookup_cache,
 	diskfs_check_lookup_cache): Likewise.
	* direnter.c (diskfs_direnter): Similarly, rename use.
	* dirrewrite.c (diskfs_dirrewrite): Likewise.
	* dirremove.c (diskfs_dirremove): Likewise.
	* lookup.c (diskfs_lookup): Likewise.

Sun Apr  7 15:29:02 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* name-cache.c (diskfs_check_cache): Declare I.
	(struct lookup_cache, diskfs_enter_cache): Change NAMELEN field to LEN.

Wed Apr  3 16:02:45 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* node-drop.c (diskfs_drop_node): Don't call
	_diskfs_purge_cache_deletion.
	* name-cache.c (_diskfs_purge_cache_deletion): Delete function.

	* diskfs.h (diskfs_cached_lookup): New declaration.
	(struct node): New member `cache_id'.

Tue Apr  2 12:50:31 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* name-cache.c (diskfs_enter_cache): Don't set LC->next->prev if
 	LC->next is null.
	(diskfs_purge_cache): If freeing node at LOOKUP_CACHE_TAIL, bump
	LOOKUP_CACHE_TAIL back itself too.
	(_diskfs_purge_cache_deletion): Likewise.

	* lookup.c (diskfs_lookup): When doing diskfs_checkdirmod check,
 	don't return success when we should return ENOENT, just because
 	checkdirmod won.  Also enter successful lookups for CREATE or
 	LOOKUP in the name cache.

Fri Mar 29 13:57:37 1996  Roland McGrath  <roland@charlie-brown.gnu.ai.mit.edu>

	* io-map-cntl.c: Initialize shared page magic number.

Mon Mar 25 09:30:31 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* name-cache.c (statistics): New variable.
	(diskfs_check_cache): Keep statistics on cache performance.

Fri Mar 22 17:51:51 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-runtime-parse.c (diskfs_parse_runtime_options): Supply new
	argument to argp_parse.

Fri Mar 22 15:44:10 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* lookup.c (diskfs_lookup): Dereference NP in call to
	diskfs_checkdirmod.
	* direnter.c (diskfs_direnter): Don't fall off end.
	* diskfs.h (diskfs_enter_cache, diskfs_purge_cache,
	diskfs_check_cache): Add declarations.
	* dir-rename.c (diskfs_S_dir_rename): Use new args for
	diskfs_dirrewrite and diskfs_dirremove.
	* dir-renamed.c (diskfs_rename_dir): Likewise.
	* dir-clear.c (diskfs_clear_directory): Use new diskfs_dirremove
 	args.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.
	* dir-unlink.c (diskfs_S_dir_unlink): Likewise.

	* Makefile (OTHERSRCS): Add direnter.c, dirrewrite.c, dirremove.c,
 	and lookup.c.

Wed Mar 20 14:34:22 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* diskfs.h (diskfs_lookup_hard): Remove mention of ENOTDIR and
 	EACCES errors.
	* diskfs.h (diskfs_null_dirstat): New function.
	* dir-lookup.c (diskfs_S_dir_lookup): Don't check cache here.
	* dir-unlink.c (diskfs_S_dir_unlink): Don't frob cache here.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.
	* dir-clear.c (diskfs_clear_directory): Likewise.
	* node-create.c (diskfs_create_node): Likewise.
	* dir-renamed.c (diskfs_rename_dir): Likewise.
	* dir-rename.c (diskfs_S_dir_rename): Likewise.
	* dir-link.c (diskfs_S_dir_link): Likewise.
	* direnter.c: New file.
	* dirrewrite.c: Likewise.
	* dirremove.c: Likewise.
	* lookup.c: Likewise.
	* diskfs.h (diskfs_lookup): Renamed to be diskfs_lookup_hard.
	(diskfs_direnter): Renamed to be diskfs_direnter_hard.
	(diskfs_dirrewrite): Renamed to be diskfs_dirrewrite_hard.
	(diskfs_dirremove): Renamed to be diskfs_dirremove_hard.
	(diskfs_lookup, diskfs_direnter, diskfs_dirrewrite, diskfs_dirremove):

Tue Mar 19 14:55:46 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* name-cache.c: New file.
	* Makefile (OTHERSRCS): Add name-cache.c.
	* dir-lookup.c (diskfs_S_dir_lookup): Check cache before normal
 	diskfs_lookup call.
	* node-drop.c (diskfs_drop_node): Call
 	_diskfs_purge_cache_deletion before releasing node structure with
 	diskfs_node_norefs.
	* dir-clear.c (diskfs_clear_directory): Call
	diskfs_purge_cache_node before diskfs_dirremove.
	* dir-rename.c (diskfs_S_dir_rename): Likewise.
	* dir-renamed.c (diskfs_rename_dir): Likewise.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.
	* dir-unlink.c (diskfs_S_dir_unlink): Likewise.
	* dir-init.c (diskfs_init_dir): Doc fix.
	* dir-rename.c (diskfs_S_dir_rename): Call diskfs_purge_cache
 	before diskfs_dirrewrite for old node.
	* dir-renamed.c (diskfs_rename_dir): Likewise.
	* node-create.c (diskfs_create_node): Call diskfs_enter_cache if
 	diskfs_direnter is successful.
	* dir-link.c (diskfs_S_dir_link): Likewise.
	* dir-rename.c (diskfs_S_dir_rename): Call diskfs_enter_cache if
 	diskfs_direnter/diskfs_dirrewrite is successful.
	* dir-renamed.c (diskfs_rename_dir): Likewise.

Fri Mar 15 23:10:57 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Don't leak a send right to
	the anonymous handle on DNP when calling fetch_root.

Tue Mar 12 14:36:10 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* file-set-trans.c (diskfs_S_file_set_translator): Deallocate ref
 	on CONTROL when we are done with it.

Thu Mar  7 16:45:02 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* readonly.c (diskfs_set_readonly): Don't sleep(1) after syncing.

Thu Feb 29 14:29:20 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (OTHERSRCS): Change `opts-runtime-def.c' to
	`opts-runtime-parse.c'.  Add `opts-runtime-unparse.c'.

Wed Feb 21 06:10:05 1996  Roland McGrath  <roland@charlie-brown.gnu.ai.mit.edu>

	* file-set-trans.c (diskfs_S_file_set_translator): Add EROFS check.

Sun Feb 18 00:08:27 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* init-init.c (diskfs_init_diskfs): Use maptime_map.
	* node-times.c (diskfs_set_node_times): Use maptime_read.

Fri Feb 16 13:48:08 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-runtime-def.c (diskfs_parse_runtime_options): STANDARD_ARGP
	is const.

Thu Feb 15 16:59:04 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* diskfs.h (diskfs_nput): It's not valid to touch *NP (by
 	`mutex_unlock (&np->lock);') after we have called
 	diskfs_drop_node.  So don't do it in that case.

Wed Feb  7 22:42:22 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* diskfs.h (diskfs_nput): Before bumping NP->references (which
 	precedes diskfs_try_dropping_softrefs), *lock*
 	diskfs_node_refcnt_lock, not mutant unlock.
	(diskfs_nrele): Likewise.

Wed Feb  7 16:22:31 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* diskfs.h (diskfs_parse_runtime_options): Make STANDARD_ARGP const.
	(diskfs_startup_argp, diskfs_device_startup_argp): Make const.
	* opts-common.c (diskfs_common_options): Make const.
	* opts-std-startup.c (startup_options, dev_startup_options,
	dev_start_argp_parents, dev_startup_argp, startup_common_argp,
	startup_argp_parents, startup_argp, diskfs_startup_argp): Make const.
	* opts-set.c (std_runtime_options): Make const.
	(diskfs_set_options): Make argp structures const.

Wed Feb  7 13:39:09 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Revert last change.

Tue Feb  6 15:56:04 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Make the new peropen we'll
	pass as dotdot to the fetch_root with the same flags as DIRCRED->po.

Wed Jan 31 00:27:10 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* node-rdwr.c (diskfs_node_rdwr): Handle null AMTREAD.

Tue Jan 30 21:20:13 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* fsys-options.c (diskfs_S_fsys_set_options): Use
	rwlock_writer_lock instead of rwlock_reader_lock in DO_CHILDREN case.

Tue Jan 30 15:03:35 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* peropen-rele.c (diskfs_release_peropen): Free dotdotport when
 	deallocating peropen.

Wed Jan 24 18:14:28 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Use diskfs_create_protid instead
	of diskfs_make_protid, and deal with an error return.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* file-exec.c (diskfs_S_file_exec): Likewise.
	* file-inv-trans.c (diskfs_S_file_invoke_translator): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* io-duplicate.c (diskfs_S_io_duplicate): Likewise.
	* io-restrict-auth.c (diskfs_S_io_restrict_auth): Likewise.
	* trans-callback.c (_diskfs_translator_callback2_fn): Likewise.
	* boot-start.c (diskfs_start_bootstrap, diskfs_S_exec_startup_get_info,
	diskfs_execboot_fsys_startup, diskfs_S_fsys_init): Likewise.
	* protid-make.c (diskfs_start_protid): Return an error now, and use
	ports_create_port instead of ports_allocate_port.
	(diskfs_create_protid): New function.
	(diskfs_make_protid): Call diskfs_create_protid.
	* diskfs.h (diskfs_start_protid): Update declaration.
	(diskfs_create_protid): New declaration.
	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Use new version of
	diskfs_start_protid.
	* file-getcontrol.c (diskfs_S_file_getcontrol): Use ports_create_port
	instead of ports_allocate_port.
	* boot-start.c (start_execserver, diskfs_start_bootstrap): Likewise.
	* init-startup.c (diskfs_startup_diskfs): Likewise.
	* sync-interval.c (diskfs_set_sync_interval): Likewise.
	(periodic_sync): Pass in the MSG_ID arg to ports_begin_rpc, and
	deal with any error returned.

	* readonly.c (diskfs_set_readonly): Deal with ports_inhibit_class_rpcs
 	returning an error.
	* remount.c (diskfs_remount): Likewise.
	* shutdown.c (diskfs_shutdown): Likewise.
	* sync-interval.c (diskfs_set_sync_interval): Likewise.

	* dir-readdir.c: Include <fcntl.h>.

Tue Jan 23 16:28:47 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* opts-std-startup.c (startup_options): Put boot options in a
	separate group with a header.

Thu Jan 18 14:05:51 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* dir-readdir.c (diskfs_S_dir_readdir): Require read permission
 	before succeeding.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Deallocate ref to dotdot
 	after diskfs_make_peropen, because the latter does not eat a
 	reference.

	* fsys-getroot.c (diskfs_S_fsys_getroot): In symlink case, use
 	MOVE_SEND to return the dotdot port to the user.

Thu Jan 11 22:09:05 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* diskfs-pager.h (struct disk_image_user): New type.
	(diskfs_catch_exception, diskfs_end_catch_exception): Use it to
	maintain a linked list of catchers instead of just one.

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

	* Makefile (installhdrs): Add diskfs-pager.h.
	(OTHERSRCS): Add disk-pager.c.

Fri Jan  5 17:06:42 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* io-write.c: Return errors regardless of *AMT--writes are all or
	nothing.
	* io-read.c: Return errors regardless of *DATALEN--reads are all or
	nothing.

Thu Jan  4 16:11:35 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* disk-pager.c, diskfs-pager.h: New files.
	* exc.c: File removed.
	* Makefile (OTHERSRCS): Remove exc.c.
	* diskfs.h (diskfs_catch_exception, diskfs_end_catch_exception):
	Macros removed.
	(diskfs_register_memory_fault_area,
	diskfs_unregister_memory_fault_area): Decls removed.

	* diskfs.h: Use size_t instead of int for amounts in
	diskfs_node_rdwr prototype.
	* node-rdwr.c (diskfs_node_rdwr): Pass AMTREAD read/write to
 	_diskfs_rdwr_internal, instead of assuming it wrote the whole amount.
  	Update the node if anything was transferred, regardless of ERR.
	* rdwr-internal.c (_diskfs_rdwr_internal): Rewritten using
	pager_memcpy.
	Fix types of args: OFFSET to off_t, make AMT read/write size_t *.
	* priv.h: Fix args in _diskfs_rdwr_internal prototype.
	* io-write.c: Pass AMT read/write to _diskfs_rdwr_internal, and
	return success if any bytes were written.
	* io-read.c: Likewise.

Mon Jan  1 15:45:33 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): Use fshelp_exec_reauth().
	(setid, scan_ids): Functions deleted.

Thu Dec 28 14:21:42 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): Always reauth the proc port,
	as exec does not do it, even in the secure case.  Set the proc's
	owner too.

	* file-exec.c (setid): Don't touch the return params unless we succeed.
	Add SETID parameter, and just copy old into new unless it's set.
	Handle the NOLDGENIDS == 0 case correctly.
	(diskfs_S_file_exec): Use the new setid() properly.  Make sure that
	{GEN,AUX}{UIDS,GIDS} are always in a state where they can be freed.

Thu Dec 28 00:24:29 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* priv.h (end_using_protid_port): Don't calls ports_port_deref if
	CRED is null.

Wed Dec 27 17:32:21 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* file-exec.c (setid): New function.
	(scan_ids): Moved out of diskfs_S_file_exec.
	(diskfs_S_file_exec): Move duplicated code into setid().  Make the
	bogus auth port case work correctly.  Deleted old ifdefed-out code.
	Enable setuid code.

	* exc.c (diskfs_register_memory_fault_area): Register both
	preempter1 and preempter2 in REC instead of preempter1 twice.

Sat Dec 23 14:49:22 1995  Michael I. Bushnell p/BSG  <mib@gnu.ai.mit.edu>

	* exc.c: Entire file rewritten to use libc signal preemption
        facility.

Wed Dec 20 14:49:29 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-start.c (diskfs_S_fsys_init): Call proc_mark_exec on
	EXECPROCESS.

Tue Dec 19 13:19:19 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): Better attempt at
	setuid/setgid execution; still not entirely right, but mostly so.
	Will move this code to libfshelp before turning it on.

Thu Dec 14 15:51:19 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* diskfs.h (diskfs_checkdirmod): Correctly return error code for
 	failure, not 1.

Mon Dec  4 17:07:20 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* dir-unlink.c (diskfs_S_dir_unlink): Don't call fsys_goaway until
 	we've released our lock.

Mon Dec  4 16:57:28 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-unlink.c (diskfs_S_dir_unlink): Delete vestigial fetch_control.

Tue Nov 21 13:54:14 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* rdwr-internal.c (_diskfs_rdwr_internal): Declare PROT volatile.

	* init-first.c (master_thread_function): Declare to be `static
 	any_t'.

	* fsys-options.c: Include <string.h>.

	* diskfs.h (diskfs_get_options): Bother providing declaration.

	* file-get-fs-opts.c: Include <string.h>.
	(diskfs_S_file_get_fs_options): Dereference DATA_LEN in call to
	vm_allocate.

Sat Nov 18 09:01:28 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-start.c (diskfs_S_exec_startup_get_info): Renamed from
	diskfs_S_exec_startup, slightly different protocol.  Unused exec
	server stubs removed.
	* Makefile (MIGSTUBS): Replaced execServer.o with exec_startupServer.o.

Mon Nov 13 17:13:40 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* demuxer.c (diskfs_demuxer):
	diskfs_exec_server --> diskfs_exec_startup_server.

Mon Nov 13 16:28:27 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* file-lock-stat.c (diskfs_S_file_lock_stat): Lock around reads to
 	make sure they are mutually consistent.

	* io-readable.c (diskfs_S_io_readable): Set *AMOUNT to zero if
 	filepointer is past the end of the file.

Thu Nov  9 12:33:53 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* dir-link.c (diskfs_S_dir_link): Now that args are swapped,
 	deallocate port ref on FILECRED instead of DIRCRED.

Sun Nov  5 10:49:26 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (OTHERSRCS): Add opts-get.c.
	(FSSRCS): Add file-get-fs-opts.c.
	* file-get-fs-opts.c (diskfs_S_file_get_fs_options): New function.
	* fsys-options.c (diskfs_S_fsys_get_options): New function.
	* opts-get.c (diskfs_get_options): New function.

	* sync-interval.c (diskfs_sync_interval): New variable.
	(diskfs_set_sync_interval): Set DISKFS_SYNC_INTERVAL.

Sat Nov  4 23:17:50 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* file-get-trans.c (diskfs_S_file_get_translator): Initialize ERROR.

	* trans-callback.c (_diskfs_translator_callback2_fn):
	UNDERLYING_TYPE should be a pointer.  As should the UIDS & GIDS
	args to diskfs_make_protid.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Pass both callback args
	to fshelp_fetch_root.

	* filedev.c (diskfs_get_file_device): Give FLAGS argument to
	file_get_storage_info.

	* dir-lookup.c (diskfs_S_dir_lookup): Fix various typos.
	(short_circuited_callback1): Dereference ARGZ & ARGZ_LEN.
	Include <hurd/paths.h>

Wed Nov  1 15:56:45 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Add new callback arg to
	fshelp_fetch_root call.  Change short_circuited_callback1 to
	reflect the split into two callbacks (we use the global diskfs
	callback for the other_).
	* trans-callback.c (_diskfs_translator_callback1_fn,
	_diskfs_translator_callback2_fn): New functions, replacing the
	single original.
	(_diskfs_translator_callback1, _diskfs_translator_callback2):
	New variables, replacing the single original.
	* priv.h (_diskfs_translator_callback1, _diskfs_translator_callback2):
	Declare.

	* boot-start.c (diskfs_execboot_fsys_startup): Add FLAGS arg; use.
	* fsys-startup.c (diskfs_S_fsys_startup): Ditto.
	* init-startup.c (diskfs_startup_diskfs): Ditto.
	* diskfs.h (diskfs_startup_diskfs, diskfs_execboot_fsys_startup):
	Add FLAGS arg.

Mon Oct 30 13:20:12 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Move code for starting
 	short-circuited translators here, from _diskfs_translator_callback_fn.
	Inline code from node_is_translated.
	(node_is_translated): Function removed.
	(major, minor): New macros -- temporarily here until libc exports them.

Thu Oct 26 18:41:23 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* trans-callback.c (_diskfs_translator_callback_fn): Deal with
	short-circuited translators.
	* dir-lookup.c (node_is_translated): New function.
	(diskfs_S_dir_lookup): Use node_is_translated() instead of
	np->istranslated to see whether NP has a passive translator.

	* file-set-trans.c (diskfs_S_file_set_translator): Add missing else.
	Use makedev macro instead of doing it by hand.
	(makedev): New macro -- temporarily here until libc exports one.

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

	* fsys-options.c (diskfs_S_fsys_set_options): Only hold
 	DISKFS_FSYS_LOCK for writing while setting our own options; we
 	hold it for reading while setting our children's.

	* rdwr-internal.c (_diskfs_rdwr_internal): Get rid of CRED argument.
	* priv.h (_diskfs_rdwr_internal): Ditto.
	* node-rdwr.c (diskfs_node_rdwr): Ditto.
	* io-write.c (diskfs_S_io_write): Ditto.
	* io-read.c (diskfs_S_io_read): Ditto.

Wed Oct 18 15:52:53 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* diskfs.h (diskfs_get_filemap): Add prot parameter.
	(diskfs_max_user_pager_prot): New declaration.
	* rdwr-internal.c (_diskfs_rdwr_internal): Add argument CRED, and
	use it to decide how to setup the mapped i/o.
	* io-write.c (diskfs_S_io_write): Pass CRED to _diskfs_rdwr_internal.
	* io-read.c (diskfs_S_io_read): Ditto.
	* node-rdwr.c (diskfs_node_rdwr): Ditto.
	* io-map.c (diskfs_S_io_map): Pass the appropiate vm protection to
	diskfs_get_filemap.  If this node isn't O_RDWR, only return the
	appropiate memobj.
	Include <fcntl.h>.
	* priv.h (_diskfs_rdwr_internal): Add cred parameter.

	* boot-start.c (diskfs_execboot_fsys_startup): Open exec's
	realnode read-only for now, since we know it doesn't matter and
	having gratuitously writable nodes around prevents us from
	starting up or going read-only.
	(diskfs_S_fsys_init): Don't make the cwdir/crdir right with O_WRITE.
	* trans-callback.c (_diskfs_translator_callback_fn): Ditto for
	other translators.  The fsys_startup interface should change very
	soon and make this irrelevant.

	* readonly.c (diskfs_set_readonly): Return EBUSY if necessary.
	Add hack to try and work around pagers-can't-wait bug.

	* opts-common.c (diskfs_common_options): New variable.
	* priv.h (diskfs_common_options): New declaration.
	* opts-std-startup.c (startup_options): Remove options common to
	both runtime and startup.
	(startup_common_argp, startup_argp_parents): New variables.
	(startup_argp): Include parents.
	* opts-set.c (std_runtime_options): Remove options common to
	both runtime and startup.
	(diskfs_set_options): Use the common options.
	* Makefile (OTHERSRCS): Add opts-common.c.

	* diskfs.h (diskfs_fsys_lock): Change to a struct rwlock.
	Include <rwlock.h>
	* shutdown.c (diskfs_fsys_lock): Now a rwlock.
	(diskfs_shutdown): Lock DISKFS_FSYS_LOCK for writing.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Hold DISKFS_FSYS_LOCK
	for reading.
	* sync-interval.c (periodic_sync): Hold DISKFS_FSYS_LOCK for
	reading while syncing.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs): Ditto.
	* fsys-options.c (diskfs_S_fsys_set_options): Hold DISKS_FSYS_LOCK
	for writing.
	Dereference PT even when a child filesystem returns an error.
	* opts-set.c (diskfs_set_options): Don't hold DISKS_FSYS_LOCK (our
	caller should).

	* machdev.c (diskfs_get_mach_device): SIZE is in blocks.

Wed Oct 18 14:00:58 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): Return EACCES for attempts to
 	execute a directory.  Dike out totally bogus set[ug]id code.
  	Bother to lock NP around critical section.

Tue Oct 17 14:32:41 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* init-startup.c (diskfs_startup_diskfs): Call diskfs_readonly_changed
	if we're starting up writable.
	* diskfs.h (diskfs_readonly_changed, diskfs_reload_global_state,
	diskfs_node_reload, diskfs_set_readonly, diskfs_remount): New
	declarations.
	(diskfs_main_request_loop): Declaration removed.
	* Makefile (OTHERSRCS): Add readonly.c, remount.c.
	* readonly.c (diskfs_set_readonly): New function.
	* remount.c (diskfs_remount): New function.

	* opts-set.c (diskfs_set_options): Rework readonly transition &
	remounting.  Hold diskfs_fsys_lock.

	* diskfs.h (diskfs_fsys_lock): Renamed from diskfs_shutdown_lock.
	* shutdown.c (diskfs_shutdown): diskfs_shutdown_lock -->
	diskfs_fsys_lock.

Fri Oct 13 14:51:42 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* diskfs.h (diskfs_start_bootstrap): Get rid of ARGV argument.
	(diskfs_argv): New declaration.
	* boot-start.c (saved_argv): Variable removed.
	(diskfs_argv): New variable.  Should get set by default arg parser.
	(diskfs_start_bootstrap): Get rid of ARGV argument.
	(diskfs_S_fsys_init): Use DISKFS_ARGV instead of SAVED_ARGV.
	* opts-std-startup.c (parse_startup_opt): Set DISKFS_ARGV.
	* init-startup.c (diskfs_startup_diskfs): Call diskfs_start_bootstrap
 	if we're the bootstrap file system.

	* dev-globals.c (diskfs_device, diskfs_device_name,
	diskfs_device_start, diskfs_device_size, diskfs_device_block_size,
	diskfs_log2_device_block_size, diskfs_log2_device_blocks_per_page):
	New variables.
	* dev-io.c (diskfs_device_write_sync, diskfs_device_write_sync):
	New functions.
	* dev-open.c (diskfs_device_open): New function, new file.
	* diskfs.h (diskfs_device, diskfs_device_name,
	diskfs_device_start, diskfs_device_size, diskfs_device_block_size,
	diskfs_log2_device_block_size, diskfs_log2_device_blocks_per_page,
	diskfs_device_write_sync, diskfs_device_write_sync,
	diskfs_device_open, diskfs_console_stdio): New declarations.
	* console.c (diskfs_console_stdio): New function.
	* Makefile (OTHERSRCS): Add dev-open.c, dev-io.c, dev-globals.c,
	console.c.
	* opts-std-startup.c (diskfs_use_mach_device, diskfs_device_arg,
 	dev_startup_options, dev_startup_argp_parents, dev_startup_argp,
 	diskfs_device_startup_argp): New variables.
  	(parse_dev_startup_opt): New function.

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

	* boot-start.c (diskfs_execboot_fsys_startup): Fix args to dir_lookup.
	Declare PATHBUF and RETRY.

	* boot-start.c (diskfs_S_fsys_init): Put the contents of
	diskfs_init_completed in here, freeing that routine for user-use.

	* init-completed.c (diskfs_init_completed): Now empty.

	* opts-set.c (std_runtime_options): Renamed from long_options,
	convert to argp format.
	(SHORT_OPTIONS): Removed.
	(diskfs_set_options): Converted to use argp.
	* diskfs.h (diskfs_parse_runtime_options,
	diskfs_standard_startup_argp): Use argp, not options.
	Include <argp.h> instead of <options.h>.
	* opts-runtime-def.c (diskfs_parse_runtime_options): Use argp
	instead of options.
	* opts-std-startup.c (std_startup_options): Renamed from
	std_long_options; converted to argp format.
	(std_startup_argp): Renamed from std_startp_argp, converted argp fmt.
	(diskfs_standard_startup_argp): Renamed from
	diskfs_standard_startup_options.

Thu Oct 12 03:25:09 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-start.c (diskfs_execboot_fsys_startup): Use dir_lookup
	instead of hurd_file_name_lookup to open /servers/exec.

Mon Oct  9 03:42:49 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-start.c (diskfs_execboot_fsys_startup): Pass back a port to
	/servers/exec in *REAL.

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

	* init-completed.c (diskfs_init_completed): New function.
	* diskfs.h (diskfs_init_completed): must --> may.
	Add necessary includes.

	* Makefile (OTHERSRCS): Add init-completed.c.

Sat Oct  7 05:07:42 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (libdiskfs.so): Depend on libpager, libioserver,
	libfshelp, libthreads.

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

	* diskfs.h (diskfs_get_file_device, diskfs_get_mach_device): New funcs.
	(diskfs_boot_flags): New variable.
	(diskfs_bootflags, diskfs_bootflagarg): Variables deleted.

	* boot-start.c (diskfs_S_fsys_getpriv): Add the port type parameters.

	* Makefile (MIGSFLAGS): Variable deleted.
	(fs-MIGSFLAGS, io-MIGSFLAGS, ifsock-MIGSFLAGS): New variables.
	(fsys-MIGSFLAGS): Also import fsmutations.h.

	* dir-link.c (diskfs_S_dir_link): Swap first two arguments.

	* filedev.c (diskfs_get_file_device): Use new block_size return
	value from file_get_storage_info.

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

	* Makefile (OTHERSRCS): Remove boot-parse.c; add filedev.c & machdev.c.
	* diskfs.h (diskfs_host_priv, diskfs_master_device): Variables deleted.
	(diskfs_parse_bootargs): Function deleted.
	(diskfs_init_diskfs): Now returns error_t.
	* init-init.c (diskfs_init_diskfs): Always use get_privileged_ports.
	Now return error_t.
	* machdev.c (diskfs_get_mach_device): Use get_privileged_ports
	instead of diskfs_master_device.
	* boot-start.c (diskfs_S_fsys_getpriv): Use get_privileged_ports
	to get the privileged ports.
	(diskfs_start_bootstrap): Use diskfs_boot_flags instead of
	diskfs_bootflagarg.
	(diskfs_start_bootstrap, start_execserver): Look for flags
	directly in diskfs_boot_flags, instead of using the old
	diskfs_bootflags.
	* boot-start.c (diskfs_S_exec_startup): Use get_console to get the
	console device.
	(get_console): New function.
	* opts-std-startup.c (OPT_BOOTFLAGS, OPT_EXEC_SERVER_TASK,
	OPT_HOST_PRIV_PORT, OPT_DEVICE_MASTER_PORT): New defines.
	(std_long_opts, parse_std_startup_opt): Add the
	--device-master-port, --host-priv-port, --exec-server-task, and
	--bootflags options.

Thu Oct  5 00:46:09 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sync-interval.c (periodic_sync_lock): Variable removed.
	(diskfs_set_sync_interval): Use ports_inhibit_port_rpcs on `pi'
	instead of the spin lock.
	(periodic_sync): Don't use the lock.
	Put ports_begin_rpc before check of periodic_sync_thread.

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

	* filedev.c (diskfs_get_file_device): New file, new function.
	* machdev.c (diskfs_get_mach_device): New file, new function.

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

	* io-pathconf.c (diskfs_S_io_pathconf): Renamed from
	file_pathconf.c:diskfs_S_file_pathconf.
	* Makefile (FSSRCS): Deleted file-pathconf.c.
	(IOSRCS): Added io-pathconf.c.

Sun Sep 17 18:04:10 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-start.c (diskfs_S_exec_startup): Don't pass an argument
	string.  Set *FLAGS to EXEC_STACK_ARGS.

	* file-set-size.c: Renamed from file-trunate.c.
	(diskfs_S_file_set_size): Renamed from diskfs_s_file_truncate.
	If SIZE exceeds the file size, extend the file.
	* Makefile (FSSRCS): Rename file-truncate.c to file-set-size.c.

Sat Sep 16 13:10:21 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* ourfs_notify.defs: New file.
	* Makefile (DIST_FILES): Added ourfs_notify.defs.
	(ourfs_notify_U.h ourfs_notifyUser.c, ourfs_notify.defs): Targets
	removed.

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

	* diskfs.h (diskfs_lookup): Doc fix.
	* dir-clear.c (diskfs_clear_directory): Set the fourth arg in
 	REMOVE lookup calls in accord with change in rules for the lookup
 	call.

Wed Sep  6 11:30:24 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* demuxer.c (diskfs_demuxer): Use ports_notify_server and
	ports_interrupt_server instead of our own versions.
	* Makefile (SRCS): Removed $(NOTIFYSRCS) and $(INTSRCS).
	(NOTIFYSRCS, INTSRCS, notify-MIGSFLAGS): Removed.
	(MIGSTUBS): Removed notifyServer.o and interruptServer.o.
	* interrupt.c: File deleted.

Tue Aug 29 14:22:58 1995  Michael I. Bushnell, p/BSG  <mib@duality.gnu.ai.mit.edu>

	* io-select.c (diskfs_S_io_select): Don't check open modes or
	return EBADF.

Fri Aug 25 15:02:19 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (FSYSSRCS): Add fsys-forward.c.

Fri Aug 25 09:44:43 1995  Michael I. Bushnell, p/BSG  <mib@mole.gnu.ai.mit.edu>

	* file-truncate.c (diskfs_S_file_truncate): Bother to check the
 	return value of diskfs_truncate.

Wed Aug 23 14:39:07 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (REMHDRS): Removed.
	Rules dealing with ../lib removed.

Sat Jul 29 10:34:38 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* ifsock.c (diskfs_S_ifsock_getsockaddr): Don't loop infinitely if
	we fail to get a reasonable PF_LOCAL server.

Fri Jul 28 14:59:45 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* ifsock.c (diskfs_S_ifsock_getsockaddr): Try to restart the
	PF_LOCAL server if it dies.

	* node-drop.c (diskfs_drop_node): Don't actually drop the node if
	it is a socket naming point, unless it also has no links.

Sat Jul 22 13:54:48 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* file-getcontrol.c (diskfs_S_file_getcontrol): Fix typo.
	* boot-start.c (start_execserver): Likewise.

Fri Jul 21 12:37:36 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* trans-callback.c (_diskfs_translator_callback_fn): Use correct
 	sense of diskfs_readonly flag.

	* boot-start.c (diskfs_start_bootstrap): Free initial reference
	created by diskfs_make_protid.
	(diskfs_S_exec_startup): Likewise.
	(diskfs_S_fsys_init): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.  (Two places.)
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* file-exec.c (diskfs_S_file_exec): Likewise.
	* file-inv-trans.c (diskfs_S_file_invoke_translator): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* io-duplicate.c (diskfs_S_io_duplicate): Likewise.
	* io-restrict-auth.c (diskfs_S_io_restrict_auth): Likewise.
	* trans-callback.c (_diskfs_translator_callback_fn): Likewise.

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Free initial
	reference created by diskfs_start_protid.

	* boot-start.c (diskfs_start_bootstrap): Free initial reference
	created by ports_allocate_port.
	(start_execserver): Likewise.
	* file-getcontrol.c (diskfs_S_file_getcontrol): Likewise.
	* init-startup.c (diskfs_startup_diskfs): Likewise.

	* dir-lookup.c (diskfs_S_dir_lookup): Examine the active
 	translator on NP, not on diskfs_root_node, to see if translator
 	usage is necessary.

	* file-set-trans.c (diskfs_S_file_set_translator): Only validate
 	PASSIVELEN if PASSIVE is set.

Tue Jul 18 16:12:20 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* init-first.c (thread_timeout, server_timeout): New vars.
	(THREAD_TIMEOUT, SERVER_TIMEOUT): Delete macros.
	(master_thread_function): Use vars instead of macros.

	* file-get-trans.c (diskfs_S_file_get_translator): Conform to new
 	memory semantic of diskfs_get_translator.

Wed Jul 12 16:39:24 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* shutdown.c (diskfs_shutdown): Call ports_resume_class_rpcs for
 	diskfs_protid_class before return EBUSY.

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

	* Makefile (ourfs_notify_U.h ourfs_notifyUser.c): Use
 	ourfs_notify.defs instead of directly out of the include
 	directory.
	(ourfs_notify.defs): New target.

	* Makefile: Removed dependencies that are now automatically
 	generated.

Mon Jun 26 15:38:07 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* fsys-goaway.c (diskfs_S_fsys_goaway): Include "fsys_S.h" and
	"fsys_reply_U.h".  New parms REPLY and REPLY_TYPE.  Send
	fsys_goaway reply message before exit.
	* Makefile (fsys-MIGSFLAGS): New variable.
	* fsys-startup.c (diskfs_S_fsys_startup): New parms REPLY and
        REPLYTYPE.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* fsys-options.c (diskfs_S_fsys_set_options): Likewise.
	* boot-start.c (diskfs_S_fsys_getpriv): Likewise.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs): Likewise.
	* fsys-getfile.c (diskfs_S_fsys_getfile): Include "fsys_S.h".  New
	parms REPLY and REPLYTYPE.

	* sync-interval.c (periodic_sync_thread, periodic_sync_lock):
        Declare static.
	(control): Delete var.
	(pi): New var.
	(diskfs_set_sync_interval): Set PI instead of CONTROL.
	(periodic_sync): Do sync by hand; use ports routines around it
	properly.

	* shutdown.c (diskfs_shutdown): Fix parentheses on bitwise tests.

	* fsys-goaway.c (diskfs_S_fsys_goaway): If diskfs_shutdown returns
	zero, then exit here.
	* shutdown.c (diskfs_shutdown): Don't actually exit; return zero
        instead.
	* init-first.c (master_thread_function): Exit when shutdown
        returns zero.

	* file-set-trans.c (diskfs_S_file_set_translator): Ignore harmless
	errors from fsys_goaway.
	* shutdown.c (diskfs_shutdown): Ignore harmless errors from
        fsys_goaway.
	* fsys-options.c (diskfs_S_fsys_set_options/helper): Ignore
	harmless errors from fsys_set_options.

	* file-set-trans.c (diskfs_S_file_set_translator): Fix parentheses
	on first active EXCL check.

Fri Jun 23 15:43:55 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* fsys-options.c (diskfs_S_fsys_set_options) [helper]: Unlock NP
        around fsys call.
	* file-syncfs.c (diskfs_S_file_syncfs) [helper]: Likewise.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs) [helper]: Likewise.
	* shutdown.c (diskfs_shutdown) [helper]: Likewise.

Thu Jun 22 14:48:46 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* priv.h (_diskfs_translator_callback): Must be extern to force
	inclusion of trans-callback.c.

	* dir-lookup.c (diskfs_S_dir_lookup): Correctly parethenize
	O_NOTRANS flags test.

Tue Jun 20 11:52:24 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* node-make.c (diskfs_make_node): Fix function name
	fshelp_init_transbox -> fshelp_transbox_init.

	* file-syncfs.c: Include <hurd/fsys.h>.
	* fsys-syncfs.c: Likewise.

	* file-syncfs.c (diskfs_S_file_syncfs) [helper]: First arg to
	fshelp_fetch_control should be &NP->transbox, not NP.
	* fsys-options.c (diskfs_S_fsys_set_options) [helper]: Likewise.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs) [helper]: Likewise.
	* shutdown.c (diskfs_shutdown) [helper]: Likewise.

	* file-set-trans.c (diskfs_S_file_set_translator): Remove
        assignment from if test.
	* node-rdwr.c (diskfs_node_rdwr): Likewise.

Mon Jun 19 16:32:12 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* diskfs.h (diskfs_node_iterate): New (user-provided) function.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs): Use diskfs_node_iterate
	instead of diskfs_sync_translators.
	* file-syncfs.c (diskfs_S_file_syncfs): Likewise.
	* shutdown.c (diskfs_shutdown): Likewise.
	* fsys-options.c (diskfs_S_fsys_set_options): Likewise.

	* dir-rmdir.c (diskfs_S_dir_rmdir): Don't attempt anything for
	translated directories here; just return EBUSY.
	* dir-unlink.c (diskfs_S_dir_unlink): Don't do massively
	complicated fsys_goaway.  Instead, call it at the end (but only if
	this was the last link) and ignore errors.

	* fsys-startup.c (diskfs_S_fsys_startup): Strip out support for
	translators; fshelp now does that itself.

	* file-set-trans.c: Include <hurd/fsys.h>.

	* file-set-trans.c (diskfs_S_file_set_translator): Use new
	translator interface throughout.
	* dir-lookup.c (diskfs_S_dir_lookup): Use new translator startup
        interface.

Fri Jun 16 17:42:44 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* file-get-transcntl.c (diskfs_S_file_get_translator_cntl): Use
	fshelp_fetch_control instead of old interface.

Wed Jun 14 15:52:30 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* node-drop.c (diskfs_drop_node): Call fshelp_drop_transbox
	instead of fshelp_kill_translator; do it *after* the truncate.
	* node-make.c (diskfs_make_node): Initialize TRANSBOX member using
	new function.  Drop initialization of TRANSLATOR member.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Use new translator
        startup interface.
	* Makefile (OTHERSRCS): Removed trans-start.c, trans-destroy.c,
        and trans-sync.c.  Added trans-callback.c.
	* trans-start.c, trans-destroy,c, trans-sync.c: Deleted files.
	* trans-callback.c: New file.
	* priv.h (_diskfs_translator_callback): New declaration.
	* diskfs.h (diskfs_start_translator, diskfs_destroy_translator,
	diskfs_sync_translators):
	Delete declarations.
	(struct node): Replace TRANSLATOR member with new TRANSBOX member.
	(diskfs_get_translator): Specify new calling interface.

Fri Jun  9 15:48:30 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* rdwr-internal.c (_diskfs_rdwr_internal): Cast __VM_PAGE_SIZE in
        comparisen.
	* io-write.c (diskfs_S_io_write): Cast DATALEN to off_t in
        comparisons.
	* io-read.c (diskfs_S_io_read): Cast MAKREAD to off_t in
        comparison.
	* io-prenotify.c (diskfs_S_io_prenotify): Cast END to off_t in
	comparison.
	* file-get-trans.c (diskfs_S_file_get_translator): Declare
	variable `buflen' and various variables `len' to be unsigned.
	* file-exec.c (diskfs_S_file_exec): Declare both variables `i' to
        be unsigned int.

	* io-async-icky.c (diskfs_S_io_get_icky_async_id): Validate CRED.

	* interrupt.c (diskfs_S_interrupt_operation): Bother to implement.

	* init-init.c (diskfs_init_diskfs): Pass null second argument in
	calls to ports_create_class.

	* fsys-options.c (diskfs_S_fsys_set_options): Bother validating
	FSYS and implementing DO_CHILDREN.

	* dir-lookup.c (diskfs_S_dir_lookup): Initialize GIDS, NUIDS, and
	NGIDS to avoid warning.

	* boot-start.c: Provide unused attributes where appropriate.
	* file-chg.c (diskfs_S_file_notice_changes): Mark parameters as
	unused.
	* file-getfh.c (diskfs_S_file_getfh): Likewise.
	* file-inv-trans.c (diskfs_S_file_invoke_translator): Likewise.
	* fsys-getfile.c (diskfs_S_fsys_getfile): Likewise.
	* init-init.c (_diskfs_control_clean): Likewise.
	* io-async.c (diskfs_S_io_async): Likewise.
	* notify-stubs.c: Likewise.
	* file-pathconf.c (diskfs_S_file_pathconf): Declare NAME to be
        unused.
	* io-select.c (diskfs_S_io_select): Declare ATTRIBUTE unused.
	* io-stubs.c (diskfs_S_io_postnotify): Declare parms START and END
        unused.
	* io-prenotify.c (diskfs_S_io_prenotify): Declare parm START
	unused.

	* diskfs.h (diskfs_transboot_class): Delete var.
	* init-init.c (diskfs_transboot_class): Delete var.
	(diskfs_init_diskfs): Don't initialize it.

	* dir-rename.c (diskfs_S_dir_rename): After renaming directory,
	synchronize relevant state if DISKFS_SYNCHRONOUS.

Thu Jun  8 19:01:25 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* diskfs.h (diskfs_pager_users): New function.
	* shutdown.c (diskfs_shutdown): Rewrote to use new ports interface
	adequately.

Tue Jun  6 13:50:13 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* init-first.c (diskfs_spawn_first_thread): Call our own
	thread function instead of the ports one directly.
	(master_thread_function): New function.

	* notify-nosenders.c (diskfs_do_seqnos_mach_notify_no_senders):
	Don't help support pagers here at all.
	* demuxer.c (diskfs_demuxer): Don't call pager_demuxer.

	* boot-start.c (diskfs_start_bootstrap): Use new args for
	ports_allocate_port.
	(start_execserver): Likewise.
	* init-startup.c (diskfs_startup_diskfs): Likewise.
	* protid-make.c (diskfs_start_protid): Likewise.
	* file-getcontrol.c (diskfs_S_file_getcontrol): Likewise.
	* sync-interval.c (diskfs_set_sync_interval): Likewise.

	* boot-start.c (diskfs_S_exec_startup): Use ports_lookup_port and
	ports_port_deref instead of ports_check_port_type and
	ports_done_with_port.
	(diskfs_execboot_fsys_startup): Likewise.
	(diskfs_S_fsys_init): Likewise.
	(diskfs_S_fsys_getpriv): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.
	* fsys-goaway.c (diskfs_S_fsys_goaway): Likewise
	* fsys-startup.c (diskfs_S_fsys_startup): Likewise.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs): Likewise.
	* notify-nosenders.c (diskfs_do_seqnos_mach_notify_no_senders):
	Likewise.
	* priv.h (begin_using_protid_port): Use ports_lookup_port.
	(end_using_protid_port): Use ports_port_deref.

	* trans-start.c (fshelp_transboot_port_type): Deleted var.
	* priv.h (enum porttype): Delete.
	* demuxer.c: Renamed from ports-demuxer.c.
	(diskfs_demuxer): Renamed from ports_demuxer.
	* init-init.c (diskfs_protid_class, diskfs_transboot_class,
	diskfs_control_class, diskfs_initboot_class,
	diskfs_execboot_class, diskfs_port_bucket): New vars.
	(diskfs_init_diskfs): Don't call libports_initialize.
	Initialize diskfs_protid_class, diskfs_transboot_class,
	diskfs_control_class, diskfs_initboot_class,
	diskfs_execboot_class, and diskfs_port_bucket.
	* diskfs.h: (diskfs_shutdown_soft_ports): Deleted decl.
	(ports_demuxer): Deleted decl.
	(diskfs_demuxer): New decl.
	(diskfs_protid_class, diskfs_transboot_class, diskfs_control_class,
	diskfs_initboot_class,diskfs_execboot_class, diskfs_port_bucket):
	New decls.
	* ports-noports.c, ports-clean.c, ports-soft.c, ports-idle.c,
	ports-consts.c, pager-consts.c, init-loop.c: Deleted files.
	* Makefile (OTHERSRCS): Deleted ports-noports.c, ports-clean.c,
	ports-soft.c, ports-consts, pager-consts.c, init-loop.c, and
	ports-idle.c.
	Replace ports-demuxer.c with demuxer.c.

Mon May 22 13:52:16 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* opts-set.c (diskfs_set_options): Don't fall through to the error
	case from the 's' one!
	Use ARG instead of the global OPTARG.

Sat May 20 01:11:05 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* file-getcontrol.c (diskfs_S_file_getcontrol): Unlock
	_diskfs_control_lock lock instead of locking it again!

Fri May 19 21:22:14 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* opts-set.c (diskfs_set_options): New function in new file.
	* opts-runtime-def.c (diskfs_parse_runtime_options): Ditto.
	* opts-std-startup.c (diskfs_standard_startup_options): New
	exported variable in new file.
	* fsys-options.c (diskfs_S_fsys_set_options): Extract the argument
	vector and call diskfs_set_options.
	* diskfs.h: (diskfs_standard_startup_options): Declare new variable.
	(diskfs_set_options): Declare new function.
	(diskfs_parse_runtime_options): Ditto.
	Include <options.h> (currently in ../lib).
	* Makefile (OTHERSRCS): Add opts-set.c, opts-std-startup.c, and
	opts-runtime-def.c.
	(OBJS): Add argz.o & options.o.
	(REMHDRS): Add argz.h & options.h.

Tue May 16 17:36:46 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* init-first.c (diskfs_spawn_first_thread): Don't start syncing here.
	* init-startup.c (diskfs_startup_diskfs): Do it here instead.

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

	* diskfs.h (diskfs_set_options): Declare.
	* fsys-options.c (diskfs_S_fsys_set_options): Extract argc & argv,
	and call diskfs_set_options.
	* def-set-options.c: New file (contains a default diskfs_set_options).

	* Makefile (OBJS): Add argz.o (from ../lib).  It shouldn't hurt to
	have this in libdiskfs, since we need it...
	(CPPFLAGS): Add -I../lib, to get argz.h, + $(CPPFLAGS-$(notdir $<))
	Set the vpath for %.c to ../lib, so we get argz.c.
	(OTHERSRCS): Add def-set-options.c.

Sat May 13 03:08:35 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-parse.c (diskfs_execserver_task): New variable.
	(diskfs_parse_bootargs): Take a third integer arg before the
	device name, our name for the task port of the exec server, which
	is loaded and ready to run but suspended.
	* boot-start.c (start_execserver): Don't create and load a task;
 	the exec server file is no longer linked into the filesystem.
  	Just set the bootstrap port of diskfs_execserver_task and resume
 	it.

Fri May 12 16:22:33 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* fsys-readonly.c (diskfs_S_fsys_set_options,
	diskfs_S_fsys_mod_readonly): Change from mod_readonly to
	set_options.  This file is now actually called fsys-options.c.
	* Makefile (FSYSSRCS): Rename fsys-readonly.c to fsys-options.c.

	* sync-interval.c (diskfs_set_sync_interval): New function (in a
	new file) that establishes a thread to periodically sync the
	filesystem.
	* Makefile (OTHERSRCS): Add sync-interval.c and sync-default.c.
	* diskfs.h: Add declarations of diskfs_set_sync_interval and
	diskfs_default_sync_interval.

	* init-first.c (diskfs_spawn_first_thread): Start background syncing.
	* sync-default.c (diskfs_default_sync_interval): A new variable
	that defines a default initial sync interval.

Fri May 12 15:45:43 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* io-read.c (diskfs_S_io_read): If the offset is past the end of
	the file, then return EOF.

Thu Apr 27 20:01:16 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* node-drop.c (diskfs_drop_node): Deal cleanly with errors in
        diskfs_truncate.

	* diskfs.h (diskfs_nrele, diskfs_nput): We need to hold a real
	reference around the call to diskfs_try_dropping_softrefs, because
	that's a user-supplied routine that might itself rely on the
	reference counting system.

Thu Apr 20 18:54:26 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* node-create.c (diskfs_create_node): Return EROFS if diskfs_readonly.

Tue Apr  4 20:20:40 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* dir-unlink.c (diskfs_S_dir_unlink): Do fsys_goaway for
	translated nodes being unlinked.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise.

Tue Apr  4 18:33:35 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): However, replacing *MAKE_SEND*
	with COPY_SEND just doesn't work...

Tue Apr  4 14:31:51 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): Using MOVE_SEND in call to
	exec_exec loses, because it consumes a reference, which will be
	consumed again by mach_msg_server if we return an error.  So use
	COPY_SEND instead, and deallocate the rights ourselves only when
	we are to return success.

Fri Mar 31 12:25:57 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* file-set-trans.c (diskfs_S_file_set_translator): Only destroy
	existing active translator if ACTIVE_FLAGS will change it.  If the
	existing active translator is provided then don't do anything.

Fri Mar 17 11:36:40 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* io-stat.c (diskfs_S_io_stat): Typo.

	* diskfs.h: Back out changes to protid and associated permission
	checking functions.
	* file-chmod.c (diskfs_S_file_chmod): Likewise.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* file-getcontrol.c (diskfs_S_file_getcontrol): Likewise.

	* dir-link.c (diskfs_S_dir_link): Fix typo.

	* diskfs.h (_diskfs_idcheckdirmod): `diskfs_hasuid' ->
        diskfs_idhasuid.
	* priv.h (CHANGE_NODE_FIELD): Remove trailing space on backslashed
	line.

	* diskfs.h (_diskfs_idcheckdirmod): `cred' -> `id'.
	(diskfs_idhasgid): Likewise.

	* dir-clear.c (diskfs_clear_directory): Don't do
        diskfs_synchronous here.
	* dir-init.c (diskfs_init_dir): Likewise.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Repair implementation of
        diskfs_syncronous.
	* dir-renamed.c (diskfs_rename_dir): If we are synchronous,
	sync the one node our parent doesn't have access to.
	* dir-mkdir.c (diskfs_S_dir_mkdir): Implement diskfs_synchronous.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Likewise.
	* dir-lookup.c (diskfs_S_dir_lookup): Likewise.
	* io-read.c (diskfs_S_io_read): Likewise.
	* fsys-syncfs.c (diskfs_S_fsys_syncfs): Likewise.
	* node-drop.c (diskfs_drop_node): Likewise.
	* node-rdwr.c (diskfs_node_rdwr): Likewise.

Wed Mar 15 11:54:12 1995  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* conch-fetch.c (ioserver_fetch_shared_data): Implement
        diskfs_synchronous.
	* dir-clear.c (diskfs_clear_directory): Likewise.
	* dir-init.c (diskfs_init_dir): Likewise.
	* dir-renamed.c (diskfs_rename_dir): Likewise.

Wed Mar  8 16:36:04 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* diskfs.h (diskfs_synchronous): New variable.
	* priv.h (CHANGE_NODE_FIELD): If DISKFS_SYNCHRONOUS, then sync
	node after possibly changing it.
	* io-seek.c: Prevent diskfs_synchronous from having its usual
        effect here.
	* dir-link.c (diskfs_S_dir_link): Implement diskfs_synchronous.
	* dir-rename.c (diskfs_S_dir_rename): Likewise.
	* dir-rmdir.c (diskfs_S_dir_rmdir): Likewise
	* dir-unlink.c (diskfs_S_dir_unlink): Likewise.
	* file-sync.c (diskfs_S_file_sync): Likewise.
	* file-syncfs.c (diskfs_S_file_syncfs): Likewise.
	* io-prenotify.c (diskfs_S_io_prenotify): Likewise.
	* io-stat.c (diskfs_S_io_stat): Likewise.
	* io-write.c (diskfs_S_io_write): Likewise.
	* io-sigio.c (diskfs_S_io_sigio): Likewise.

Tue Mar  7 15:21:09 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* diskfs.h (struct userid): New type.
	(struct protid): Replace UIDS, GIDS, NUIDS, and NGIDS with ID.
	(diskfs_isuid): Replace with new function diskfs_idhasuid.
	(diskfs_groupmember): Replace with new function diskfs_idhasgid.
	(_diskfs_idisowner, _diskfs_idaccess, _diskfs_idcheckdirmod):
	New functions.
	(diskfs_isowner): Check each ID in the chain with
	_diskfs_idisowner.
	(diskfs_access): Check each ID in the chain with _diskfs_idaccess.
	(diskfs_checkdirmod): Check each ID in the chain with
	_diskfs_idcheckdirmod.
	* file-chmod.c (diskfs_S_file_chmod): Perform the permission
	check for each ID in the chain.
	* file-chown.c (diskfs_S_file_chown): Likewise.
	* file-getcontrol.c (diskfs_S_file_getcontrol): Likewise.

	* boot-parse.c (diskfs_parse_bootargs): Use assert_perror instead
	of assert where appropriate.
	* boot-start.c (diskfs_start_bootstrap): Likewise.
	(diskfs_S_fsys_init): Likewise.
	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Likewise.
	* rdwr-internal.c (_diskfs_rdwr_internal): Likewise.

Thu Jan 19 02:04:34 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (ourfs_notify_U.h ourfs_notifyUser.c): Make this
	instead of ourmsg_U.h.  All references changed.
	* dir-chg.c: Undo renaming.  Includ ourfs_notify_U.h instead of
	ourmsg_U.h.

	* io-select.c: Updated to new io_select protocol.

	* dir-chg.c (diskfs_S_dir_notice_changes): Call
	nowait_msg_dir_changed instead of nowait_dir_changed.

Sat Dec 10 20:03:07 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-start.c (start_execserver): When aligning bss size for
	vm_allocate, don't include bss start alignment fixup offset.

Fri Dec  9 02:06:35 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* io-read.c (diskfs_S_io_read): Don't check for MAXREAD<0.

	* io-write.c: Use mach_msg_type_number_t in place of unsigned int
        and int.
	* io-readable.c: Likewise.
	* io-read.c: Likewise.

Wed Nov 23 00:26:48 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* ports-demuxer.c (ports_demuxer): Call
	diskfs_seqnos_notify_server, not seqnos_notify_server.

Fri Nov 11 13:11:35 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* io-read.c (diskfs_S_io_read): If OFF is past the end of the
	file, don't set MAXREAD to a negative number; that will crash
	rdwr_internal.

Wed Nov  9 01:46:18 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* file-exec.c: Include <hurd/paths.h>.
	(diskfs_S_file_exec): If diskfs_exec isn't already
	set, try to open it here.  (Later, we should also deal if
	exec_exec returns that the previous server died.)

Tue Nov  8 00:06:56 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* file-get-trans.c: Include <stdio.h> for asprintf decl.

Wed Nov  2 16:16:57 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* priv.h (CHANGE_NODE_FIELD): Don't call diskfs_node_update here.

Fri Oct 28 18:26:15 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-parse.c (diskfs_parse_bootargs): Make stdout line buffered.
	(diskfs_parse_bootargs): Use getline instead of scanf.
	* boot-start.c (diskfs_start_bootstrap): Likewise.
	(diskfs_S_fsys_init): Create a root port with two send right refs
	and install it as crdir and cwdir.

Tue Oct 25 14:16:50 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* boot-start.c (diskfs_start_bootstrap): Renamed variable ARGV
        to be EXEC_ARGV and ARGVLEN to be EXEC_ARGVLEN.

Fri Oct  7 01:30:12 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-parse.c (diskfs_parse_bootargs): Open console for reading too.

	* boot-start.c (saved_argv): New static variable.
	(diskfs_start_bootstrap): Take arg ARGV; store it in saved_argv.
	(diskfs_S_fsys_init): Construct a portarray and call _hurd_init.
	Or, if _hurd_ports is already allocated, call _hurd_proc_init.
	* diskfs.h (diskfs_start_bootstrap): Update prototype.

Thu Oct  6 17:47:42 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* boot-start.c (diskfs_S_fsys_init): Allocate a reference on
	authhandle before allowing the library to consume one.

Wed Oct  5 13:00:46 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* node-drop.c (diskfs_drop_node): Clear passive translator
	if we are releasing the inode.

Thu Sep 29 18:12:31 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-parse.c (diskfs_parse_bootargs): If we have a bootstrap
	port, talk to the CMU default pager on it, then clear it.

Fri Sep 23 00:15:52 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* diskfs.h (diskfs_lost_hardrefs): Doc fix.
	(diskfs_try_dropping_softrefs): New declaration.
	(diskfs_nput): Always call diskfs_lost_hardrefs if the last
	hardref goes away; call diskfs_try_dropping_softrefs if the
	link count has vanished too.
	(diskfs_nrele): Likewise.
	(diskfs_nref): Lock node during call to diskfs_new_hardrefs.

Thu Sep 22 21:20:40 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* diskfs.h (struct node): New member `istranslated'.
	(diskfs_node_translated): Deleted function.
	* dir-lookup.c (diskfs_S_dir_lookup): Use istranslated field
	instead of diskfs_node_translated.
	* file-get-trans.c (diskfs_S_file_get_translator): Likewise.
	* file-inv-trans.c (diskfs_S_file_invoke_translator): Likewise.
	* file-set-trans.c (diskfs_S_file_set_translator): Likewise.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.

Fri Sep 16 11:53:04 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* file-set-trans.c (diskfs_S_file_set_translator): Use new
	lock on translator fields; don't hold it and the NP lock
	simultaneously.
	* trans-destroy.c (diskfs_destroy_translator): Doc fix.

	* dir-lookup.c (diskfs_S_dir_lookup): Turn off *all* flags
	in call to getroot if we aren't the last component.

Thu Sep 15 13:01:21 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* init-init.c (diskfs_init_diskfs): Restore commented-out
	initialization of diskfs_auth_server_port.

Mon Sep 12 14:38:54 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* fsys-getroot.c (diskfs_S_fsys_getroot): Clear translator
	port if we get MIG_SERVER_DIED, as with MACH_SEND_INVALID_DEST.

Sun Sep 11 23:30:13 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Copy PATHBUF into RETRYNAME
	properly when symlink target begins with a slash.

Sat Sep 10 08:36:08 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (OTHERSRCS): Add init-startup.c.
	* init-init.c (_diskfs_dotdot_file): Variable removed.
	(diskfs_init_diskfs): Take no args; return void.
	Don't do fsys_startup here.
	* init-startup.c (diskfs_startup_diskfs): New file, new function.
	Do fsys_startup here instead.
	* diskfs.h (diskfs_init_diskfs): Update prototype.
	(diskfs_startup_diskfs): Declare it.

	* dir-lookup.c (diskfs_S_dir_lookup): Use error_t for ERROR.
	Retry when fsys_getroot returns MIG_SERVER_DIED, as with
	MACH_SEND_INVALID_DEST.

Fri Sep  9 13:04:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup) [EAGAIN]: Only copy
	into RETRYNAME if this isn't the last component.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Set *RETRY
	and *RETRYNAME properly on normal return.

	* init-init.c (diskfs_init_diskfs): Don't attempt to continue
	if fsys_startup fails.  Deallocate BOOTSTRAP after using it.

Wed Sep  7 09:52:52 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* trans-start.c (diskfs_start_translator): Don't give write
	access to underlying node if it's not IFREG.

	* dir-lookup.c (diskfs_S_dir_lookup): When returning a port
	passed back from fsys_getroot, use MACH_MSG_TYPE_MOVE_SEND,
	not the local default of MAKE_SEND.

	* trans-start.c (diskfs_start_translator): Removed assert.

Tue Sep  6 15:30:59 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* dir-lookup.c (diskfs_S_dir_lookup): Translator startup code
	rewritted to be more robust and use new locking protocol
	on translink structures.
	* trans-start.c (diskfs_start_translator): Don't pass LOCK arg
	to diskfs_start_translator.  Unlock NP around call to
	diskfs_start_translator.  Don't expect DIR to be deallocated.

Thu Sep  1 12:28:03 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* trans-start.c (diskfs_start_translator): Expect right
	on DIR and NPPORT to be consumed by fshelp_start_translator.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Allocate additional
	send-right for DOTDOT to be consumed by diskfs_start_translator.
	Be careful to deallocate DOTDOT when appropriate.
	* dir-lookup.c (diskfs_S_dir_lookup): Create DIRFILE from
	DNP, not NP.   Create local reference for dirfile to use
	in call to fsys_getroot.

	* boot-start.c (diskfs_start_bootstrap): Give the
	library values for current working and root directories.

	* trans-start.c (diskfs_start_translator): Fix and enable.
	* diskfs.h (diskfs_start_translator): Add new third arg to
	prototype.
	* dir-lookup.c (diskfs_S_dir_lookup): Provide third arg to
	diskfs_start_translator.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.

Wed Aug 31 12:04:51 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec) [reauth]: Destroy REF after
	using it.

	* file-get-trans.c (diskfs_S_file_get_translator)
	[S_ISCHR || S_ISBLK]: Correct cast of second arg to vm_allocate.

	* Makefile (FSYSSRCS): Added fsys-readonly.c and fsys-syncfs.c.
	* fsys-readonly.c, fsys-syncfs.c: New files.

Wed Aug 31 01:50:07 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* boot-parse.c (diskfs_parse_bootargs): Fix scanf format for
	bootstrap filesystem device name.

	* file-exec.c (diskfs_S_file_exec): For S_ISUID|S_ISGID, create
	new auth handle and reauthenticate passed ports properly.

Tue Aug 30 13:44:29 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* file-exec.c (diskfs_S_file_exec): Don't bother setting
	EXEC_NEWTASK for non-readable execs; it doesn't really work
	anyhow.

	* init-init.c: Call ports_get_right with the result of
	ports_allocate_port in call to fsys_startup.

	* trans-sync.c (diskfs_sync_translators): Use fsys_syncfs
	instead of old ugly method.

	* init-init.c: Include <hurd/fsys.h>.

	* boot-start.c (diskfs_start_bootstrap): Check to make sure return
	from fsys_getroot and dir_lookup is FS_RETRY_NORMAL with empty
	retry_name instead of old FS_RETRY_NONE.
	* dir-lookup.c (diskfs_S_dir_lookup): Initialize return values with
	FS_RETRY_NORMAL and empty retryname instead of old FS_RETRY_NONE.

	* Makefile (FSSRCS): Remove dir-pathtrans.c; add dir-lookup.c.
        * dir-lookup.c: Renamed from dir-pathtrans.c.
	* dir-pathtrans.c (diskfs_S_dir_lookup): Renamed from
	diskfs_S_dir_pathtrans.
	* boot-start.c (diskfs_start_bootstrap): Call dir_lookup instead
	of dir_pathtrans.
	* ifsock.c (diskfs_S_ifsock_getsockaddr): Call file_name_lookup
	instead of path_lookup.

Mon Aug 29 12:51:42 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Use new
	protocol for auth_server_authenticate.

Fri Aug 26 12:49:09 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* file-set-trans.c (diskfs_S_file_set_translator): Rename args;
	split flags arg into two.  Interpret flags according to new
	scheme.

Thu Aug 18 12:58:44 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* boot-parse.c (diskfs_parse_bootargs): Print informative
	bootstrap message.
	* boot-start.c (diskfs_start_bootstrap): Likewise.
	(start_execserver): Likewise.

	* boot-start.c (diskfs_start_bootstrap): Only do `pausing'
	hack if RB_KDB was in bootstrap args.
	(start_execserver): Likewise.

	* io-select.c (diskfs_S_io_select): Add new `porttype' arg.

Thu Aug 11 13:05:40 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Set retry stuff
	correctly if there are more components after translator
	fsys_getroot.

Sat Jul 23 02:25:54 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (notify-MIGSFLAGS): New variable: -DSEQNOS.

	* ports-demuxer.c (ports_demuxer): Prepend diskfs_ to Hurd
	interface server functions.

Fri Jul 22 10:54:23 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile: Changed to use new scheme.
	* boot-start.c: Include "fsys_reply_U.h" instead of "fsys_reply.h".
	* dir-chg.c: Include "ourmsg_U.h" instead of "msg.h".
	* fsmutations.h SERVERPREFIX): Delete macro.

	* diskfs.h (struct thread_stuff, diskfs_catch_exception,
	diskfs_end_catch_exception): Moved here from diskfs_machdep.
	Delete inclusion of diskfs_machdep.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Skip leading
	slashes instead of returning an error.

Tue Jul 19 22:12:29 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Fix fsys_getroot call:
	MACH_MSG_TYPE_MOVE_SEND instead of MACH_PORT_RIGHT_MOVE_SEND.

Tue Jul 19 18:37:52 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* boot-start.c (diskfs_start_bootstrap): Create root port
	before calling fsys_getroot on exec server.  Pass root port
	as exec server's dotdot node.
	(diskfs_execboot_fsys_startup): Deleted dotdot args.
	* diskfs.h (diskfs_execboot_fsys_startup): Deleted dotdot args.
	* dir-pathtrans.c (diskfs_S_dir_pathtrans) [translator startup]:
	Set dirfile always, not just when invoking the passive translator.
	Pass dirfile to fsys_getroot.  Clean up deallocate of dirfile.
	* file-inv-trans.c (diskfs_S_file_invoke_translator): Comment
	out code; this function should vanish.
	* priv.h (_diskfs_dotdot_file): Deleted variable.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Use new arg `dotdot'
	in place of _diskfs_dotdot_file.  Pass dotdot in call to
	fsys_getroot.
	* trans-sync.c (diskfs_sync_translators): Pass grunge as dotdot
	arg in call to fsys_getroot.
	* fsys-startup.c (diskfs_S_fsys_startup): Deleted dotdot args;
	don't pass them in calls to helper functions.
	* init-init.c (diskfs_init_diskfs): Don't expect dotdot arg
	from fsys_getroot; don't set _diskfs_dotdot_file.

Mon Jul 18 15:24:30 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* file-inv-trans.c: New file.
	* Makefile (FSSRCS): Added file-inv-trans.c.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Dereference
	returned_port in check for null.
	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Likewise.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): After
	diskfs_start_translator, set var `control'.

	* fsys-getroot.c (diskfs_S_fsys_getroot): After getting
	MACH_SEND_INVALID_DEST from the translator, set error to zero
	so that the user's open completes normally.  Do other fixes
	from Jul 7 that were made in dir-pathtrans.c for translator
	startup.

	* ports-idle.c (ports_notice_idle): New file.
	* Makefile (OTHERSRCS): Added ports-idle.c.

	* node-times.c (diskfs_set_node_times): Set old stat structure
	times until the header file gets changed.

	* ifsock.c (diskfs_S_ifsock_getsockaddr): Provide type argument
	in call to socket_fabricate_address.

Fri Jul 15 12:00:38 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Use
	DIRCRED->po->dotdotport instead of diskfs_dotdot_file.

	* diskfs.h (diskfs_read_symlink_hook): New variable.
	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Don't permit symlinks
	to be opened for reading or writing (just like other special file
	types).  Try using diskfs_read_symlink_hook before reading
	from file data.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Try using
	diskfs_read_symlink_hook before reading from file data.
	* file-get-trans.c (diskfs_S_file_get_translator): Likewise.

Thu Jul 14 14:39:08 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* diskfs.h (diskfs_create_symlink_hook): New variable.
	(diskfs_truncate): Doc fix.
	* file-set-trans.c (diskfs_S_file_set_translator): Try
	diskfs_create_symlink_hook first, before writing ourselves.
	Return errors to user properly.

	* node-times.c (diskfs_set_node_times): Use new stat structures
	with struct timespec instead of old definitions.

Wed Jul 13 14:26:37 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* shutdown.c (diskfs_shutdown): Check UNLINK bit first to avoid
	dumping translators if we end up returning an error.

	* ports-noports.c: New file.
	* ports-soft.c: New file.
	* diskfs.h (diskfs_shutdown_soft_ports): New declaration.
	* Makefile (OTHERSRCS): Added ports-noports.c and ports-soft.c.

	* diskfs.h (diskfs_init_diskfs): New arg `bootstrap'; add return
	value.  Call fsys_getroot if bootstrap is set.

	* diskfs.h (diskfs_dotdot_file): Deleted variable.
	(struct peropen): New member `dotdotnode'.
	(diskfs_make_peropen): New arg DOTDOTPORT.
	* peropen-make.c (diskfs_make_peropen): Set PO->dotdotport;
	allocate reference if necessary.
	* priv.h (_diskfs_dotdot_file): New variable.
	* init-init.c (_diskfs_dotdot_file): New definition.
	* boot-start.c (diskfs_start_bootstrap): dotdot for created
	peropen to root should be null (we are *the* root directory in this
	case).
	(diskfs_S_exec_startup): Likewise.
	* dir-mkfile.c (diskfs_S_dir_mkfile): Inherit dotdot for
	new peropen from CRED->po.
	* file-exec.c (diskfs_S_file_exec): Likewise.
	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Inherit dotdot for
	new peropens from DIRCRED->po.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Set dotdot
	from _diskfs_dotdot_file.

	* diskfs.h (diskfs_control_port): Deleted variable.
	* priv.h (_diskfs_control_lock, _diskfs_ncontrol_ports): New vars.
	(_diskfs_control_clean): New declaration.
	* ports-clean.c (ports_cleanroutines[PT_CTL]): Use
	_diskfs_control_clean.
	* init-init.c (diskfs_init_diskfs): Don't create control port here.
	(_diskfs_control_lock, _diskfs_ncontrol_ports): New declarations.
	* file-getcontrol.c (diskfs_S_file_getcontrol): Always create
	a new control port structure.

	* io-write.c (diskfs_S_io_write): Honor O_FSYNC bit.
	* conch-set.c (ioserver_put_shared_data): Set do_sigio if
	user set O_FSYNC.
	* io-stubs.c (diskfs_S_io_sigio): Removed function.
	* io-sigio.c: New file.
	* Makefile (IOSRCS): Added io-sigio.c

	* io-write.c (diskfs_S_io_write): Eliminate pointless test for
	!err before _diskfs_rdwr_internal; only increment filepointer if
	there was no error.

	* priv.h (_diskfs_rdwr_internal): New arg NOTIME.
	* rdwr-internal.c (_diskfs_rdwr_internal): New arg NOTIME.
	* io-read.c (diskfs_S_io_read): Don't set atime if O_NOATIME is on.
	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Don't allow non-owner
	to set O_NOATIME.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.

	* priv.h (HONORED_STATE_MODES): Add O_NOATIME.
	(OPENONLY_STATE_MODES): New macro.
	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Use
	OPENONLY_STATE_MODES to turn off appropriate bits.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): At start, turn
	off all the bits not in O_HURD; we ignore all those and don't
	keep track of them in any way.
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.

	* file-get-trans.c (diskfs_S_file_get_translator): Return
	shortcircuited translators for IFCHR, IFBLK, IFIFO, and IFSOCK.

	* file-set-trans.c (diskfs_S_file_set_translator): In computing
	rdev, 377 should be *octal*, not hex.

	* dir-rename.c (diskfs_S_dir_rename): Deallocate received
	send-right for TOCRED any time we return success.

	* dir-link.c (diskfs_S_dir_link): Don't assume that NP is a
	non-directory before checking it.

	* boot-start.c (diskfs_start_bootstrap): New variable
	`initnamebuf' which is allocated and then not changed; free
	it rather than freeing `initname'.

Mon Jul 11 18:16:25 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Symlinks to pathnames
	beginning with `/' sholud return FS_RERTY_MAGICAL (but the
	retry name is stils the same).
	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.

Fri Jul  8 13:34:25 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): After getting
	MACH_SEND_INVALID_DEST from the translator, set error to zero
	so that the user's open completes normally.
	(diskfs_S_dir_pathtrans): Call mach_port_mod_refs correctly.
	(diskfs_S_dir_pathtrans): In call to fsys_getroot, turn off
	O_NOLINK for !lastcomp, not for lastcomp.

Thu Jul  7 14:46:46 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Deal correctly
	with the sendright on the translator control port avoiding
	races while the node is unlocked.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): At translator
	lookup time, if there is an active translator, release the
	lock on DNP just like we do in the start-passive case.  Also
	after fsys_getroot, release reference and clear DNP so that
	code at out: doesn't get it wrong.
	(diskfs_S_dir_pathtrans): Call fshelp_translator_drop instead
	of setting it to null ourselves.
	* trans-destroy.c (diskfs_destroy_translator): Likewise.

Wed Jul  6 14:43:55 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* ports-demuxer.c (ports_demuxer): Only call ifsock_server
	if diskfs_shortcut_ifsock is set.

Tue Jul  5 14:15:32 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (TAGSHDRS): New variable.

Thu Jun 30 11:35:43 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* fsmutations.h (IFSOCK_IMPORTS): New macro.

	* ports-demuxer.c (ports_demuxer): Call ifsock_server.

Wed Jun 29 17:07:17 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* diskfs.h (struct node): New member `sockaddr'.
	* node-make.c (diskfs_make_node): Initialize NP->sockaddr.
	* node-drop.c (diskfs_drop_node): Deallocate NP->sockaddr
	if it's been set.
	* ifsock.c: New file.
	* Makefile (IFSOCKSRCS): New variable.
	(SRCS): Added $(IFSOCKSRCS).
	(MIGSTUBS): Added ifsockServer.o.
	(ifsock_S.h ifsockServer.c): New rule.
	(ifsock_S.h): Depended on by IFSOCKSRCS generated objects.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Detect the case
	where the server has died by looking for MACH_SEND_INVALID_DEST
	as a return from fsys_getroot.  Rearrange lock/unlock and
	reference counting of NP and DNP because we may need them back
	if we have to repeat the call.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Likewise.

Fri Jun 24 15:52:52 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-link.c (diskfs_S_dir_link): The port_info struct member
	is `port_right', not `port'.

Tue Jun 21 13:25:15 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-link.c (diskfs_S_dir_link): Deallocate received send
	right for DIRCRED anytime we return success.

	* dir-chg.c (diskfs_S_dir_notice_changes): New var `np'.  Return
	ENOTDIR if call is made on a non-directory.

Mon Jun 20 16:40:37 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* node-drop.c (diskfs_drop_node): Free structures holding
	dirmod requests.
	* node-make.c (diskfs_make_node): Initialize NP->dirmod_reqs
	to zero.

Fri Jun 17 13:16:18 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* fsys-getroot.c (diskfs_S_fsys_getroot): Initialize ERROR.

Fri Jun 17 11:21:25 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* trans-sync.c: Include <fcntl.h>.

	* Makefile (boot-start.o): Depend on fsys_reply.h.

Thu Jun 16 11:31:46 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* Makefile (msg.h, msgUser.c): New rules.
	(MIGSTUBS): Added msgUser.o.
	(dir-chg.o): Depends on msg.h.
	* dir-chg.c: Include "msg.h".

	* diskfs.h (diskfs_start_translator): Second arg DIR is now
	file_t.  Changed locking rules.
	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Call
	diskfs_start_translator the new way; clean up lock releases.

	* fshelp-dropnode.c: Deleted file.
	* fshelp-getnode.c: Deleted file.
	* Makefile (OTHERSRCS): Removed fshelp-dropnode.c and fshelp-getnode.c.

	* boot-start.c (diskfs_start_bootstrap): Use new fsys_getroot
	interface.

	* fsys-getroot.c: Include <fcntl.h> for O_ bits.  Include
	<hurd/fsys.h> for fsys_startup prototype.

	* boot-start.c (diskfs_start_bootstrap, diskfs_S_exec_startup):
	Delete obsolete assignments to INIT_PORT_LOGINCOLL.

	* diskfs.h (struct node) [dirmod_reqs]: New member.
	(struct dirmod): New type.
	(diskfs_dirrewrite, diskfs_dirremove, diskfs_direnter): Doc fix.
	(diskfs_notice_dirchange): New prototype.
	* dir-chg.c (diskfs_S_dir_notice_changes): Implement call.
	(diskfs_notice_dirchange): New function.

	* diskfs.h (diskfs_get_directs): Doc fix.

	* file-access.c (diskfs_S_file_check_access): Renamed from
	diskfs_S_file_access.  Return allowable operations in *TYPE
	rather than checking those explicitly asked for.  Use O_ bits
	instead of _OK bits.  Include <fcntl.h>.

Wed Jun 15 21:26:14 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Require lookup of
	empty pathname to fail if not made on a directory.

	* fsys-getroot.c (diskfs_S_fsys_getroot): Rewritten to implement
	the new fsys_getroot interface.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Don't implement
	O_TRUNC here anymore.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Use the new
	fsys_getroot interface for translator startup.

	* io-modes-set.c (diskfs_S_io_set_all_openmodes): Only let
	the user set the user-setable bits.

	* file-get-transcntl.c (diskfs_S_file_get_translator_cntl): New
	arg CTLTYPE; set appropriately.

Wed Jun 15 12:18:16 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* file-chg.c (diskfs_S_file_notice_changes): Declare return type.

	* file-access.c: New file.
	* Makefile (FSSRCS): Added file-access.c.

Tue Jun 14 14:06:36 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* diskfs.h (diskfs_get_dirents): New declaration.
	* dir-readdir.c (diskfs_S_dir_readdir): Implement new
	interface using diskfs_get_directs.

	* dir-chg.c, file-chg.c: New files.
	* Makefile (FSSRCS): Added dir-chg.c and file-chg.c.

Thu Jun  9 13:39:25 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Release lock on NP
	during call to fsys_getroot; stash control port and uid info in
	new local variables.  Reacquire lock before return (because
	common code at label OUT expects NP to be locked).

Mon Jun  6 18:54:50 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): In translator
	startup check, test O_NOTRANS in flags correctly.

	* dir-renamed.c (diskfs_rename_dir): Don't call diskfs_nrele on
	TMPNP after SPEC_DOTDOT calls; the spec says that SPEC_DOTDOT
	with RENAME does not allocate a new reference.

Sun Jun  5 05:51:11 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Fix
	initialization of {GEN,AUX}_{UIDS,GIDS}.

Fri Jun  3 18:19:22 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* file-set-trans.c (diskfs_S_file_set_translator): Use
	fshelp_set_control instead of doing it ourselves.

Thu Jun  2 12:00:51 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* diskfs.h (struct node): New member `light_references'.
	(diskfs_nref, diskfs_nput, diskfs_nrele, diskfs_make_node): Doc fix.
	(diskfs_nref_light, diskfs_nput_light, diskfs_nrele_light):
	New functions.
	(diskfs_nrele, diskfs_nput): Only call diskfs_drop_node if both
	NP->references *and* NP->light_references are zero.
	(diskfs_new_hardrefs, diskfs_lost_hardrefs): New declarations.
	(diskfs_nref): Call diskfs_new_hardrefs when appropriate.
	(diskfs_nput, diskfs_nrele): Call diskfs_lost_hardrefs when
	appropriate.

	* node-make.c (diskfs_make_node): Initialize NP->light_references.
	Doc fix.

Wed Jun  1 18:24:11 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Skip over multiple
	slashes in pathnames by incrementing NEXTNAME after setting it.
	Also, if after we do this we discover that there is no last
	component, then set LASTCOMP and clear NEXTNAME and CREATE
	entirely, and set (new variable) MUSTBEDIR.  Then check for
	MUSTBEDIR after the node has been fetched.  Make var TYPE
	function-global and set it always, not just when NEWNODE is unset.

Fri May 27 08:47:46 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* boot-start.c (diskfs_S_exec_exec, diskfs_S_exec_setexecdata):
	Add missing args.
	(diskfs_S_exec_startup): Don't point *ARGVP to EXEC_DATA local
	storage.  Instead, copy EXEC_DATA to *ARGVP if *ARGVLEN allows;
	otherwise vm_allocate new space and copy into there.

Thu May 26 15:33:57 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* diskfs.h (diskfs_nrele): Acquire lock if we are releasing
	the last reference.

	* node-drop.c (diskfs_drop_node): If we are truncating, then
	go back to normal user state and do the truncate; the next
	time through we will do the dealloc for real.
	Semantics change: now this routine is responsible for
	unlocking diskfs_node_refcnt_lock.  All callers changed.

Wed May 25 20:34:17 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* io-write.c (diskfs_S_io_write): Don't check for *AMT < 0; AMT is
	an out-only parameter.

Wed May 25 12:23:25 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* ports-consts.c (ports_use_multiple_threads): Deleted definition.
	* init-first.c (diskfs_spawn_first_thread): Fork
	ports_manage_port_operations_multithread instead of
	ports_maange_port_operations.
	* init-loop.c (diskfs_main_request_loop): Likewise.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Reference node in
	lookup of empty path case so that common code at the out: label
	doesn't free an extra one.

Mon May 23 23:13:51 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* boot-start.c (diskfs_S_fsys_init): Start exec_init after
	proc_child.

Thu May 19 12:48:53 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* io-reauthenticate.c (diskfs_S_io_reauthenticate): Unlock
	node after calling diskfs_finish_protid.

Thu May 12 14:23:29 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* Makefile (clean): Add fsys_reply.h and *User.c.

Thu May 12 03:45:38 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile (fsys_reply.h fsys_replyUser.c): New rule.
	(MIGSTUBS): Add fsys_replyUser.o.
	* boot-start.c: Include fsys_reply.h.
	(diskfs_S_fsys_init): Take new reply port args.
	Send reply msg as soon as verified, before doing anything.

Mon May  9 16:58:24 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* diskfs.h (diskfs_init_completed): New function declaration.
	* boot-start.c (diskfs_S_fsys_init): Don't call _hurd_proc_init.
	Do call diskfs_init_completed.

Thu May  5 13:04:43 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Behave properly
	if nextname is null.  Copy nextname to the end of the symlink
	target rather than vice versa.  Don't punt to the caller before
	doing the append.
	(diskfs_S_dir_pathtrans): O_NOTRANS should prevent symlink
	interpretation.
	(diskfs_S_dir_pathtrans): If a symlink traversal was the last
	component, then clear CREATE (symlinks to nothing don't honor
	O_CREAT) and clear LASTCOMP (because it isn't true any longer).

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Fix mangled check
	for O_NOLINK.
	(diskfs_S_dir_pathtrans): Repair furtherly mangled check for
	O_NOLINK.

	* conch-set.c (ioserver_put_shared_data): Set
	optimal_transfer_size from the same thing we return in stat.

	* io-async.c (diskfs_S_io_async): Just return EOPNOTSUPP without
	doing anything more at all.

Thu May  5 06:32:10 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* io-prenotify.c (diskfs_S_io_prenotify): Make START and END args
	type vm_offset_t.

	* io-map-cntl.c (diskfs_S_io_map_cntl): Take 3rd result arg
	for msg type of *CTLOBJ; set it to copy-send.

	* io-async.c (diskfs_S_io_async): Take 3rd result arg for msg type
	of *IDPORT; set it to copy-send.  Return 0 instead of EOPNOTSUPP;
	should not be deallocating NOTIFY if returning an error.

	* io-async-icky.c (diskfs_S_io_get_icky_async_id): Take 3rd result arg
	for msg type of *IDPORT; set it to copy-send.

	* conch-set.c (ioserver_put_shared_data): Temporarily #if 0
	setting of optimal_transfer_size from bogus undeclared variable.

	* protid-make.c: Include <string.h> to get bcopy declared.

	* {file,dir,io,fsys}-*.c: Changed return type of all RPC server
	functions to kern_return_t.  error_t is not compatible with the
	declarations in the mig-generated header files.

	* Makefile: Change uses of $(headers) to $(includedir).

	* file-exec.c (diskfs_S_file_exec): Fix msg type arg in exec_exec call.

	* dir-pathtrans.c (diskfs_S_dir_pathtrans): Add missing close paren.

	* boot-start.c (diskfs_start_bootstrap): Pass msg type arg for
	FILE arg to exec_exec.
	(diskfs_S_fsys_getpriv): Change return type to kern_return_t.
	error_t is not compatible with the declarations in the
	mig-generated header files.
	(diskfs_S_fsys_init): Likewise.
	(exec_stack_base, exec_stack_size): New variables.
	(diskfs_S_exec_startup): Use those for stack values in reply.
	(start_execserver): Pass them to mach_setup_thread to be initialized.

Mon May  2 16:32:22 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* dir-pathtrans.c: Test for O_NOLINK flag was mangled.

Fri Apr 29 16:44:08 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* io-stubs.c (diskfs_S_io_readnotify): New function.

	* conch-set.c (ioserver_put_shared_data): Set new fields
	optimal_transfer_size (to sblock->fs_bsize) and
	use_readnotify_size (to zero).

	* file-exec.c (diskfs_S_file_exec): Change call to exec_exec in
	accord with interface change in exec.defs.

Mon Feb 14 11:26:26 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* boot-start.c: #include <hurd.h>.
	(start_execserver): Call _hurd_setup_thread in place of start_thread.