From: Christoph Hellwig <hch@lst.de>
To: Neil Brown <neilb@suse.de>
Cc: Shaohua Li <shli@fb.com>,
linux-raid@vger.kernel.org, Kernel-team@fb.com,
dan.j.williams@intel.com
Subject: Re: [PATCH 02/12] raid5-cache: free I/O units earlier
Date: Thu, 17 Sep 2015 03:50:45 +0200 [thread overview]
Message-ID: <20150917015045.GB22809@lst.de> (raw)
In-Reply-To: <87d1xk6ub4.fsf@notabene.neil.brown.name>
On Tue, Sep 15, 2015 at 09:00:31AM +0200, Neil Brown wrote:
> This only saves the allocation for two I/O units doesn't it? So not a
> big saveding, but still a good clean-up.
Yes.
> > r5l_do_reclaim as a side effect: previous if took the last unit which
> > isn't checkpointed into account.
>
> It took me a while to see that - so just to be sure I understand.
>
> There is a list of I/O units which have been completely written to the
> log and to the RAID. The last one of these is used as a marker for the
> start of the log, so it cannot be freed yet. All the earlier ones can
> be freed.
> The previous code added up the sizes of all of the units in this list,
> so it incorrectly included that last unit.
> Your new code calculates the difference between the start of the first
> unit and the start of the last unit, and so correctly excluded the last
> unit from the free space calculation.
>
> Did I get that right?
You did - or at very least your understanding matches my understanding of
the old code.
> > + md_wakeup_thread(log->rdev->mddev->thread);
> > + wait_event_lock_irq(log->iounit_wait,
> > + r5l_reclaimable_space(log) > reclaimable,
> > + log->io_list_lock);
> > }
>
> This is ringing warning bells.... I'm not sure it's wrong, but I'm not
> sure it is right.
> I feel that if the thread gets woken and finds that
> r5l_reclaimable_space is still too low, it should wake up the thread
> again, just in case.
> Also, it should test against reclaim_target, not reclaimable, shouldn't
> it?
>
> Instead of a wait_event_lock_irq inside a loop, could we just have a
> wake_event_*??
>
> wait_event_lock_irq_cmd(log->iounit_wait,
> r5l_reclaimable_space(log) >= reclaim_target ||
> (list_empty() && .... list_empty()),
> log->io_list_lock,
> md_wakeup_thread(log->rdev->mddev->thread));
>
> ??
>
>
> Otherwise I like it. Thanks.
I agree with a lot of your points, but I tried to match the old behavior
as close as possible. I can change it to something closer to your
suggestion if Shaohua agrees.
next prev parent reply other threads:[~2015-09-17 1:50 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-12 6:17 raid5-cache I/O path improvements V2 Christoph Hellwig
2015-09-12 6:17 ` [PATCH 01/12] raid5-cache: port to 4.3-rc Christoph Hellwig
2015-09-12 6:17 ` [PATCH 02/12] raid5-cache: free I/O units earlier Christoph Hellwig
2015-09-15 7:00 ` Neil Brown
2015-09-17 1:50 ` Christoph Hellwig [this message]
2015-09-15 8:07 ` Neil Brown
2015-09-17 1:48 ` Christoph Hellwig
2015-09-12 6:17 ` [PATCH 03/12] raid5-cache: rename flushed_ios to finished_ios Christoph Hellwig
2015-09-12 6:17 ` [PATCH 04/12] raid5-cache: factor out a helper to run all stripes for an I/O unit Christoph Hellwig
2015-09-12 6:17 ` [PATCH 05/12] raid5-cache: use FUA writes for the log Christoph Hellwig
2015-09-12 6:17 ` [PATCH 06/12] raid5-cache: clean up r5l_get_meta Christoph Hellwig
2015-09-12 6:17 ` [PATCH 07/12] raid5-cache: refactor bio allocation Christoph Hellwig
2015-09-12 6:17 ` [PATCH 08/12] raid5-cache: take rdev->data_offset into account early on Christoph Hellwig
2015-09-12 6:17 ` [PATCH 09/12] raid5-cache: inline r5l_alloc_io_unit into r5l_new_meta Christoph Hellwig
2015-09-12 6:17 ` [PATCH 10/12] raid5-cache: new helper: r5_reserve_log_entry Christoph Hellwig
2015-09-12 6:17 ` [PATCH 11/12] raid5-cache: small log->seq cleanup Christoph Hellwig
2015-09-12 6:17 ` [PATCH 12/12] raid5-cache: use bio chaining Christoph Hellwig
2015-09-14 19:11 ` raid5-cache I/O path improvements V2 Shaohua Li
2015-09-15 7:23 ` Neil Brown
2015-09-15 21:54 ` Shaohua Li
2015-09-17 1:53 ` Christoph Hellwig
2015-09-28 14:01 ` Christoph Hellwig
2015-09-30 5:39 ` Neil Brown
2015-09-30 15:00 ` Christoph Hellwig
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=20150917015045.GB22809@lst.de \
--to=hch@lst.de \
--cc=Kernel-team@fb.com \
--cc=dan.j.williams@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 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).