On Thu, 19 Feb 2009, John Baldwin wrote:

Author: jhb
Date: Thu Feb 19 22:10:39 2009
New Revision: 188831
URL: http://svn.freebsd.org/changeset/base/188831

Log:
 Don't clear the attribute cache of a file when it is closed.  A subsequent
 open() of the same file will load fresh attributes, so they do not need to
 be explicitly flushed in close() to guarantee close to open consistency.
 However, other file desciptors may still reference this file and clearing
 the attributes in close() forces those other file descriptors to fetch
 fresh attributes the next time they need them.

(hand wave) Not an area of expertise for me, but I was under the loose impression that one of the reasons for this refresh was to pull in new timestamps, etc so that applications using file attributes to track modification time, size, etc definitely saw the right thing reflecting the server interpretation of all the pending writes having been flushed back on close(). (more hand waving)

Robert N M Watson
Computer Laboratory
University of Cambridge


 Reviewed by:   mohans
 MFC after:     1 week

Modified:
 head/sys/nfsclient/nfs_vnops.c

Modified: head/sys/nfsclient/nfs_vnops.c
==============================================================================
--- head/sys/nfsclient/nfs_vnops.c      Thu Feb 19 21:29:30 2009        
(r188830)
+++ head/sys/nfsclient/nfs_vnops.c      Thu Feb 19 22:10:39 2009        
(r188831)
@@ -594,13 +594,6 @@ nfs_close(struct vop_close_args *ap)
                    error = nfs_vinvalbuf(vp, V_SAVE, ap->a_td, 1);
                mtx_lock(&np->n_mtx);
            }
-           /*
-            * Invalidate the attribute cache in all cases.
-            * An open is going to fetch fresh attrs any way, other procs
-            * on this node that have file open will be forced to do an
-            * otw attr fetch, but this is safe.
-            */
-           np->n_attrstamp = 0;
            if (np->n_flag & NWRITEERR) {
                np->n_flag &= ~NWRITEERR;
                error = np->n_error;

_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to