Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+33 −40
Original line number Diff line number Diff line
@@ -3449,13 +3449,12 @@ int btrfs_calc_num_tolerated_disk_barrier_failures(
		       BTRFS_BLOCK_GROUP_SYSTEM,
		       BTRFS_BLOCK_GROUP_METADATA,
		       BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_METADATA};
	int num_types = 4;
	int i;
	int c;
	int num_tolerated_disk_barrier_failures =
		(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;

		sinfo = NULL;
@@ -3473,13 +3472,14 @@ int btrfs_calc_num_tolerated_disk_barrier_failures(

		down_read(&sinfo->groups_sem);
		for (c = 0; c < BTRFS_NR_RAID_TYPES; c++) {
			if (!list_empty(&sinfo->block_groups[c])) {
			u64 flags;

				btrfs_get_block_group_info(
					&sinfo->block_groups[c], &space);
				if (space.total_bytes == 0 ||
				    space.used_bytes == 0)
			if (list_empty(&sinfo->block_groups[c]))
				continue;

			btrfs_get_block_group_info(&sinfo->block_groups[c],
						   &space);
			if (space.total_bytes == 0 || space.used_bytes == 0)
				continue;
			flags = space.flags;
			/*
@@ -3489,29 +3489,22 @@ int btrfs_calc_num_tolerated_disk_barrier_failures(
			 * 1: if RAID5 is configured, or if RAID1 or
			 *    RAID10 is configured and only two mirrors
			 *    are used, else
				 * 2: if RAID6 is configured, else
				 * num_mirrors - 1: if RAID1 or RAID10 is
				 *                  configured and more than
				 *                  2 mirrors are used.
			 * 2: if RAID6 is configured
			 */
			if (num_tolerated_disk_barrier_failures > 0 &&
			    ((flags & (BTRFS_BLOCK_GROUP_DUP |
				       BTRFS_BLOCK_GROUP_RAID0)) ||
				     ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK)
				      == 0)))
			     ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0)))
				num_tolerated_disk_barrier_failures = 0;
				else if (num_tolerated_disk_barrier_failures > 1) {
					if (flags & (BTRFS_BLOCK_GROUP_RAID1 |
			else if (num_tolerated_disk_barrier_failures > 1 &&
				 (flags & (BTRFS_BLOCK_GROUP_RAID1 |
					   BTRFS_BLOCK_GROUP_RAID5 |
					    BTRFS_BLOCK_GROUP_RAID10)) {
					   BTRFS_BLOCK_GROUP_RAID10)))
				num_tolerated_disk_barrier_failures = 1;
					} else if (flags &
						   BTRFS_BLOCK_GROUP_RAID6) {
			else if (num_tolerated_disk_barrier_failures > 2 &&
				 (flags & BTRFS_BLOCK_GROUP_RAID6))
				num_tolerated_disk_barrier_failures = 2;
		}
				}
			}
		}
		up_read(&sinfo->groups_sem);
	}