All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Yang <richard.weiyang@gmail.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Wei Yang <richard.weiyang@gmail.com>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/9] XArray: simplify the calculation of shift
Date: Mon, 30 Mar 2020 14:07:12 +0000	[thread overview]
Message-ID: <20200330140712.sloduuoqc5jid64m@master> (raw)
In-Reply-To: <20200330132028.GA22483@bombadil.infradead.org>

On Mon, Mar 30, 2020 at 06:20:28AM -0700, Matthew Wilcox wrote:
>On Mon, Mar 30, 2020 at 12:36:36PM +0000, Wei Yang wrote:
>> When head is NULL, shift is calculated from max. Currently we use a loop
>> to detect how many XA_CHUNK_SHIFT is need to cover max.
>> 
>> To achieve this, we can get number of bits max expands and round it up
>> to XA_CHUNK_SHIFT.
>> 
>> Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
>> ---
>>  lib/xarray.c | 6 +-----
>>  1 file changed, 1 insertion(+), 5 deletions(-)
>> 
>> diff --git a/lib/xarray.c b/lib/xarray.c
>> index 1d9fab7db8da..6454cf3f5b4c 100644
>> --- a/lib/xarray.c
>> +++ b/lib/xarray.c
>> @@ -560,11 +560,7 @@ static int xas_expand(struct xa_state *xas, void *head)
>>  	unsigned long max = xas_max(xas);
>>  
>>  	if (!head) {
>> -		if (max == 0)
>> -			return 0;
>> -		while ((max >> shift) >= XA_CHUNK_SIZE)
>> -			shift += XA_CHUNK_SHIFT;
>> -		return shift + XA_CHUNK_SHIFT;
>> +		return roundup(fls_long(max), XA_CHUNK_SHIFT);
>
>This doesn't give the same number.  Did you test this?
>
>Consider max = 64.  The current code does:
>
>shift = 0;
>64 >> 0 >= 64 (true)
>shift += 6;
>64 >> 6 < 64
>return 12
>
>Your replacement does:
>
>fls_long(64) = 6

fls_long(64) = 7

>roundup(6, 6) is 6.
>
>Please be more careful.

-- 
Wei Yang
Help you, Help me

  reply	other threads:[~2020-03-30 14:07 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-30 12:36 [PATCH 0/9] XArray: several cleanups Wei Yang
2020-03-30 12:36 ` [PATCH 1/9] XArray: fix comment on Zero/Retry entry Wei Yang
2020-03-30 12:46   ` Matthew Wilcox
2020-03-30 13:42     ` Wei Yang
2020-03-30 12:36 ` [PATCH 2/9] XArray: simplify the calculation of shift Wei Yang
2020-03-30 13:20   ` Matthew Wilcox
2020-03-30 14:07     ` Wei Yang [this message]
2020-03-30 12:36 ` [PATCH 3/9] XArray: handle a NULL head by itself Wei Yang
2020-03-30 12:36 ` [PATCH 4/9] XArray: don't expect to have more nr_values than count Wei Yang
2020-03-30 12:36 ` [PATCH 5/9] XArray: entry in last level is not expected to be a node Wei Yang
2020-03-30 12:48   ` Matthew Wilcox
2020-03-30 14:15     ` Wei Yang
2020-03-30 14:28       ` Matthew Wilcox
2020-03-30 22:10         ` Wei Yang
2020-03-31 13:42         ` Wei Yang
2020-03-31 16:42           ` Matthew Wilcox
2020-03-31 22:04             ` Wei Yang
2020-03-31 23:59               ` Matthew Wilcox
2020-04-01 22:10                 ` Wei Yang
2020-04-01 22:20                   ` Matthew Wilcox
2020-04-02 12:36                     ` Wei Yang
2020-04-03 22:39                     ` Wei Yang
2020-04-04 15:37                       ` Matthew Wilcox
2020-04-05 11:07                     ` Wei Yang
2020-04-05 21:56                       ` Matthew Wilcox
2020-04-06  1:14                         ` Wei Yang
2020-04-06  1:24     ` Wei Yang
2020-04-11 13:56       ` Wei Yang
2020-04-28 21:24     ` Wei Yang
2020-03-30 12:36 ` [PATCH 6/9] XArray: internal node is a xa_node when it is bigger than XA_ZERO_ENTRY Wei Yang
2020-03-30 12:50   ` Matthew Wilcox
2020-03-30 13:45     ` Wei Yang
2020-03-30 13:49       ` Matthew Wilcox
2020-03-30 14:13         ` Wei Yang
2020-03-30 14:27           ` Matthew Wilcox
2020-03-30 22:20             ` Wei Yang
2020-03-31  0:06               ` Matthew Wilcox
2020-03-31 13:40                 ` Wei Yang
2020-03-30 12:36 ` [PATCH 7/9] XArray: the NULL xa_node condition is handled in xas_top Wei Yang
2020-03-30 12:36 ` [PATCH 8/9] XArray: take xas_error() handling for clearer logic Wei Yang
2020-03-30 12:36 ` [PATCH 9/9] XArray: adjust xa_offset till it gets the correct node Wei Yang

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=20200330140712.sloduuoqc5jid64m@master \
    --to=richard.weiyang@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=willy@infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.