* in the read vnode operator, check for IO_SYNC being set in the ioflag and
synchronously update the file's meta-data if appropriate.
* in the write vnode operator, update the appropriate checks for IO_SYNC being
set in the ioflag to reflect that IO_DSYNC is now inclusive-or'ed into
IO_SYNC, and require all IO_SYNC bits to be set for operations defined by
synchronized I/O file integrity completion but not by synchronized I/O data
integrity completion.
as with user-land programs, include files are installed by each directory
in the tree that has includes to install. (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change. Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code. i provided some help
getting swap and paging working, and other bug fixes/ideas. chuck
silvers <chuq@chuq.com> also provided some other fixes.
this is the rest of the MI portion changes.
this will be KNF'd shortly. :-)
PR4394: be more consistent with other MSDOSFS_DEBUG messages
PR4395: fix generation numbers as in the PR, and fix short name for e.g. x.aaaa
PR4396: easier fix then given in the PR
All PRs by Rick Byers. Thanks Rick for pointing these out
Don't panic if renaming a file to itself
Don't try to keep access times, there is no place for them
While being here, fix some minor bugs with VFAT handling
Eliminate obsolete global kernel variable "struct timezone tz"
Add RTC_OFFSET option
Add global kernel variable rtc_offset, which is initialized by
RTC_OFFSET at kernel compile time.
on i386, x68k, mac68k, pc532 and arm32, RTC_OFFSET indicates how many
minutes west (east) of GMT the hardware RTC runs. Defaults to 0.
Places where tz variable was used to indicate this in the past have
been replaced with rtc_offset.
Add sysctl interface to rtc_offset.
Kill obsolete DST_* macros in sys/time.h
gettimeofday now always returns zeroed timezone if zone is requested.
settimeofday now ignores and logs attempts to set non-existant kernel
timezone.
'const char *', and 'void *', respectively. The second arg is taken directly
from user arguments, and is const there, so must be const in the prototypes
and functions. The third arg is also taken directly from user arguments.
It doesn't have to be changed, but since it's cleaner to keep the type
the same as the user arg's type, and I'm already making the 'const char *'
change...
'const char *', and 'void *', respectively. The second arg is taken directly
from user arguments, and is const there, so must be const in the prototypes
and functions. The third arg is also taken directly from user arguments.
It doesn't have to be changed, but since it's cleaner to keep the type
the same as the user arg's type, and I'm already making the 'const char *'
change...
struct member cn_nameptr 'const', since they should never be used to
modify the path name. (Only the pathname buffer, cn_pnbuf, should be
modified.) Propagate the const poisoning to code that uses the namei
and componentname structs.
* Change the argument names to vop_link so they actually make sense.
* Implement vop_link and vop_symlink for all file systems, so they do proper
cleanup.
* Require the file system to decide whether or not linking and unlinking of
directories is allowed, and disable it for all current file systems.
(Of course, nfs shouldn't rely on the credentials not being referenced)
Don't give directory entry to deget, it could result in a deadlock
Use device blocks, not clusters for logical block numbers
Correct handling of rmdir'ing open directories
Correct implementation of rename (includes renaming of directories)
Handle root directories that are not multiple clusters in size
have much in common, there are some differences in the bpb/bootsector that
needed to be handled in the mounting code. The gemdos bpb/bootsector structs
are included for clarification.
* Update the `archive' bit any time the file's time stamp is updated.
* Don't set the `archive' bit automatically for directories, and don't
update the time stamp of directories automatically. (There are the DOS
semantics.)
* Use DE_TIMES() to change the time stamp in deupdat(). Remove the extra
time stamp argument, as it's superfluous, and we may want to make changes
without touching the time stamp.
* Allow denode updates iff DE_MODIFIED is set after DE_TIMES() is called.
This allows us to make changes that are totally independent of the time
stamp, and to avoid rewriting the entry if the time stamp was ignored (e.g.
for directories).
* Make time stamp changes in setattr() asynchronous.
inlining the rest of the code in reinsert(). (No functional changes.) Also,
make sure that we don't print the (bogus) lock values when !DIAGNOSTIC.
Partly based on a patch from Mike Pritchard.
* Make some of the code look more like UFS.
* Check permissions in lookup().
* Move the directory size special case into DE_EXTERNALIZE().
* Fix some conditions where lookup() might not release a buffer.
* Remove bogus flag handling in setattr().
* Pass timespec, not timeval, to deupdat().
* Check more error conditions.
* Fix possible panics in rename().
* Simplify readdir().
* General code cleanup; add prototypes, delete unused variables, etc.
<polk@bsdi.com>. His notes are as follows:
------------------------------------------------------------------------------
July 22, 1993
- Changed name of entire package from PCFS to MSDOSFS
- Fixed bugs:
root directory size in clusters instead of bytes
growing directory didn't update in-core size
link, symlink, mknod didn't free locked parent (deadlock)
lookup returned real error on create and rename instead of EJUSTRETURN
rename changed `.' entry in child instead of name entry in parent
rename removed `.' entry in child instead of removing entry in
parent when moving a directory from one dir to another
createde() left new node locked when write of parent failed (deadlock)
removede() decremented refcount even on error (rmdir's which failed
due to write errors left in-core cache entries inconsistent)
changed validation for filesystem to not check for the boot signature
since some disks (e.g., mtools) aren't bootable
directories are always show current time as modify time
(needed for NFS export since DOS never updates dir mod times --
ctime is true create time).
- Added support for cookies changes to the readdir() vnode
interface (#ifdef __bsdi__)
- Punted on the whole problem of inode generation numbers. This means
that there's a chance of using a stale file handle to access a new
file, but it doesn't appear to be the common case, and I don't see
how to generate reasonable generation numbers without changing something
on the disk (which is the way the SVR4 filesystem survival kit guys
did it). I don't think it would be very safe to change the on-disk
format.
Jeff Polk (polk@BSDI.COM)
------------------------------------------------------------------------------