summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorZhao Lei <zhaolei@cn.fujitsu.com>2015-07-16 03:00:46 -0400
committerChris Mason <clm@fb.com>2015-08-31 14:45:47 -0400
commit2c4580454fffbf184fdb9292aa19ab1ffc224add (patch)
treea9857994347042ae7d1709697fcde157ffcb0a38 /fs
parent8c204c9657c32ec5a259ebf852a767afe7efdafa (diff)
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: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/disk-io.c73
1 files changed, 33 insertions, 40 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index cc15514b4a76..51192d94c90c 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -3449,13 +3449,12 @@ int btrfs_calc_num_tolerated_disk_barrier_failures(
3449 BTRFS_BLOCK_GROUP_SYSTEM, 3449 BTRFS_BLOCK_GROUP_SYSTEM,
3450 BTRFS_BLOCK_GROUP_METADATA, 3450 BTRFS_BLOCK_GROUP_METADATA,
3451 BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_METADATA}; 3451 BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_METADATA};
3452 int num_types = 4;
3453 int i; 3452 int i;
3454 int c; 3453 int c;
3455 int num_tolerated_disk_barrier_failures = 3454 int num_tolerated_disk_barrier_failures =
3456 (int)fs_info->fs_devices->num_devices; 3455 (int)fs_info->fs_devices->num_devices;
3457 3456
3458 for (i = 0; i < num_types; i++) { 3457 for (i = 0; i < ARRAY_SIZE(types); i++) {
3459 struct btrfs_space_info *tmp; 3458 struct btrfs_space_info *tmp;
3460 3459
3461 sinfo = NULL; 3460 sinfo = NULL;
@@ -3473,44 +3472,38 @@ int btrfs_calc_num_tolerated_disk_barrier_failures(
3473 3472
3474 down_read(&sinfo->groups_sem); 3473 down_read(&sinfo->groups_sem);
3475 for (c = 0; c < BTRFS_NR_RAID_TYPES; c++) { 3474 for (c = 0; c < BTRFS_NR_RAID_TYPES; c++) {
3476 if (!list_empty(&sinfo->block_groups[c])) { 3475 u64 flags;
3477 u64 flags; 3476
3478 3477 if (list_empty(&sinfo->block_groups[c]))
3479 btrfs_get_block_group_info( 3478 continue;
3480 &sinfo->block_groups[c], &space); 3479
3481 if (space.total_bytes == 0 || 3480 btrfs_get_block_group_info(&sinfo->block_groups[c],
3482 space.used_bytes == 0) 3481 &space);
3483 continue; 3482 if (space.total_bytes == 0 || space.used_bytes == 0)
3484 flags = space.flags; 3483 continue;
3485 /* 3484 flags = space.flags;
3486 * return 3485 /*
3487 * 0: if dup, single or RAID0 is configured for 3486 * return
3488 * any of metadata, system or data, else 3487 * 0: if dup, single or RAID0 is configured for
3489 * 1: if RAID5 is configured, or if RAID1 or 3488 * any of metadata, system or data, else
3490 * RAID10 is configured and only two mirrors 3489 * 1: if RAID5 is configured, or if RAID1 or
3491 * are used, else 3490 * RAID10 is configured and only two mirrors
3492 * 2: if RAID6 is configured, else 3491 * are used, else
3493 * num_mirrors - 1: if RAID1 or RAID10 is 3492 * 2: if RAID6 is configured
3494 * configured and more than 3493 */
3495 * 2 mirrors are used. 3494 if (num_tolerated_disk_barrier_failures > 0 &&
3496 */ 3495 ((flags & (BTRFS_BLOCK_GROUP_DUP |
3497 if (num_tolerated_disk_barrier_failures > 0 && 3496 BTRFS_BLOCK_GROUP_RAID0)) ||
3498 ((flags & (BTRFS_BLOCK_GROUP_DUP | 3497 ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0)))
3499 BTRFS_BLOCK_GROUP_RAID0)) || 3498 num_tolerated_disk_barrier_failures = 0;
3500 ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) 3499 else if (num_tolerated_disk_barrier_failures > 1 &&
3501 == 0))) 3500 (flags & (BTRFS_BLOCK_GROUP_RAID1 |
3502 num_tolerated_disk_barrier_failures = 0; 3501 BTRFS_BLOCK_GROUP_RAID5 |
3503 else if (num_tolerated_disk_barrier_failures > 1) { 3502 BTRFS_BLOCK_GROUP_RAID10)))
3504 if (flags & (BTRFS_BLOCK_GROUP_RAID1 | 3503 num_tolerated_disk_barrier_failures = 1;
3505 BTRFS_BLOCK_GROUP_RAID5 | 3504 else if (num_tolerated_disk_barrier_failures > 2 &&
3506 BTRFS_BLOCK_GROUP_RAID10)) { 3505 (flags & BTRFS_BLOCK_GROUP_RAID6))
3507 num_tolerated_disk_barrier_failures = 1; 3506 num_tolerated_disk_barrier_failures = 2;
3508 } else if (flags &
3509 BTRFS_BLOCK_GROUP_RAID6) {
3510 num_tolerated_disk_barrier_failures = 2;
3511 }
3512 }
3513 }
3514 } 3507 }
3515 up_read(&sinfo->groups_sem); 3508 up_read(&sinfo->groups_sem);
3516 } 3509 }