cvs commit: src/usr.sbin/pstat pstat.c src/sys/vfs/nfs nfs.h

看板DFBSD_commit作者時間21年前 (2005/03/18 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
dillon 2005/03/17 09:28:46 PST DragonFly src repository Modified files: usr.sbin/pstat pstat.c sys/vfs/nfs nfs.h nfs_bio.c nfs_node.c nfs_nqlease.c nfs_subs.c nfs_vfsops.c nfs_vnops.c nfsm_subs.h nfsnode.h Log: Clean up a number of caching edge cases in NFS, rework the code to be a bit more readable, document some bits, and fix some cache coherency detection issues. The caching cleanups should allow the NFS client to retain more of the NFS cache when doing complex operations on a file. * Properly check and update the mtime using WCC records in the NFS response. This record gives us the 'before' and 'after' mtime. The 'before' mtime must match our existing idea of the mtime, if it doesn't we flag the nfsnode as having been modified by the server. Our notion of the mtime is then set to the 'after time. This was not being done properly for several edge cases. This required extending the nfsm macros a bit in order to be able to tell loadattrcache how to handle the mtime data. This also required rearranging (really fixing) the sequence in nfs_open(), nfs_write(), etc. * Rearrange the flags a bit. NSIZECHANGED -> NRMODIFIED (nfsnode modified by server), NMODIFIED -> NLMODIFIED (nfsnode modified by client). Do not clear NRMODIFIED until we have actually invalidated the cache (this fixes a problem where programs using mmap() were not properly clearing the cache after a file was modified on the server). * Don't code NRMODIFIED as an exception to NLMODIFIED. Recode the flags so they (mostly) operate in tandem. * When appending to a file, use nfs_flush() instead of nfs_vinvalbuf(). There is no need to destroy our data cache for the file. This makes appends considerably more efficient. * Hopefully fix the last problem associated with attribute timeouts. * Clear the attribute cache when a file is opened for write in nfs_open() BEFORE doing other checks rather then after. * Document some of the nastier cache coherency hacks. Revision Changes Path 1.15 +3 -1 src/usr.sbin/pstat/pstat.c 1.9 +4 -0 src/sys/vfs/nfs/nfs.h 1.21 +39 -44 src/sys/vfs/nfs/nfs_bio.c 1.19 +3 -2 src/sys/vfs/nfs/nfs_node.c 1.22 +2 -2 src/sys/vfs/nfs/nfs_nqlease.c 1.27 +75 -21 src/sys/vfs/nfs/nfs_subs.c 1.25 +2 -2 src/sys/vfs/nfs/nfs_vfsops.c 1.38 +96 -70 src/sys/vfs/nfs/nfs_vnops.c 1.7 +21 -4 src/sys/vfs/nfs/nfsm_subs.h 1.13 +4 -3 src/sys/vfs/nfs/nfsnode.h http://www.dragonflybsd.org/cvsweb/src/usr.sbin/pstat/pstat.c.diff?r1=1.14&r2=1.15&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs.h.diff?r1=1.8&r2=1.9&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_bio.c.diff?r1=1.20&r2=1.21&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_node.c.diff?r1=1.18&r2=1.19&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_nqlease.c.diff?r1=1.21&r2=1.22&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_subs.c.diff?r1=1.26&r2=1.27&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_vfsops.c.diff?r1=1.24&r2=1.25&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_vnops.c.diff?r1=1.37&r2=1.38&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfsm_subs.h.diff?r1=1.6&r2=1.7&f=u http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfsnode.h.diff?r1=1.12&r2=1.13&f=u
文章代碼(AID): #12ESOL00 (DFBSD_commit)