[PATCH 13/41] afs: Handle the VIO abort explicitly

From: David Howells
Date: Thu Nov 09 2023 - 10:42:12 EST


When processing the result of a call, handle the VIO 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@xxxxxxxxxx>
cc: Marc Dionne <marc.dionne@xxxxxxxxxxxx>
cc: linux-afs@xxxxxxxxxxxxxxxxxxx
---
fs/afs/rotate.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/fs/afs/rotate.c b/fs/afs/rotate.c
index 0f59f2a81f23..342afc951fe4 100644
--- a/fs/afs/rotate.c
+++ b/fs/afs/rotate.c
@@ -329,6 +329,12 @@ bool afs_select_fileserver(struct afs_operation *op)

goto restart_from_beginning;

+ 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.