Author: rmacklem
Date: Sun May 26 12:36:56 2013
New Revision: 250996
URL: http://svnweb.freebsd.org/changeset/base/250996

Log:
  MFC: r250580
  Add support for the eofflag to nfs_readdir() in the new NFS
  client so that it works under a unionfs mount.

Modified:
  stable/9/sys/fs/nfsclient/nfs_clvnops.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/fs/   (props changed)

Modified: stable/9/sys/fs/nfsclient/nfs_clvnops.c
==============================================================================
--- stable/9/sys/fs/nfsclient/nfs_clvnops.c     Sun May 26 09:25:14 2013        
(r250995)
+++ stable/9/sys/fs/nfsclient/nfs_clvnops.c     Sun May 26 12:36:56 2013        
(r250996)
@@ -2207,6 +2207,8 @@ nfs_readdir(struct vop_readdir_args *ap)
        int error = 0;
        struct vattr vattr;
        
+       if (ap->a_eofflag != NULL)
+               *ap->a_eofflag = 0;
        if (vp->v_type != VDIR) 
                return(EPERM);
 
@@ -2221,6 +2223,8 @@ nfs_readdir(struct vop_readdir_args *ap)
                            !NFS_TIMESPEC_COMPARE(&np->n_mtime, 
&vattr.va_mtime)) {
                                mtx_unlock(&np->n_mtx);
                                NFSINCRGLOBAL(newnfsstats.direofcache_hits);
+                               if (ap->a_eofflag != NULL)
+                                       *ap->a_eofflag = 1;
                                return (0);
                        } else
                                mtx_unlock(&np->n_mtx);
@@ -2233,8 +2237,11 @@ nfs_readdir(struct vop_readdir_args *ap)
        tresid = uio->uio_resid;
        error = ncl_bioread(vp, uio, 0, ap->a_cred);
 
-       if (!error && uio->uio_resid == tresid)
+       if (!error && uio->uio_resid == tresid) {
                NFSINCRGLOBAL(newnfsstats.direofcache_misses);
+               if (ap->a_eofflag != NULL)
+                       *ap->a_eofflag = 1;
+       }
        return (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