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

David Howells posted 41 patches 2 years, 1 month ago
There is a newer version of this series
[PATCH 13/41] afs: Handle the VIO abort explicitly
Posted by David Howells 2 years, 1 month ago
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@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
---
 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.
Re: [PATCH 13/41] afs: Handle the VIO abort explicitly
Posted by Jeffrey E Altman 2 years, 1 month ago
On 11/9/2023 10:39 AM, David Howells wrote:
> 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@redhat.com>
> cc: Marc Dionne <marc.dionne@auristor.com>
> cc: linux-afs@lists.infradead.org
> ---
>   fs/afs/rotate.c | 6 ++++++
>   1 file changed, 6 insertions(+)

OpenAFS fileservers can return VIO (112) either during an attempt to 
load a vnode or to store a vnode. However, most IBM AFS derived cache 
managers do not explicitly handle VIO errors and pass them to the vfs to 
be interpreted as a local operating system error. For Linux that means 
EHOSTDOWN. Therefore, AuriStorFS fileservers return UAEIO instead.

Please modify this patch to handle UAEIO the same as VIO.

Thank you.

Jeffrey Altman