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
This commit is contained in:
Rick Macklem 2010-04-02 01:53:48 +00:00
parent 1918350778
commit f61786cb60

View File

@ -1086,7 +1086,7 @@ nfsrvd_mknod(struct nfsrv_descript *nd, __unused int isdgram,
case NFFIFO: case NFFIFO:
break; break;
case NFDIR: case NFDIR:
cnflags = LOCKPARENT; cnflags = (LOCKPARENT | SAVENAME);
break; break;
default: default:
nd->nd_repstat = NFSERR_BADTYPE; nd->nd_repstat = NFSERR_BADTYPE;
@ -1549,7 +1549,8 @@ nfsrvd_link(struct nfsrv_descript *nd, int isdgram,
NFSVOPUNLOCK(dp, 0, p); 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) { if (!nd->nd_repstat) {
nfsvno_setpathbuf(&named, &bufp, &hashp); nfsvno_setpathbuf(&named, &bufp, &hashp);
error = nfsrv_parsename(nd, bufp, hashp, &named.ni_pathlen); error = nfsrv_parsename(nd, bufp, hashp, &named.ni_pathlen);
@ -1743,7 +1744,8 @@ nfsrvd_mkdir(struct nfsrv_descript *nd, __unused int isdgram,
nfsrv_wcc(nd, dirfor_ret, &dirfor, diraft_ret, &diraft); nfsrv_wcc(nd, dirfor_ret, &dirfor, diraft_ret, &diraft);
return (0); 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); nfsvno_setpathbuf(&named, &bufp, &hashp);
error = nfsrv_parsename(nd, bufp, hashp, &named.ni_pathlen); error = nfsrv_parsename(nd, bufp, hashp, &named.ni_pathlen);
if (error) { if (error) {