gfs2: Add SDF_DEACTIVATING super block flag
authorBob Peterson <rpeterso@redhat.com>
Tue, 6 Dec 2022 16:27:14 +0000 (17:27 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 31 Jan 2023 21:40:24 +0000 (22:40 +0100)
Add a new SDF_DEACTIVATING super block flag that is set when the
filesystem has started to deactivate. This will be used in the next
patch to stop and drain the delete work during unmount.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/incore.h
fs/gfs2/ops_fstype.c
fs/gfs2/sys.c

index 9b38012..d35bb49 100644 (file)
@@ -606,6 +606,7 @@ enum {
        SDF_REMOTE_WITHDRAW     = 13, /* Performing remote recovery */
        SDF_WITHDRAW_RECOVERY   = 14, /* Wait for journal recovery when we are
                                         withdrawing */
+       SDF_DEACTIVATING        = 15,
 };
 
 enum gfs2_freeze_state {
index f13a940..c9fef06 100644 (file)
@@ -1743,6 +1743,7 @@ static void gfs2_kill_sb(struct super_block *sb)
        sdp->sd_root_dir = NULL;
        sdp->sd_master_dir = NULL;
        shrink_dcache_sb(sb);
+       set_bit(SDF_DEACTIVATING, &sdp->sd_flags);
        kill_block_super(sb);
 }
 
index d87ea98..c40118e 100644 (file)
@@ -87,6 +87,7 @@ static ssize_t status_show(struct gfs2_sbd *sdp, char *buf)
                     "Withdraw In Prog:         %d\n"
                     "Remote Withdraw:          %d\n"
                     "Withdraw Recovery:        %d\n"
+                    "Deactivating:             %d\n"
                     "sd_log_error:             %d\n"
                     "sd_log_flush_lock:        %d\n"
                     "sd_log_num_revoke:        %u\n"
@@ -115,6 +116,7 @@ static ssize_t status_show(struct gfs2_sbd *sdp, char *buf)
                     test_bit(SDF_WITHDRAW_IN_PROG, &f),
                     test_bit(SDF_REMOTE_WITHDRAW, &f),
                     test_bit(SDF_WITHDRAW_RECOVERY, &f),
+                    test_bit(SDF_DEACTIVATING, &f),
                     sdp->sd_log_error,
                     rwsem_is_locked(&sdp->sd_log_flush_lock),
                     sdp->sd_log_num_revoke,