diff options
author | Kinglong Mee <kinglongmee@gmail.com> | 2015-11-17 21:39:26 -0500 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-11-23 21:56:53 -0500 |
commit | f54423a1f8fb0da4226a982618d2c703e413d4d6 (patch) | |
tree | fd99e0a31adb1b754a15accaaff966a443898acd /fs/nfs/nfs4xdr.c | |
parent | 291e1b9459936c7e86951736d432e223b0710225 (diff) |
NFS4: Cleanup FATTR4_WORD0_FS_LOCATIONS after decoding success
Commit 1ca843a2d2 "nfs: Fix GETATTR bitmap verification" has check
the bitmap after decoding success, but decode_attr_fs_locations forgets
cleanup the FATTR4_WORD0_FS_LOCATIONS bits.
decode_getfattr_attrs always return -EIO when meeting FS_LOCATIONS now.
ls: cannot access /mnt/referal: Input/output error
ls: cannot access /mnt/replicas: Input/output error
total 32
drwxr-xr-x. 7 root root 8192 Nov 16 20:36 pnfs
??????????? ? ? ? ? ? referal
??????????? ? ? ? ? ? replicas
v2: clear the bit earlier
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/nfs4xdr.c')
-rw-r--r-- | fs/nfs/nfs4xdr.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index dfed4f5c8fcc..4e4441216804 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c | |||
@@ -3615,6 +3615,7 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st | |||
3615 | status = 0; | 3615 | status = 0; |
3616 | if (unlikely(!(bitmap[0] & FATTR4_WORD0_FS_LOCATIONS))) | 3616 | if (unlikely(!(bitmap[0] & FATTR4_WORD0_FS_LOCATIONS))) |
3617 | goto out; | 3617 | goto out; |
3618 | bitmap[0] &= ~FATTR4_WORD0_FS_LOCATIONS; | ||
3618 | status = -EIO; | 3619 | status = -EIO; |
3619 | /* Ignore borken servers that return unrequested attrs */ | 3620 | /* Ignore borken servers that return unrequested attrs */ |
3620 | if (unlikely(res == NULL)) | 3621 | if (unlikely(res == NULL)) |