Message ID | 20231109154004.3317227-14-dhowells@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | afs: Fix probe handling, server rotation and RO volume callback handling | expand |
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
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.
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(+)