From: Ilya Dryomov <idryomov@gmail.com>
To: Miao Xie <miaox@cn.fujitsu.com>
Cc: Linux Btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH V4 1/2] Btrfs: cleanup duplicated division functions
Date: Thu, 27 Sep 2012 19:56:24 +0300 [thread overview]
Message-ID: <20120927165624.GA2024@zambezi.lan> (raw)
In-Reply-To: <5064284E.9020504@cn.fujitsu.com>
Hi Miao,
You haven't addressed any of my concerns with v3.
On Thu, Sep 27, 2012 at 06:19:58PM +0800, Miao Xie wrote:
(snipped)
> the parameters are right. So besides the code cleanup, this patch also
> add a check for the usage of the space balance, it is the only place that
> we need add check to make sure the parameters of div_factor are right till
> now. Besides that, the old kernel may hold the wrong usage value, so we
> must rectify it.
Cleaning up/unifying duplicated functions and changing the existing
logic are two very different things. If you, in the course of writing
this patch, became unhappy with the way balancing ioctl deals with
"invalid" input, please send a separate patch.
Before your patch, volumes.c had its own copy of div_factor_fine():
static u64 div_factor_fine(u64 num, int factor)
{
if (factor <= 0)
return 0;
if (factor >= 100)
return num;
num *= factor;
do_div(num, 100);
return num;
}
which was called from chunk_usage_filter() on unvalidated user input.
As far as the cleanup part of your patch goes, you've dropped
factor <= 0 / factor >= 100 logic, merged volumes.c's copy with
extent-tree.c's copy and renamed div_factor_fine() to div_factor(). To
make chunk_usage_filter() happy again, it's enough to move the dropped
logic directly to the call site:
static int chunk_usage_filter(struct btrfs_fs_info *fs_info, u64 chunk_offset,
struct btrfs_balance_args *bargs)
{
...
- user_thresh = div_factor_fine(cache->key.offset, bargs->usage);
+ if (bargs->usage == 0)
+ user_thresh = 0;
+ else if (bargs->usage >= 100)
+ user_thresh = cache->key.offset;
+ else
+ user_thresh = div_factor(cache->key.offset, bargs->usage);
...
}
So I would suggest you drop all hunks related to changing the way
balancing ioctl works and make the above change to chunk_usage_filter()
instead. Once again, if you are unhappy with usage filter argument
handling, send a separate patch.
Thanks,
Ilya
next prev parent reply other threads:[~2012-09-27 16:56 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-13 10:51 [PATCH 1/2] Btrfs: cleanup duplicated division functions Miao Xie
2012-09-14 13:54 ` David Sterba
2012-09-17 2:21 ` Miao Xie
2012-09-17 12:07 ` Ilya Dryomov
2012-09-17 16:31 ` David Sterba
2012-09-18 3:53 ` Miao Xie
2012-09-20 2:57 ` [PATCH V2 " Miao Xie
2012-09-20 13:28 ` David Sterba
2012-09-21 8:26 ` Miao Xie
2012-09-21 9:07 ` [PATCH V3 " Miao Xie
2012-09-21 15:24 ` David Sterba
2012-09-23 9:54 ` Miao Xie
2012-09-24 16:33 ` David Sterba
2012-09-23 11:49 ` Ilya Dryomov
2012-09-24 2:05 ` Miao Xie
2012-09-24 16:47 ` David Sterba
2012-09-24 18:42 ` Ilya Dryomov
2012-09-25 10:24 ` Miao Xie
2012-09-27 10:15 ` Miao Xie
2012-09-27 10:19 ` [PATCH V4 " Miao Xie
2012-09-27 16:56 ` Ilya Dryomov [this message]
2012-09-28 1:30 ` Miao Xie
2012-09-28 1:49 ` [PATCH V5 " Miao Xie
2012-09-28 10:09 ` David Sterba
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=20120927165624.GA2024@zambezi.lan \
--to=idryomov@gmail.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=miaox@cn.fujitsu.com \
/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).