]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: pass btrfs_space_info to btrfs_reserve_data_bytes()
authorNaohiro Aota <naohiro.aota@wdc.com>
Wed, 23 Apr 2025 02:43:41 +0000 (11:43 +0900)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 May 2025 12:30:52 +0000 (14:30 +0200)
Pass struct btrfs_space_info to btrfs_reserve_data_bytes() to allow
reserving the data from multiple data space_info candidates.

This is a preparation for the following commits and there is no functional
change.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/delalloc-space.c
fs/btrfs/space-info.c
fs/btrfs/space-info.h

index 1479be2427cb44dc15321c6c4a22f31cabe493ce..c7181779b013276e8c5574f6da76f04779b0209b 100644 (file)
@@ -123,7 +123,7 @@ int btrfs_alloc_data_chunk_ondemand(const struct btrfs_inode *inode, u64 bytes)
        if (btrfs_is_free_space_inode(inode))
                flush = BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE;
 
-       return btrfs_reserve_data_bytes(fs_info, bytes, flush);
+       return btrfs_reserve_data_bytes(fs_info->data_sinfo, bytes, flush);
 }
 
 int btrfs_check_data_free_space(struct btrfs_inode *inode,
@@ -144,7 +144,7 @@ int btrfs_check_data_free_space(struct btrfs_inode *inode,
        else if (btrfs_is_free_space_inode(inode))
                flush = BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE;
 
-       ret = btrfs_reserve_data_bytes(fs_info, len, flush);
+       ret = btrfs_reserve_data_bytes(fs_info->data_sinfo, len, flush);
        if (ret < 0)
                return ret;
 
index 77cc5d4a5a4774a412bdf55b5e322e9232c5366c..3bb7246f40fa9915f326b170f01ea49de832472b 100644 (file)
@@ -1836,10 +1836,10 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
  * This will reserve bytes from the data space info.  If there is not enough
  * space then we will attempt to flush space as specified by flush.
  */
-int btrfs_reserve_data_bytes(struct btrfs_fs_info *fs_info, u64 bytes,
+int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
                             enum btrfs_reserve_flush_enum flush)
 {
-       struct btrfs_space_info *data_sinfo = fs_info->data_sinfo;
+       struct btrfs_fs_info *fs_info = space_info->fs_info;
        int ret;
 
        ASSERT(flush == BTRFS_RESERVE_FLUSH_DATA ||
@@ -1847,12 +1847,12 @@ int btrfs_reserve_data_bytes(struct btrfs_fs_info *fs_info, u64 bytes,
               flush == BTRFS_RESERVE_NO_FLUSH);
        ASSERT(!current->journal_info || flush != BTRFS_RESERVE_FLUSH_DATA);
 
-       ret = __reserve_bytes(fs_info, data_sinfo, bytes, flush);
+       ret = __reserve_bytes(fs_info, space_info, bytes, flush);
        if (ret == -ENOSPC) {
                trace_btrfs_space_reservation(fs_info, "space_info:enospc",
-                                             data_sinfo->flags, bytes, 1);
+                                             space_info->flags, bytes, 1);
                if (btrfs_test_opt(fs_info, ENOSPC_DEBUG))
-                       btrfs_dump_space_info(fs_info, data_sinfo, bytes, 0);
+                       btrfs_dump_space_info(fs_info, space_info, bytes, 0);
        }
        return ret;
 }
index a96efdb5e681a3d386157c702c7b1ad6b87975d9..7459b4eb99cdc3ced1f042bd0ee57206440c45bf 100644 (file)
@@ -288,7 +288,7 @@ static inline void btrfs_space_info_free_bytes_may_use(
        btrfs_try_granting_tickets(space_info->fs_info, space_info);
        spin_unlock(&space_info->lock);
 }
-int btrfs_reserve_data_bytes(struct btrfs_fs_info *fs_info, u64 bytes,
+int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
                             enum btrfs_reserve_flush_enum flush);
 void btrfs_dump_space_info_for_trans_abort(struct btrfs_fs_info *fs_info);
 void btrfs_init_async_reclaim_work(struct btrfs_fs_info *fs_info);