summaryrefslogtreecommitdiff
path: root/fs/afs/server.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2020-04-16 20:17:13 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-05-02 09:48:43 +0300
commitc2bdc86ec8ac483e76c4bd59fcafad3a3cf91539 (patch)
tree766aa5209f5d81b1411565ef2f776ad4c15fa73c /fs/afs/server.c
parent9dcb1844f884e8294e46ff317b0532068784eb5f (diff)
downloadlinux-c2bdc86ec8ac483e76c4bd59fcafad3a3cf91539.tar.xz
afs: Make record checking use TASK_UNINTERRUPTIBLE when appropriate
commit c4bfda16d1b40d1c5941c61b5aa336bdd2d9904a upstream. When an operation is meant to be done uninterruptibly (such as FS.StoreData), we should not be allowing volume and server record checking to be interrupted. Fixes: d2ddc776a458 ("afs: Overhaul volume and server record caching and fileserver rotation") Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/afs/server.c')
-rw-r--r--fs/afs/server.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/fs/afs/server.c b/fs/afs/server.c
index ca8115ba1724..d3a9288f7556 100644
--- a/fs/afs/server.c
+++ b/fs/afs/server.c
@@ -595,12 +595,9 @@ retry:
}
ret = wait_on_bit(&server->flags, AFS_SERVER_FL_UPDATING,
- TASK_INTERRUPTIBLE);
+ (fc->flags & AFS_FS_CURSOR_INTR) ?
+ TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE);
if (ret == -ERESTARTSYS) {
- if (!(fc->flags & AFS_FS_CURSOR_INTR) && server->addresses) {
- _leave(" = t [intr]");
- return true;
- }
fc->error = ret;
_leave(" = f [intr]");
return false;