On Thu, Mar 29, 2012 at 12:07:17PM -0600, Orion Poplawski wrote: > On 03/29/2012 11:40 AM, Myklebust, Trond wrote: > >>Going back to v4 on EL5.8 server: nfsv4el.log, nfsv4f18.log > >> > >>Both get NFS4ERR_EXIST in this case. > > > >Which is an obvious server bug: it should be sending NFS4ERR_SYMLINK in > >reply to that OPEN. > > > >Bruce? > > > > I can reproduce with a 3.4.0-0.rc0.git1.2.fc18 server as well. Hm. So how about this? (Untested.) Probably there should be a pynfs test too. I'm assuming it should still be ERR_EXIST in the exclusive, exclusive4_1, and guarded cases. --b. diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 7423d71..2bfcad4 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -1457,9 +1457,12 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp, switch (createmode) { case NFS3_CREATE_UNCHECKED: - if (! S_ISREG(dchild->d_inode->i_mode)) - err = nfserr_exist; - else if (truncp) { + if (! S_ISREG(dchild->d_inode->i_mode)) { + if (rqstp->rq_vers == 4) + err = nfserr_symlink; + else + err = nfserr_exist; + } else if (truncp) { /* in nfsv4, we need to treat this case a little * differently. we don't want to truncate the * file now; this would be wrong if the OPEN -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html