]> Git Repo - linux.git/commitdiff
gfs2: in signal_our_withdraw wait for unfreeze of _this_ fs only
authorBob Peterson <[email protected]>
Thu, 3 Dec 2020 13:51:41 +0000 (08:51 -0500)
committerAndreas Gruenbacher <[email protected]>
Thu, 3 Dec 2020 16:04:41 +0000 (17:04 +0100)
Function signal_our_withdraw needs to work on file systems that have been
partially frozen. To do this, it called flush_workqueue(gfs2_freeze_wq).
This this wrong because it waits for *ALL* file systems to be unfrozen, not
just the one we're withdrawing from. It should only wait for the targetted
file system to be unfrozen. Otherwise it would wait until ALL file systems
are thawed before signaling the withdraw.

This patch changes signal_our_withdraw so it calls flush_work() for the target
file system's freeze work (only) to be completed.

Signed-off-by: Bob Peterson <[email protected]>
Signed-off-by: Andreas Gruenbacher <[email protected]>
fs/gfs2/util.c

index 0fba3bf641890e304be48f763346432b334bd065..a374397f42730c4e70dcb0060bb2c2a81d1c5ba1 100644 (file)
@@ -137,7 +137,7 @@ static void signal_our_withdraw(struct gfs2_sbd *sdp)
        gfs2_glock_dq(&sdp->sd_jinode_gh);
        if (test_bit(SDF_FS_FROZEN, &sdp->sd_flags)) {
                /* Make sure gfs2_unfreeze works if partially-frozen */
-               flush_workqueue(gfs2_freeze_wq);
+               flush_work(&sdp->sd_freeze_work);
                atomic_set(&sdp->sd_freeze_state, SFS_FROZEN);
                thaw_super(sdp->sd_vfs);
        } else {
This page took 0.057563 seconds and 4 git commands to generate.