Commit 2c458045 authored by Zhao Lei's avatar Zhao Lei Committed by Chris Mason

btrfs: Cleanup for btrfs_calc_num_tolerated_disk_barrier_failures

1: Use ARRAY_SIZE(types) to replace a static-value variant:
   int num_types = 4;

2: Use 'continue' on condition to reduce one level tab
   if (!XXX) {
       code;
       ...
   }
   ->
   if (XXX)
       continue;
   code;
   ...

3: Put setting 'num_tolerated_disk_barrier_failures = 2' to
   (num_tolerated_disk_barrier_failures > 2) condition to make
   make logic neat.
   if (num_tolerated_disk_barrier_failures > 0 && XXX)
       num_tolerated_disk_barrier_failures = 0;
   else if (num_tolerated_disk_barrier_failures > 1) {
       if (XXX)
           num_tolerated_disk_barrier_failures = 1;
       else if (XXX)
           num_tolerated_disk_barrier_failures = 2;
   ->
   if (num_tolerated_disk_barrier_failures > 0 && XXX)
       num_tolerated_disk_barrier_failures = 0;
   if (num_tolerated_disk_barrier_failures > 1 && XXX)
       num_tolerated_disk_barrier_failures = ;
   if (num_tolerated_disk_barrier_failures > 2 && XXX)
       num_tolerated_disk_barrier_failures = 2;

4: Remove comment of:
   num_mirrors - 1: if RAID1 or RAID10 is configured and more
   than 2 mirrors are used.
   which is not fit with code.
Signed-off-by: default avatarZhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent 8c204c96
...@@ -3449,13 +3449,12 @@ int btrfs_calc_num_tolerated_disk_barrier_failures( ...@@ -3449,13 +3449,12 @@ int btrfs_calc_num_tolerated_disk_barrier_failures(
BTRFS_BLOCK_GROUP_SYSTEM, BTRFS_BLOCK_GROUP_SYSTEM,
BTRFS_BLOCK_GROUP_METADATA, BTRFS_BLOCK_GROUP_METADATA,
BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_METADATA}; BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_METADATA};
int num_types = 4;
int i; int i;
int c; int c;
int num_tolerated_disk_barrier_failures = int num_tolerated_disk_barrier_failures =
(int)fs_info->fs_devices->num_devices; (int)fs_info->fs_devices->num_devices;
for (i = 0; i < num_types; i++) { for (i = 0; i < ARRAY_SIZE(types); i++) {
struct btrfs_space_info *tmp; struct btrfs_space_info *tmp;
sinfo = NULL; sinfo = NULL;
...@@ -3473,44 +3472,38 @@ int btrfs_calc_num_tolerated_disk_barrier_failures( ...@@ -3473,44 +3472,38 @@ int btrfs_calc_num_tolerated_disk_barrier_failures(
down_read(&sinfo->groups_sem); down_read(&sinfo->groups_sem);
for (c = 0; c < BTRFS_NR_RAID_TYPES; c++) { for (c = 0; c < BTRFS_NR_RAID_TYPES; c++) {
if (!list_empty(&sinfo->block_groups[c])) { u64 flags;
u64 flags;
if (list_empty(&sinfo->block_groups[c]))
btrfs_get_block_group_info( continue;
&sinfo->block_groups[c], &space);
if (space.total_bytes == 0 || btrfs_get_block_group_info(&sinfo->block_groups[c],
space.used_bytes == 0) &space);
continue; if (space.total_bytes == 0 || space.used_bytes == 0)
flags = space.flags; continue;
/* flags = space.flags;
* return /*
* 0: if dup, single or RAID0 is configured for * return
* any of metadata, system or data, else * 0: if dup, single or RAID0 is configured for
* 1: if RAID5 is configured, or if RAID1 or * any of metadata, system or data, else
* RAID10 is configured and only two mirrors * 1: if RAID5 is configured, or if RAID1 or
* are used, else * RAID10 is configured and only two mirrors
* 2: if RAID6 is configured, else * are used, else
* num_mirrors - 1: if RAID1 or RAID10 is * 2: if RAID6 is configured
* configured and more than */
* 2 mirrors are used. if (num_tolerated_disk_barrier_failures > 0 &&
*/ ((flags & (BTRFS_BLOCK_GROUP_DUP |
if (num_tolerated_disk_barrier_failures > 0 && BTRFS_BLOCK_GROUP_RAID0)) ||
((flags & (BTRFS_BLOCK_GROUP_DUP | ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0)))
BTRFS_BLOCK_GROUP_RAID0)) || num_tolerated_disk_barrier_failures = 0;
((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) else if (num_tolerated_disk_barrier_failures > 1 &&
== 0))) (flags & (BTRFS_BLOCK_GROUP_RAID1 |
num_tolerated_disk_barrier_failures = 0; BTRFS_BLOCK_GROUP_RAID5 |
else if (num_tolerated_disk_barrier_failures > 1) { BTRFS_BLOCK_GROUP_RAID10)))
if (flags & (BTRFS_BLOCK_GROUP_RAID1 | num_tolerated_disk_barrier_failures = 1;
BTRFS_BLOCK_GROUP_RAID5 | else if (num_tolerated_disk_barrier_failures > 2 &&
BTRFS_BLOCK_GROUP_RAID10)) { (flags & BTRFS_BLOCK_GROUP_RAID6))
num_tolerated_disk_barrier_failures = 1; num_tolerated_disk_barrier_failures = 2;
} else if (flags &
BTRFS_BLOCK_GROUP_RAID6) {
num_tolerated_disk_barrier_failures = 2;
}
}
}
} }
up_read(&sinfo->groups_sem); up_read(&sinfo->groups_sem);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment