HAMMER 64/Many: NFS, cross-device links, synctid
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 19 Jul 2008 04:49:39 +0000 (04:49 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 19 Jul 2008 04:49:39 +0000 (04:49 +0000)
commitf437a2abb4442a26cda39281b627477603898334
tree7babd2f155b7192b20b9bb3d0e5879f7bd43875b
parentc9aef21167a75dba51fd6a01ceea4d946dab1c1c
HAMMER 64/Many: NFS, cross-device links, synctid

* Check for cross-device links and cross-PFS links in the link and
  rename code.

* Update a directory's mtime when a file is created or deleted within it.
  (good idea anyway, also allows NFS clients to properly invalidate their
  directory caches).

* Only lock the PFS sync-end-tid field when the HAMMER_PFSD_SLAVE flag is
  not set.

* Clear ocp->dip->objid_cache when cleaning out the object cache.

* PFS softlinks in the form @@PFS%05d are auto-expanded by HAMMER's
  readlink() to include a snapshot transaction id.  Adjust getattr
  to properly set va_size (aka stat->st_size) to the length of the
  expanded version.  This fixes NFS confusion and allows PFS's to be
  mounted via their softlinks.

* Fix another issue where the synctid ioctl would still sometimes stall
  until the next filesystem sync.

Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
sys/vfs/hammer/hammer_flusher.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_pfs.c
sys/vfs/hammer/hammer_transaction.c
sys/vfs/hammer/hammer_vnops.c