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
* 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
* 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.