linux/fs/afs
David Howells 0ab4c95948 afs: Fix error propagation from server record check/update
afs_check/update_server_record() should be setting fc->error rather than
fc->ac.error as they're called from within the cursor iteration function.

afs_fs_cursor::error is where the error code of the attempt to call the
operation on multiple servers is integrated and is the final result,
whereas afs_addr_cursor::error is used to hold the error from individual
iterations of the call loop.  (Note there's also an afs_vl_cursor which
also wraps afs_addr_cursor for accessing VL servers rather than file
servers).

Fix this by setting fc->error in the afs_check/update_server_record() so
that any error incurred whilst talking to the VL server correctly
propagates to the final result.

This results in:

	kAFS: Unexpected error from FS.StoreData -512

being seen, even though the store-data op is non-interruptible.  The error
is actually coming from the server record update getting interrupted.

Fixes: d2ddc776a4 ("afs: Overhaul volume and server record caching and fileserver rotation")
Signed-off-by: David Howells <dhowells@redhat.com>
2019-05-16 16:25:20 +01:00
..
addr_list.c dns_resolver: Allow used keys to be invalidated 2019-05-15 17:35:54 +01:00
afs_cm.h afs: support the CB.ProbeUuid RPC op 2008-04-29 08:06:26 -07:00
afs_fs.h afs: implement acl setting 2019-05-07 16:48:44 +01:00
afs_vl.h afs: Make use of the YFS service upgrade to fully support IPv6 2017-11-13 15:38:19 +00:00
afs.h afs: Fix the maximum lifespan of VL and probe calls 2019-05-16 16:25:20 +01:00
cache.c afs: Increase to 64-bit volume ID and 96-bit vnode ID for YFS 2018-10-24 00:41:08 +01:00
callback.c afs: Fix in-progess ops to ignore server-level callback invalidation 2019-04-13 08:37:37 +01:00
cell.c afs: Fix cell DNS lookup 2019-05-16 12:58:23 +01:00
cmservice.c Wimplicit-fallthrough patches for 5.2-rc1 2019-05-07 12:48:10 -07:00
dir_edit.c afs: Locally edit directory data for mkdir/create/unlink/... 2018-04-09 21:54:48 +01:00
dir_silly.c afs: Implement sillyrename for unlink and rename 2019-04-25 14:26:51 +01:00
dir.c afs: Log more information for "kAFS: AFS vnode with undefined type\n" 2019-05-07 16:48:44 +01:00
dynroot.c dns_resolver: Allow used keys to be invalidated 2019-05-15 17:35:54 +01:00
file.c afs: Fix key leak in afs_release() and afs_evict_inode() 2019-05-15 12:32:34 +01:00
flock.c AFS Development 2019-05-07 20:51:58 -07:00
fs_probe.c afs: Split wait from afs_make_call() 2019-04-25 14:26:50 +01:00
fsclient.c afs: Fix the maximum lifespan of VL and probe calls 2019-05-16 16:25:20 +01:00
inode.c afs: Fix key leak in afs_release() and afs_evict_inode() 2019-05-15 12:32:34 +01:00
internal.h afs: Fix the maximum lifespan of VL and probe calls 2019-05-16 16:25:20 +01:00
Kconfig afs: Allow dumping of server cursor on operation failure 2018-10-24 00:41:09 +01:00
main.c afs: Fix cell proc list 2018-10-12 13:18:57 +02:00
Makefile afs: Implement sillyrename for unlink and rename 2019-04-25 14:26:51 +01:00
misc.c afs: Mark expected switch fall-throughs 2019-04-08 18:35:56 -05:00
mntpt.c afs: Use fs_context to pass parameters over automount 2019-02-28 03:29:39 -05:00
netdevices.c afs: Implement network namespacing 2018-05-23 12:01:15 +01:00
proc.c afs: Fix afs_cell records to always have a VL server list record 2019-05-15 17:35:53 +01:00
protocol_yfs.h afs: Get YFS ACLs and information through xattrs 2019-05-07 16:48:44 +01:00
rotate.c afs: Fix "kAFS: AFS vnode with undefined type 0" 2019-05-16 15:48:20 +01:00
rxrpc.c afs: Fix the maximum lifespan of VL and probe calls 2019-05-16 16:25:20 +01:00
security.c afs: Fix callback handling 2018-10-24 00:41:09 +01:00
server_list.c afs: Use struct_size() in kzalloc() 2019-01-10 17:12:05 +00:00
server.c afs: Fix error propagation from server record check/update 2019-05-16 16:25:20 +01:00
super.c AFS Development 2019-05-07 20:51:58 -07:00
vl_list.c afs: Fix afs_cell records to always have a VL server list record 2019-05-15 17:35:53 +01:00
vl_probe.c afs: Split wait from afs_make_call() 2019-04-25 14:26:50 +01:00
vl_rotate.c afs: Fix cell DNS lookup 2019-05-16 12:58:23 +01:00
vlclient.c afs: Fix the maximum lifespan of VL and probe calls 2019-05-16 16:25:20 +01:00
volume.c afs: Add fs_context support 2019-02-28 03:29:38 -05:00
write.c afs: Unlock pages for __pagevec_release() 2019-04-13 08:37:37 +01:00
xattr.c afs: Fix afs_xattr_get_yfs() to not try freeing an error value 2019-05-15 17:35:53 +01:00
xdr_fs.h afs: Adjust the directory XDR structures 2018-04-09 21:54:48 +01:00
yfsclient.c afs: Fix afs_xattr_get_yfs() to not try freeing an error value 2019-05-15 17:35:53 +01:00