| From a430607b2ef7c3be090f88c71cfcb1b3988aa7c0 Mon Sep 17 00:00:00 2001 |
| From: Benjamin Coddington <bcodding@redhat.com> |
| Date: Tue, 24 Jan 2017 11:34:20 -0500 |
| Subject: NFSv4.0: always send mode in SETATTR after EXCLUSIVE4 |
| |
| From: Benjamin Coddington <bcodding@redhat.com> |
| |
| commit a430607b2ef7c3be090f88c71cfcb1b3988aa7c0 upstream. |
| |
| Some nfsv4.0 servers may return a mode for the verifier following an open |
| with EXCLUSIVE4 createmode, but this does not mean the client should skip |
| setting the mode in the following SETATTR. It should only do that for |
| EXCLUSIVE4_1 or UNGAURDED createmode. |
| |
| Fixes: 5334c5bdac92 ("NFS: Send attributes in OPEN request for NFS4_CREATE_EXCLUSIVE4_1") |
| Signed-off-by: Benjamin Coddington <bcodding@redhat.com> |
| Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/nfs/nfs4proc.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/fs/nfs/nfs4proc.c |
| +++ b/fs/nfs/nfs4proc.c |
| @@ -2678,7 +2678,8 @@ static inline void nfs4_exclusive_attrse |
| sattr->ia_valid |= ATTR_MTIME; |
| |
| /* Except MODE, it seems harmless of setting twice. */ |
| - if ((attrset[1] & FATTR4_WORD1_MODE)) |
| + if (opendata->o_arg.createmode != NFS4_CREATE_EXCLUSIVE && |
| + attrset[1] & FATTR4_WORD1_MODE) |
| sattr->ia_valid &= ~ATTR_MODE; |
| |
| if (attrset[2] & FATTR4_WORD2_SECURITY_LABEL) |