From: liubo <liubo2009@cn.fujitsu.com>
To: David Sterba <dave@jikos.cz>
Cc: linux-btrfs@vger.kernel.org, josef@redhat.com, chris.mason@oracle.com
Subject: Re: [PATCH] Btrfs: check if there is enough space for balancing smarter
Date: Fri, 19 Aug 2011 11:07:36 +0800 [thread overview]
Message-ID: <4E4DD378.1030404@cn.fujitsu.com> (raw)
In-Reply-To: <20110819024615.GH20461@twin.jikos.cz>
On 08/19/2011 10:46 AM, David Sterba wrote:
> 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.
>
This is my fault, sorry. Will fix it soon.
thanks,
liubo
>
> 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@vger.kernel.org
>> 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@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
prev parent reply other threads:[~2011-08-19 3:07 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-03 10:15 [PATCH] Btrfs: check if there is enough space for balancing smarter Liu Bo
2011-08-19 2:46 ` David Sterba
2011-08-19 3:07 ` liubo [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E4DD378.1030404@cn.fujitsu.com \
--to=liubo2009@cn.fujitsu.com \
--cc=chris.mason@oracle.com \
--cc=dave@jikos.cz \
--cc=josef@redhat.com \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).