From: Jens Axboe <axboe@suse.de>
To: Bryan Henderson <hbryan@us.ibm.com>
Cc: Jamie Lokier <jamie@shareable.org>,
linux-fsdevel@vger.kernel.org,
Werner Almesberger <wa@almesberger.net>
Subject: Re: barriers vs. reads
Date: Tue, 22 Jun 2004 22:53:10 +0200 [thread overview]
Message-ID: <20040622205309.GC3200@suse.de> (raw)
In-Reply-To: <OF322BE25B.48C50AA5-ON88256EBB.005D952A-88256EBB.005E7F93@us.ibm.com>
On Tue, Jun 22 2004, Bryan Henderson wrote:
> >> 2. Other than O_DIRECT, can the I/O subsystem issue reads that
> >> overlap writes in flight? Surely that never occurs?
> >
> >No, it can only happen for reads that don't go through the page cache.
> >
> >> If it never occurs, then reads can be safely moved before write
> >> barriers without looking at block numbers.
> >
> >It can happen with direct io of any sort, the solution has to take this
> >into account. That's why we currently have handling for rbtree aliases
> >as well.
>
> Are you saying that if Sector A contains "foo", and I do a
> __make_request(Write, Sector A, "bar") and then a __make_request(Read,
> Sector A), the read might read "foo"? Assuming no barriers.
Well no, even for direct io we maintain ordering if you hit an alias.
See cfq_add_crq_rb() in cfq-iosched.c for example. AS handles it
differently, but result is the same. At least the io is issued in that
order, so if the underlying storage hardware doesn't mess it up, there
is no problem.
If you have overlapping requests, then you could get into serious
trouble. You should not do that.
> As I understand it, the topic of discussion is completely outside the
> realm of the page cache and open() flags -- it's all down below that.
The page cache will make sure don't see "foo", since you'll wait for the
page to unlocked at the end of io. The above description is only valid
for direct io, this is where the alias handling works.
--
Jens Axboe
next prev parent reply other threads:[~2004-06-22 20:53 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-22 3:53 barriers vs. reads Werner Almesberger
2004-06-22 7:39 ` Jens Axboe
2004-06-22 7:50 ` Werner Almesberger
2004-06-22 7:55 ` Jens Axboe
2004-06-22 8:34 ` Werner Almesberger
2004-06-22 10:08 ` Jens Axboe
2004-06-22 11:28 ` Jamie Lokier
2004-06-22 11:32 ` Jens Axboe
2004-06-22 17:12 ` Bryan Henderson
2004-06-22 20:53 ` Jens Axboe [this message]
2004-06-23 16:41 ` Bryan Henderson
2004-06-23 16:52 ` Jens Axboe
2004-06-23 16:53 ` Jamie Lokier
2004-06-23 21:08 ` Bryan Henderson
2004-06-23 23:23 ` Werner Almesberger
2004-06-24 13:43 ` Jamie Lokier
2004-06-24 14:32 ` Christoph Hellwig
2004-06-24 17:05 ` Werner Almesberger
2004-06-22 18:53 ` Werner Almesberger
2004-06-22 19:57 ` Jamie Lokier
2004-06-22 23:13 ` Werner Almesberger
2004-06-22 20:57 ` Jens Axboe
2004-06-22 23:10 ` Werner Almesberger
2004-06-23 0:14 ` Jamie Lokier
2004-06-23 6:27 ` Jens Axboe
2004-06-22 18:45 ` Werner Almesberger
2004-06-22 19:07 ` Guy
-- strict thread matches above, loose matches on Subject: below --
2004-06-24 0:48 Werner Almesberger
2004-06-24 3:39 ` Werner Almesberger
2004-06-24 8:00 ` Herbert Poetzl
2004-06-24 12:16 ` Werner Almesberger
2004-06-24 13:36 ` Jamie Lokier
2004-06-24 17:02 ` Werner Almesberger
2004-06-24 16:39 ` Steve Lord
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=20040622205309.GC3200@suse.de \
--to=axboe@suse.de \
--cc=hbryan@us.ibm.com \
--cc=jamie@shareable.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=wa@almesberger.net \
/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.