]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
gfs2: move msleep to sleepable context
authorAlexander Aring <aahringo@redhat.com>
Mon, 31 Mar 2025 23:03:24 +0000 (19:03 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:11:12 +0000 (11:11 +0100)
commit ac5ee087d31ed93b6e45d2968a66828c6f621d8c upstream.

This patch moves the msleep_interruptible() out of the non-sleepable
context by moving the ls->ls_recover_spin spinlock around so
msleep_interruptible() will be called in a sleepable context.

Cc: stable@vger.kernel.org
Fixes: 4a7727725dc7 ("GFS2: Fix recovery issues for spectators")
Suggested-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/gfs2/lock_dlm.c

index fa5134df985f75af83077ec3207464c4af2101bd..9e27dd8bef88d81cdce30594493885d02f624144 100644 (file)
@@ -975,14 +975,15 @@ locks_done:
                if (sdp->sd_args.ar_spectator) {
                        fs_info(sdp, "Recovery is required. Waiting for a "
                                "non-spectator to mount.\n");
+                       spin_unlock(&ls->ls_recover_spin);
                        msleep_interruptible(1000);
                } else {
                        fs_info(sdp, "control_mount wait1 block %u start %u "
                                "mount %u lvb %u flags %lx\n", block_gen,
                                start_gen, mount_gen, lvb_gen,
                                ls->ls_recover_flags);
+                       spin_unlock(&ls->ls_recover_spin);
                }
-               spin_unlock(&ls->ls_recover_spin);
                goto restart;
        }