btrfs: rename and switch to bool btrfs_chunk_readonly
authorAnand Jain <anand.jain@oracle.com>
Tue, 24 Aug 2021 05:27:42 +0000 (13:27 +0800)
committerDavid Sterba <dsterba@suse.com>
Tue, 26 Oct 2021 17:03:57 +0000 (19:03 +0200)
btrfs_chunk_readonly() checks if the given chunk is writeable. It
returns 1 for readonly, and 0 for writeable. So the return argument type
bool shall suffice instead of the current type int.

Also, rename btrfs_chunk_readonly() to btrfs_chunk_writeable() as we
check if the bg is writeable, and helps to keep the logic at the parent
function simpler to understand.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/block-group.c
fs/btrfs/volumes.c
fs/btrfs/volumes.h

index 1f8b06afbd03db5660cbf02d10b00a3711078055..64c4685bd7706464f08a898ec77571d558697386 100644 (file)
@@ -2062,15 +2062,18 @@ static int read_one_block_group(struct btrfs_fs_info *info,
        link_block_group(cache);
 
        set_avail_alloc_bits(info, cache->flags);
-       if (btrfs_chunk_readonly(info, cache->start)) {
+       if (btrfs_chunk_writeable(info, cache->start)) {
+               if (cache->used == 0) {
+                       ASSERT(list_empty(&cache->bg_list));
+                       if (btrfs_test_opt(info, DISCARD_ASYNC))
+                               btrfs_discard_queue_work(&info->discard_ctl, cache);
+                       else
+                               btrfs_mark_bg_unused(cache);
+               }
+       } else {
                inc_block_group_ro(cache, 1);
-       } else if (cache->used == 0) {
-               ASSERT(list_empty(&cache->bg_list));
-               if (btrfs_test_opt(info, DISCARD_ASYNC))
-                       btrfs_discard_queue_work(&info->discard_ctl, cache);
-               else
-                       btrfs_mark_bg_unused(cache);
        }
+
        return 0;
 error:
        btrfs_put_block_group(cache);
index a5e29a3f56d21588dac6fe2b49fb62287cabaaee..161b2da02fe44d6c1c12116d31a6d7baca63cf00 100644 (file)
@@ -5597,17 +5597,17 @@ static inline int btrfs_chunk_max_errors(struct map_lookup *map)
        return btrfs_raid_array[index].tolerated_failures;
 }
 
-int btrfs_chunk_readonly(struct btrfs_fs_info *fs_info, u64 chunk_offset)
+bool btrfs_chunk_writeable(struct btrfs_fs_info *fs_info, u64 chunk_offset)
 {
        struct extent_map *em;
        struct map_lookup *map;
-       int readonly = 0;
        int miss_ndevs = 0;
        int i;
+       bool ret = true;
 
        em = btrfs_get_chunk_map(fs_info, chunk_offset, 1);
        if (IS_ERR(em))
-               return 1;
+               return false;
 
        map = em->map_lookup;
        for (i = 0; i < map->num_stripes; i++) {
@@ -5618,21 +5618,20 @@ int btrfs_chunk_readonly(struct btrfs_fs_info *fs_info, u64 chunk_offset)
                }
                if (!test_bit(BTRFS_DEV_STATE_WRITEABLE,
                                        &map->stripes[i].dev->dev_state)) {
-                       readonly = 1;
+                       ret = false;
                        goto end;
                }
        }
 
        /*
-        * If the number of missing devices is larger than max errors,
-        * we can not write the data into that chunk successfully, so
-        * set it readonly.
+        * If the number of missing devices is larger than max errors, we can
+        * not write the data into that chunk successfully.
         */
        if (miss_ndevs > btrfs_chunk_max_errors(map))
-               readonly = 1;
+               ret = false;
 end:
        free_extent_map(em);
-       return readonly;
+       return ret;
 }
 
 void btrfs_mapping_tree_free(struct extent_map_tree *tree)
index 5314ce51b9273c4eb8e89f06e7cd88e5e25d190a..937a81f9f6e611da4766488e2c37e3ea960a3cc5 100644 (file)
@@ -493,7 +493,7 @@ int btrfs_relocate_chunk(struct btrfs_fs_info *fs_info, u64 chunk_offset);
 int btrfs_cancel_balance(struct btrfs_fs_info *fs_info);
 int btrfs_create_uuid_tree(struct btrfs_fs_info *fs_info);
 int btrfs_uuid_scan_kthread(void *data);
-int btrfs_chunk_readonly(struct btrfs_fs_info *fs_info, u64 chunk_offset);
+bool btrfs_chunk_writeable(struct btrfs_fs_info *fs_info, u64 chunk_offset);
 int find_free_dev_extent(struct btrfs_device *device, u64 num_bytes,
                         u64 *start, u64 *max_avail);
 void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index);