Re: [PATCH] Btrfs: check if there is enough space for balancing smarter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

too late, already pulled

On Wed, Aug 03, 2011 at 06:15:25PM +0800, Liu Bo wrote:
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -6682,6 +6682,10 @@ int btrfs_can_relocate(struct btrfs_root *root, u64 bytenr)
>  	struct btrfs_space_info *space_info;
>  	struct btrfs_fs_devices *fs_devices = root->fs_info->fs_devices;
>  	struct btrfs_device *device;
> +	u64 min_free;
        ^^^

> +	int index;
> +	int dev_nr = 0;
> +	int dev_min = 1;
>  	int full = 0;
>  	int ret = 0;
>  
> @@ -6728,9 +6733,29 @@ int btrfs_can_relocate(struct btrfs_root *root, u64 bytenr)
>  	if (full)
>  		goto out;
>  
> +	/*
> +	 * index:
> +	 *      0: raid10
> +	 *      1: raid1
> +	 *      2: dup
> +	 *      3: raid0
> +	 *      4: single
> +	 */
> +	index = get_block_group_index(block_group);
> +	if (index == 0) {
> +		dev_min = 4;
> +		min_free /= 2;
> +	} else if (index == 1) {
> +		dev_min = 2;
> +	} else if (index == 2) {
> +		min_free *= 2;
> +	} else if (index == 3) {
> +		dev_min = fs_devices->rw_devices;
> +		min_free /= dev_min;
                ^^^^^^^^^^^^^^^^^^^

64bit division will break 32bit builds, can you please convert it to
do_div ? the other is 'div-by-power-of-2' which will most probably be
converted to shifts.


david

> +	}
> +
>  	mutex_lock(&root->fs_info->chunk_mutex);
>  	list_for_each_entry(device, &fs_devices->alloc_list, dev_alloc_list) {
> -		u64 min_free = btrfs_block_group_used(&block_group->item);
>  		u64 dev_offset;
>  
>  		/*
> @@ -6741,7 +6766,11 @@ int btrfs_can_relocate(struct btrfs_root *root, u64 bytenr)
>  			ret = find_free_dev_extent(NULL, device, min_free,
>  						   &dev_offset, NULL);
>  			if (!ret)
> +				dev_nr++;
> +
> +			if (dev_nr >= dev_min)
>  				break;
> +
>  			ret = -1;
>  		}
>  	}
> -- 
> 1.6.5.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux