summaryrefslogtreecommitdiff
path: root/fs/afs
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2023-10-20 16:00:18 +0100
committerDavid Howells <dhowells@redhat.com>2023-12-24 15:22:52 +0000
commiteb8eae65f0c713bcef84b082aa919f72c3d83268 (patch)
treededc324f98c9efeb38b657b2ce0c8a7bbbbbb0f5 /fs/afs
parentaa4917d6e59dc66ccffc8f449ea04f8236dd6ea4 (diff)
afs: Handle the VIO and UAEIO aborts explicitly
When processing the result of a call, handle the VIO and UAEIO abort specifically rather than leaving it to a default case. Rather than erroring out unconditionally, see if there's another server if the volume has more than one server available, otherwise return -EREMOTEIO. Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: linux-afs@lists.infradead.org
Diffstat (limited to 'fs/afs')
-rw-r--r--fs/afs/rotate.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/afs/rotate.c b/fs/afs/rotate.c
index 13ec8ffa911a..0829933f4d9a 100644
--- a/fs/afs/rotate.c
+++ b/fs/afs/rotate.c
@@ -330,6 +330,13 @@ bool afs_select_fileserver(struct afs_operation *op)
goto restart_from_beginning;
+ case UAEIO:
+ case VIO:
+ op->error = -EREMOTEIO;
+ if (op->volume->type != AFSVL_RWVOL)
+ goto next_server;
+ goto failed;
+
case VDISKFULL:
case UAENOSPC:
/* The partition is full. Only applies to RWVOLs.