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 9b380125eb78c817098cce8e4f58abcfba62b960..d35bb49d1d3f8edb2721160a122e8584f771e250 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 f13a940f99d38bb45cc87044a77c94d3e6b5dcbd..c9fef067832047d755c8793dce0c14ff2ba2cc38 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 d87ea98cf5350883fe16a838faf3d5b5dc260c34..c40118ea4bbcc0a5c391bd3d15ec341cce44b7a6 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,