From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Andrew Morton <akpm@osdl.org>
Cc: andrea@suse.de, linux-kernel@vger.kernel.org, mason@suse.com
Subject: Re: [patch] fix the 2nd buffer race properly
Date: Thu, 28 Apr 2005 11:29:16 +1000 [thread overview]
Message-ID: <42703C6C.5090102@yahoo.com.au> (raw)
In-Reply-To: <20050427180012.26b75e0f.akpm@osdl.org>
Andrew Morton wrote:
> Nick Piggin <nickpiggin@yahoo.com.au> wrote:
>> > That's all a bit too complex. How's about this instead?
>> >
>>
>> Well you really don't need to hold the page locked for that long.
>
>
> Is a rare case, so there's no perfomance issue here.
>
Well it is for buffered writes, right? And in general it will be OK,
but if you run into queue/memory congestion when submitting the IO,
it will be locked for a lot longer than required.
> I do prefer the idea of simply keeping other threads of control out of the
> page until this thread has finished playing with its buffers.
>
That's exactly what my patch does too!
> (The buffer-ring walk we have in there is racy against page reclaim, too.
> If only the first buffer is dirty, we inspect the other buffers after
> PageWriteback has potentially cleared.)
>
Well we do have a reference on the buffers, so in this particular case
perhaps not. But we have no mutual exclusion on the page or buffers
so I agree it could be racy against a lot of things.
>
>> block_read_full_page, nobh_prepare_write both use the same sort of
>> array of buffer heads logic - I think it makes sense not to touch
>> any buffers after submitting them all for IO...?
>
>
> Well. Most code in there uses the ->b_this_page walk.
>
block_read_full_page does the walk in order to gather up the buffers.
They then get submitted for IO via the buffer head array walk.
I prefer my patch. I don't think it is particularly complex.
--
SUSE Labs, Novell Inc.
prev parent reply other threads:[~2005-04-28 1:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-27 13:15 [patch] fix the 2nd buffer race properly Nick Piggin
2005-04-27 13:20 ` Nick Piggin
2005-04-27 17:56 ` Andrew Morton
2005-04-28 0:08 ` Nick Piggin
2005-04-28 1:00 ` Andrew Morton
2005-04-28 1:29 ` Nick Piggin [this message]
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=42703C6C.5090102@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=akpm@osdl.org \
--cc=andrea@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mason@suse.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.