Author: rmacklem
Date: Fri Apr  2 01:53:48 2010
New Revision: 206061
URL: http://svn.freebsd.org/changeset/base/206061

Log:
  Add SAVENAME to the cn_flags for all cases in the experimental
  NFS server for the CREATE cn_nameiop where SAVESTART isn't set.
  I was not aware that this needed to be done by the caller until
  recently.
  
  Tested by:    lampa AT fit.vutbr.cz (link case)
  Submitted by: lampa AT fit.vutbr.cz (link case)
  MFC after:    2 weeks

Modified:
  head/sys/fs/nfsserver/nfs_nfsdserv.c

Modified: head/sys/fs/nfsserver/nfs_nfsdserv.c
==============================================================================
--- head/sys/fs/nfsserver/nfs_nfsdserv.c        Thu Apr  1 23:35:35 2010        
(r206060)
+++ head/sys/fs/nfsserver/nfs_nfsdserv.c        Fri Apr  2 01:53:48 2010        
(r206061)
@@ -1086,7 +1086,7 @@ nfsrvd_mknod(struct nfsrv_descript *nd, 
                case NFFIFO:
                        break;
                case NFDIR:
-                       cnflags = LOCKPARENT;
+                       cnflags = (LOCKPARENT | SAVENAME);
                        break;
                default:
                        nd->nd_repstat = NFSERR_BADTYPE;
@@ -1549,7 +1549,8 @@ nfsrvd_link(struct nfsrv_descript *nd, i
                                NFSVOPUNLOCK(dp, 0, p);
                }
        }
-       NFSNAMEICNDSET(&named.ni_cnd, nd->nd_cred, CREATE, LOCKPARENT);
+       NFSNAMEICNDSET(&named.ni_cnd, nd->nd_cred, CREATE,
+           LOCKPARENT | SAVENAME);
        if (!nd->nd_repstat) {
                nfsvno_setpathbuf(&named, &bufp, &hashp);
                error = nfsrv_parsename(nd, bufp, hashp, &named.ni_pathlen);
@@ -1743,7 +1744,8 @@ nfsrvd_mkdir(struct nfsrv_descript *nd, 
                nfsrv_wcc(nd, dirfor_ret, &dirfor, diraft_ret, &diraft);
                return (0);
        }
-       NFSNAMEICNDSET(&named.ni_cnd, nd->nd_cred, CREATE, LOCKPARENT);
+       NFSNAMEICNDSET(&named.ni_cnd, nd->nd_cred, CREATE,
+           LOCKPARENT | SAVENAME);
        nfsvno_setpathbuf(&named, &bufp, &hashp);
        error = nfsrv_parsename(nd, bufp, hashp, &named.ni_pathlen);
        if (error) {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to