Merge tag 'for-5.11/drivers-2020-12-14' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / fs / btrfs / free-space-tree.c
index 6b9faf3..e33a65b 100644 (file)
@@ -136,9 +136,10 @@ static int btrfs_search_prev_slot(struct btrfs_trans_handle *trans,
        return 0;
 }
 
-static inline u32 free_space_bitmap_size(u64 size, u32 sectorsize)
+static inline u32 free_space_bitmap_size(const struct btrfs_fs_info *fs_info,
+                                        u64 size)
 {
-       return DIV_ROUND_UP((u32)div_u64(size, sectorsize), BITS_PER_BYTE);
+       return DIV_ROUND_UP(size >> fs_info->sectorsize_bits, BITS_PER_BYTE);
 }
 
 static unsigned long *alloc_bitmap(u32 bitmap_size)
@@ -200,8 +201,7 @@ int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
        int done = 0, nr;
        int ret;
 
-       bitmap_size = free_space_bitmap_size(block_group->length,
-                                            fs_info->sectorsize);
+       bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
        bitmap = alloc_bitmap(bitmap_size);
        if (!bitmap) {
                ret = -ENOMEM;
@@ -290,8 +290,7 @@ int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
                u32 data_size;
 
                extent_size = min(end - i, bitmap_range);
-               data_size = free_space_bitmap_size(extent_size,
-                                                  fs_info->sectorsize);
+               data_size = free_space_bitmap_size(fs_info, extent_size);
 
                key.objectid = i;
                key.type = BTRFS_FREE_SPACE_BITMAP_KEY;
@@ -339,8 +338,7 @@ int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
        int done = 0, nr;
        int ret;
 
-       bitmap_size = free_space_bitmap_size(block_group->length,
-                                            fs_info->sectorsize);
+       bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
        bitmap = alloc_bitmap(bitmap_size);
        if (!bitmap) {
                ret = -ENOMEM;
@@ -383,8 +381,8 @@ int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
                                                     fs_info->sectorsize *
                                                     BITS_PER_BYTE);
                                bitmap_cursor = ((char *)bitmap) + bitmap_pos;
-                               data_size = free_space_bitmap_size(found_key.offset,
-                                                                  fs_info->sectorsize);
+                               data_size = free_space_bitmap_size(fs_info,
+                                                               found_key.offset);
 
                                ptr = btrfs_item_ptr_offset(leaf, path->slots[0] - 1);
                                read_extent_buffer(leaf, bitmap_cursor, ptr,
@@ -416,7 +414,7 @@ int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
        btrfs_mark_buffer_dirty(leaf);
        btrfs_release_path(path);
 
-       nrbits = div_u64(block_group->length, block_group->fs_info->sectorsize);
+       nrbits = block_group->length >> block_group->fs_info->sectorsize_bits;
        start_bit = find_next_bit_le(bitmap, nrbits, 0);
 
        while (start_bit < nrbits) {
@@ -540,8 +538,8 @@ static void free_space_set_bits(struct btrfs_block_group *block_group,
                end = found_end;
 
        ptr = btrfs_item_ptr_offset(leaf, path->slots[0]);
-       first = div_u64(*start - found_start, fs_info->sectorsize);
-       last = div_u64(end - found_start, fs_info->sectorsize);
+       first = (*start - found_start) >> fs_info->sectorsize_bits;
+       last = (end - found_start) >> fs_info->sectorsize_bits;
        if (bit)
                extent_buffer_bitmap_set(leaf, ptr, first, last - first);
        else
@@ -1195,8 +1193,6 @@ static int clear_free_space_tree(struct btrfs_trans_handle *trans,
        if (!path)
                return -ENOMEM;
 
-       path->leave_spinning = 1;
-
        key.objectid = 0;
        key.type = 0;
        key.offset = 0;