aboutsummaryrefslogtreecommitdiffstats
path: root/fs/afs/rotate.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2018-05-10 21:51:47 +0100
committerDavid Howells <dhowells@redhat.com>2018-05-14 15:15:18 +0100
commit684b0f68cf1c1cf4a40834818653491c5cad4435 (patch)
tree7130c6dbecf5792a13fac49feba84c2f2cee3a4b /fs/afs/rotate.c
parentafs: Fix server rotation's handling of fileserver probe failure (diff)
downloadlinux-dev-684b0f68cf1c1cf4a40834818653491c5cad4435.tar.xz
linux-dev-684b0f68cf1c1cf4a40834818653491c5cad4435.zip
afs: Fix AFSFetchStatus decoder to provide OpenAFS compatibility
The OpenAFS server's RXAFS_InlineBulkStatus implementation has a bug whereby if an error occurs on one of the vnodes being queried, then the errorCode field is set correctly in the corresponding status, but the interfaceVersion field is left unset. Fix kAFS to deal with this by evaluating the AFSFetchStatus blob against the following cases when called from FS.InlineBulkStatus delivery: (1) If InterfaceVersion == 0 then: (a) If errorCode != 0 then it indicates the abort code for the corresponding vnode. (b) If errorCode == 0 then the status record is invalid. (2) If InterfaceVersion == 1 then: (a) If errorCode != 0 then it indicates the abort code for the corresponding vnode. (b) If errorCode == 0 then the status record is valid and can be parsed. (3) If InterfaceVersion is anything else then the status record is invalid. Fixes: dd9fbcb8e103 ("afs: Rearrange status mapping") Reported-by: Jeffrey Altman <jaltman@auristor.com> Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions