diff options
-rw-r--r-- | fs/nfsd/nfs4proc.c | 10 | ||||
-rw-r--r-- | fs/nfsd/vfs.c | 5 |
2 files changed, 13 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 3c627128e205..29b7e63cb32c 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c | |||
@@ -100,7 +100,15 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_o | |||
100 | status = nfsd_create_v3(rqstp, current_fh, open->op_fname.data, | 100 | status = nfsd_create_v3(rqstp, current_fh, open->op_fname.data, |
101 | open->op_fname.len, &open->op_iattr, | 101 | open->op_fname.len, &open->op_iattr, |
102 | &resfh, open->op_createmode, | 102 | &resfh, open->op_createmode, |
103 | (u32 *)open->op_verf.data, &open->op_truncate, &created); | 103 | (u32 *)open->op_verf.data, |
104 | &open->op_truncate, &created); | ||
105 | |||
106 | /* If we ever decide to use different attrs to store the | ||
107 | * verifier in nfsd_create_v3, then we'll need to change this | ||
108 | */ | ||
109 | if (open->op_createmode == NFS4_CREATE_EXCLUSIVE && status == 0) | ||
110 | open->op_bmval[1] |= (FATTR4_WORD1_TIME_ACCESS | | ||
111 | FATTR4_WORD1_TIME_MODIFY); | ||
104 | } else { | 112 | } else { |
105 | status = nfsd_lookup(rqstp, current_fh, | 113 | status = nfsd_lookup(rqstp, current_fh, |
106 | open->op_fname.data, open->op_fname.len, &resfh); | 114 | open->op_fname.data, open->op_fname.len, &resfh); |
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index ee96a897a29e..a0c2b253818b 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c | |||
@@ -1309,7 +1309,10 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp, | |||
1309 | 1309 | ||
1310 | if (createmode == NFS3_CREATE_EXCLUSIVE) { | 1310 | if (createmode == NFS3_CREATE_EXCLUSIVE) { |
1311 | /* solaris7 gets confused (bugid 4218508) if these have | 1311 | /* solaris7 gets confused (bugid 4218508) if these have |
1312 | * the high bit set, so just clear the high bits. | 1312 | * the high bit set, so just clear the high bits. If this is |
1313 | * ever changed to use different attrs for storing the | ||
1314 | * verifier, then do_open_lookup() will also need to be fixed | ||
1315 | * accordingly. | ||
1313 | */ | 1316 | */ |
1314 | v_mtime = verifier[0]&0x7fffffff; | 1317 | v_mtime = verifier[0]&0x7fffffff; |
1315 | v_atime = verifier[1]&0x7fffffff; | 1318 | v_atime = verifier[1]&0x7fffffff; |