mirror of https://gitee.com/openkylin/linux.git
e7f680f45b
Improve the error handling in FS server rotation by:
(1) Cache the latest useful error value for the fs operation as a whole in
struct afs_fs_cursor separately from the error cached in the
afs_addr_cursor struct. The one in the address cursor gets clobbered
occasionally. Copy over the error to the fs operation only when it's
something we'd be interested in passing to userspace.
(2) Make it so that EDESTADDRREQ is the default that is seen only if no
addresses are available to be accessed.
(3) When calling utility functions, such as checking a volume status or
probing a fileserver, don't let a successful result clobber the cached
error in the cursor; instead, stash the result in a temporary variable
until it has been assessed.
(4) Don't return ETIMEDOUT or ETIME if a better error, such as
ENETUNREACH, is already cached.
(5) On leaving the rotation loop, turn any remote abort code into a more
useful error than ECONNABORTED.
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
addr_list.c | ||
afs.h | ||
afs_cm.h | ||
afs_fs.h | ||
afs_vl.h | ||
cache.c | ||
callback.c | ||
cell.c | ||
cmservice.c | ||
dir.c | ||
dir_edit.c | ||
dynroot.c | ||
file.c | ||
flock.c | ||
fsclient.c | ||
inode.c | ||
internal.h | ||
main.c | ||
misc.c | ||
mntpt.c | ||
netdevices.c | ||
proc.c | ||
rotate.c | ||
rxrpc.c | ||
security.c | ||
server.c | ||
server_list.c | ||
super.c | ||
vlclient.c | ||
volume.c | ||
write.c | ||
xattr.c | ||
xdr_fs.h |