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 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.