]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/btrfs/extent-tree.c
btrfs: Make drop_outstanding_extent take btrfs_inode
[karo-tx-linux.git] / fs / btrfs / extent-tree.c
index c17493ee2d9d1e4cdf03b69d2899d42b0a0f699a..19c2a9b6b52b2b3f724998f090536eb053f897a8 100644 (file)
@@ -5846,7 +5846,8 @@ void btrfs_subvolume_release_metadata(struct btrfs_fs_info *fs_info,
  * reserved extents that need to be freed.  This must be called with
  * BTRFS_I(inode)->lock held.
  */
-static unsigned drop_outstanding_extent(struct inode *inode, u64 num_bytes)
+static unsigned drop_outstanding_extent(struct btrfs_inode *inode,
+               u64 num_bytes)
 {
        unsigned drop_inode_space = 0;
        unsigned dropped_extents = 0;
@@ -5854,25 +5855,23 @@ static unsigned drop_outstanding_extent(struct inode *inode, u64 num_bytes)
 
        num_extents = count_max_extents(num_bytes);
        ASSERT(num_extents);
-       ASSERT(BTRFS_I(inode)->outstanding_extents >= num_extents);
-       BTRFS_I(inode)->outstanding_extents -= num_extents;
+       ASSERT(inode->outstanding_extents >= num_extents);
+       inode->outstanding_extents -= num_extents;
 
-       if (BTRFS_I(inode)->outstanding_extents == 0 &&
+       if (inode->outstanding_extents == 0 &&
            test_and_clear_bit(BTRFS_INODE_DELALLOC_META_RESERVED,
-                              &BTRFS_I(inode)->runtime_flags))
+                              &inode->runtime_flags))
                drop_inode_space = 1;
 
        /*
         * If we have more or the same amount of outstanding extents than we have
         * reserved then we need to leave the reserved extents count alone.
         */
-       if (BTRFS_I(inode)->outstanding_extents >=
-           BTRFS_I(inode)->reserved_extents)
+       if (inode->outstanding_extents >= inode->reserved_extents)
                return drop_inode_space;
 
-       dropped_extents = BTRFS_I(inode)->reserved_extents -
-               BTRFS_I(inode)->outstanding_extents;
-       BTRFS_I(inode)->reserved_extents -= dropped_extents;
+       dropped_extents = inode->reserved_extents - inode->outstanding_extents;
+       inode->reserved_extents -= dropped_extents;
        return dropped_extents + drop_inode_space;
 }
 
@@ -6015,7 +6014,7 @@ int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes)
 
 out_fail:
        spin_lock(&BTRFS_I(inode)->lock);
-       dropped = drop_outstanding_extent(inode, num_bytes);
+       dropped = drop_outstanding_extent(BTRFS_I(inode), num_bytes);
        /*
         * If the inodes csum_bytes is the same as the original
         * csum_bytes then we know we haven't raced with any free()ers
@@ -6094,7 +6093,7 @@ void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes)
 
        num_bytes = ALIGN(num_bytes, fs_info->sectorsize);
        spin_lock(&BTRFS_I(inode)->lock);
-       dropped = drop_outstanding_extent(inode, num_bytes);
+       dropped = drop_outstanding_extent(BTRFS_I(inode), num_bytes);
 
        if (num_bytes)
                to_free = calc_csum_metadata_size(inode, num_bytes, 0);