From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Shaohua Li <shli@fb.com>
Cc: linux-raid@vger.kernel.org, neilb@suse.de
Subject: Re: [PATCH 4/4] raid5: fix wakeup condition
Date: Fri, 29 May 2015 13:42:05 +0800 [thread overview]
Message-ID: <20150529054205.GA10378@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <de048e4f0889e59ffb452f8b5f704bd888fcc1c1.1432859513.git.shli@fb.com>
Hi Shaohua,
On Thu, May 28, 2015 at 05:33:48PM -0700, Shaohua Li wrote:
> Since we have several stripe hash list, the conf->active_stripes doesn't
> determine if there is free stripe in a specific hash list, so delete the
I happened to have considered something similar but with slight different
before. The stuff I came up with is to make active_stripes per stripe hash
as well, with which your above concerns could be eliminated.
I even wrote the code, and it became a bit uglier than I thought, what's
more, I see no obvious performance benifit from it. I then gave it up
and didn't sent it out for bothering you guys.
Well, I wrote that code before I came up with this lock contention fix[0],
it might be a different story if I wrote such code based on the fix. If you
are interested, I guess I could cook it up again and do some tests.
[0]: http://git.neil.brown.name/?p=md.git;a=commit;h=970e1a16559e1865b429e0ec408c9a06f2f83795
BTW, the reason I want to make active_stripes per stripe hash is to
keep the semantics of holding on to wake up processes before we get
1/4 stripes available, which, IMO, is for performance consideration.
And to be honest, I don't have too much clue how the performance will
behave differently in such two cases. I'm gonna to do some test to
figure it out, if you think that's necessary.
--yliu
> check. After this, the R5_INACTIVE_BLOCKED check is inappropriate. There
> is no point not to wakeup a task if there is free stripe.
>
> Signed-off-by: Shaohua Li <shli@fb.com>
> ---
> drivers/md/raid5.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
> index 67626f3..4b5a03c 100644
> --- a/drivers/md/raid5.c
> +++ b/drivers/md/raid5.c
> @@ -687,11 +687,7 @@ get_active_stripe(struct r5conf *conf, sector_t sector,
> &conf->cache_state);
> wait_event_lock_irq(
> conf->wait_for_stripe,
> - !list_empty(conf->inactive_list + hash) &&
> - (atomic_read(&conf->active_stripes)
> - < (conf->max_nr_stripes * 3 / 4)
> - || !test_bit(R5_INACTIVE_BLOCKED,
> - &conf->cache_state)),
> + !list_empty(conf->inactive_list + hash),
> *(conf->hash_locks + hash));
> clear_bit(R5_INACTIVE_BLOCKED,
> &conf->cache_state);
> --
> 1.8.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-05-29 5:42 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-29 0:33 [PATCH 1/4] raid5: wakeup raid5d when R5_ALLOC_MORE is set Shaohua Li
2015-05-29 0:33 ` [PATCH 2/4] raid5: grown at least NR_STRIPE_HASH_LOCKS stripes Shaohua Li
2015-05-29 5:07 ` NeilBrown
2015-05-29 0:33 ` [PATCH 3/4] raid5: ignore released_stripes check Shaohua Li
2015-05-29 5:16 ` NeilBrown
2015-05-29 0:33 ` [PATCH 4/4] raid5: fix wakeup condition Shaohua Li
2015-05-29 5:23 ` NeilBrown
2015-05-29 5:42 ` Shaohua Li
2015-05-29 5:42 ` Yuanhan Liu [this message]
2015-05-29 5:02 ` [PATCH 1/4] raid5: wakeup raid5d when R5_ALLOC_MORE is set NeilBrown
2015-05-29 5:33 ` Shaohua Li
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=20150529054205.GA10378@yliu-dev.sh.intel.com \
--to=yuanhan.liu@linux.intel.com \
--cc=linux-raid@vger.kernel.org \
--cc=neilb@suse.de \
--cc=shli@fb.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 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.