OSDN Git Service

btrfs: remove fs_info::pending_changes and related code
authorJosef Bacik <josef@toxicpanda.com>
Wed, 19 Oct 2022 14:50:56 +0000 (10:50 -0400)
committerDavid Sterba <dsterba@suse.com>
Mon, 5 Dec 2022 17:00:42 +0000 (18:00 +0100)
Now that we're not using this code anywhere we can remove it as well as
the member from fs_info.

We don't have any mount options or on/off features that would utilize
the pending infrastructure, the last one was inode_cache.
There was a patchset [1] to enable some features from sysfs that would
break things if it would be set immediately. In case we'll need that
kind of logic again the patch can be reverted, but for the current use
it can be replaced by the single state bit to do the commit.

[1] https://lore.kernel.org/linux-btrfs/1422609654-19519-1-git-send-email-quwenruo@cn.fujitsu.com/

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
[ add note ]
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h
fs/btrfs/disk-io.c
fs/btrfs/transaction.c
fs/btrfs/transaction.h

index 149c185..c5f2f38 100644 (file)
@@ -373,11 +373,7 @@ struct btrfs_fs_info {
         */
        u64 last_trans_log_full_commit;
        unsigned long mount_opt;
-       /*
-        * Track requests for actions that need to be done during transaction
-        * commit (like for some mount options).
-        */
-       unsigned long pending_changes;
+
        unsigned long compress_type:4;
        unsigned int compress_level;
        u32 commit_interval;
@@ -1260,23 +1256,6 @@ static inline u32 BTRFS_MAX_XATTR_SIZE(const struct btrfs_fs_info *info)
        return BTRFS_MAX_ITEM_SIZE(info) - sizeof(struct btrfs_dir_item);
 }
 
-/*
- * Requests for changes that need to be done during transaction commit.
- *
- * Internal mount options that are used for special handling of the real
- * mount options (eg. cannot be set during remount and have to be set during
- * transaction commit)
- */
-
-#define BTRFS_PENDING_COMMIT                   (0)
-
-#define btrfs_test_pending(info, opt)  \
-       test_bit(BTRFS_PENDING_##opt, &(info)->pending_changes)
-#define btrfs_set_pending(info, opt)   \
-       set_bit(BTRFS_PENDING_##opt, &(info)->pending_changes)
-#define btrfs_clear_pending(info, opt) \
-       clear_bit(BTRFS_PENDING_##opt, &(info)->pending_changes)
-
 struct btrfs_map_token {
        struct extent_buffer *eb;
        char *kaddr;
index 5e20b19..2c38b4e 100644 (file)
@@ -3761,12 +3761,6 @@ int __cold open_ctree(struct super_block *sb, struct btrfs_fs_devices *fs_device
                btrfs_clear_opt(fs_info->mount_opt, NODISCARD);
        }
 
-       /*
-        * Mount does not set all options immediately, we can do it now and do
-        * not have to wait for transaction commit
-        */
-       btrfs_apply_pending_changes(fs_info);
-
 #ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
        if (btrfs_test_opt(fs_info, CHECK_INTEGRITY)) {
                ret = btrfsic_mount(fs_info, fs_devices,
index 7b6b68a..37d0baa 100644 (file)
@@ -2359,12 +2359,6 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans)
        if (ret)
                goto unlock_reloc;
 
-       /*
-        * Since the transaction is done, we can apply the pending changes
-        * before the next transaction.
-        */
-       btrfs_apply_pending_changes(fs_info);
-
        /* commit_fs_roots gets rid of all the tree log roots, it is now
         * safe to free the root of tree log roots
         */
@@ -2587,25 +2581,6 @@ int btrfs_clean_one_deleted_snapshot(struct btrfs_fs_info *fs_info)
        return (ret < 0) ? 0 : 1;
 }
 
-void btrfs_apply_pending_changes(struct btrfs_fs_info *fs_info)
-{
-       unsigned long prev;
-       unsigned long bit;
-
-       prev = xchg(&fs_info->pending_changes, 0);
-       if (!prev)
-               return;
-
-       bit = 1 << BTRFS_PENDING_COMMIT;
-       if (prev & bit)
-               btrfs_debug(fs_info, "pending commit done");
-       prev &= ~bit;
-
-       if (prev)
-               btrfs_warn(fs_info,
-                       "unknown pending changes left 0x%lx, ignoring", prev);
-}
-
 int __init btrfs_transaction_init(void)
 {
        btrfs_trans_handle_cachep = kmem_cache_create("btrfs_trans_handle",
index b39ebf9..97f6c39 100644 (file)
@@ -233,7 +233,6 @@ int btrfs_wait_tree_log_extents(struct btrfs_root *root, int mark);
 int btrfs_transaction_blocked(struct btrfs_fs_info *info);
 int btrfs_transaction_in_commit(struct btrfs_fs_info *info);
 void btrfs_put_transaction(struct btrfs_transaction *transaction);
-void btrfs_apply_pending_changes(struct btrfs_fs_info *fs_info);
 void btrfs_add_dropped_root(struct btrfs_trans_handle *trans,
                            struct btrfs_root *root);
 void btrfs_trans_release_chunk_metadata(struct btrfs_trans_handle *trans);