From: Jeff Moyer <jmoyer@redhat.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Brian Norris <computersforpeace@gmail.com>,
Artem Bityutskiy <dedekind1@gmail.com>,
Richard Weinberger <richard@nod.at>,
Dongsheng Yang <yangds.fnst@cn.fujitsu.com>,
linux-mtd@lists.infradead.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] ubifs: Allow O_DIRECT
Date: Tue, 25 Aug 2015 10:00:58 -0400 [thread overview]
Message-ID: <x49wpwjbh7p.fsf@segfault.boston.devel.redhat.com> (raw)
In-Reply-To: <20150824234611.GV3902@dastard> (Dave Chinner's message of "Tue, 25 Aug 2015 09:46:11 +1000")
Dave Chinner <david@fromorbit.com> writes:
> On Mon, Aug 24, 2015 at 01:19:24PM -0400, Jeff Moyer wrote:
>> Brian Norris <computersforpeace@gmail.com> writes:
>>
>> > On Mon, Aug 24, 2015 at 10:13:25AM +0300, Artem Bityutskiy wrote:
>> >> Now, some user-space fails when direct I/O is not supported.
>> >
>> > I think the whole argument rested on what it means when "some user space
>> > fails"; apparently that "user space" is just a test suite (which
>> > can/should be fixed).
>>
>> Even if it wasn't a test suite it should still fail. Either the fs
>> supports O_DIRECT or it doesn't. Right now, the only way an application
>> can figure this out is to try an open and see if it fails. Don't break
>> that.
>
> Who cares how a filesystem implements O_DIRECT as long as it does
> not corrupt data? ext3 fell back to buffered IO in many situations,
> yet the only complaints about that were performance. IOWs, it's long been
> true that if the user cares about O_DIRECT *performance* then they
> have to be careful about their choice of filesystem.
> But if it's only 5 lines of code per filesystem to support O_DIRECT
> *correctly* via buffered IO, then exactly why should userspace have
> to jump through hoops to explicitly handle open(O_DIRECT) failure?
> Especially when you consider that all they can do is fall back to
> buffered IO themselves....
I had written counterpoints for all of this, but I thought better of
it. Old versions of the kernel simply ignore O_DIRECT, so clearly
there's precedent.
I do think we should at least document what file systems appear to be
doing. Here's a man page patch for open (generated with extra context
for easier reading). Let me know what you think.
Cheers,
Jeff
p.s. I still think it's the wrong way to go, as it makes it harder for
an admin to determine what is actually going on.
diff --git a/man2/open.2 b/man2/open.2
index 06c0a29..acc438b 100644
--- a/man2/open.2
+++ b/man2/open.2
@@ -1471,17 +1471,18 @@ a flag of the same name, but without alignment restrictions.
.LP
.B O_DIRECT
support was added under Linux in kernel version 2.4.10.
Older Linux kernels simply ignore this flag.
Some filesystems may not implement the flag and
.BR open ()
will fail with
.B EINVAL
-if it is used.
+if it is used. Other file systems may implement O_DIRECT via
+buffered I/O, which is essentially the same as ignoring the flag.
.LP
Applications should avoid mixing
.B O_DIRECT
and normal I/O to the same file,
and especially to overlapping byte regions in the same file.
Even when the filesystem correctly handles the coherency issues in
this situation, overall I/O throughput is likely to be slower than
using either mode alone.
next prev parent reply other threads:[~2015-08-25 14:00 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-19 20:35 [PATCH 1/2] ubifs: Remove dead xattr code Richard Weinberger
2015-08-19 20:35 ` [PATCH 2/2] ubifs: Allow O_DIRECT Richard Weinberger
2015-08-20 3:00 ` Dongsheng Yang
2015-08-20 6:42 ` Richard Weinberger
2015-08-20 7:14 ` Dongsheng Yang
2015-08-20 11:31 ` Artem Bityutskiy
2015-08-20 11:40 ` Richard Weinberger
2015-08-20 12:34 ` Artem Bityutskiy
2015-08-24 7:18 ` Artem Bityutskiy
2015-08-24 7:17 ` Dongsheng Yang
2015-08-24 7:20 ` Dongsheng Yang
2015-08-24 8:06 ` Christoph Hellwig
2015-08-20 20:49 ` Brian Norris
2015-08-24 7:13 ` Artem Bityutskiy
2015-08-24 7:53 ` Christoph Hellwig
2015-08-24 8:02 ` Artem Bityutskiy
2015-08-24 8:03 ` Christoph Hellwig
2015-08-24 8:00 ` Dongsheng Yang
2015-08-24 9:34 ` Artem Bityutskiy
2015-08-24 9:35 ` Richard Weinberger
2015-08-24 16:18 ` Brian Norris
2015-08-24 17:19 ` Jeff Moyer
2015-08-24 23:46 ` Dave Chinner
2015-08-25 1:28 ` Chris Mason
2015-08-25 15:48 ` Artem Bityutskiy
2015-08-25 14:00 ` Jeff Moyer [this message]
2015-08-25 14:13 ` Chris Mason
2015-08-25 14:18 ` Jeff Moyer
2015-08-20 11:29 ` Artem Bityutskiy
2015-08-20 2:48 ` [PATCH 1/2] ubifs: Remove dead xattr code Dongsheng Yang
2015-08-20 6:42 ` Artem Bityutskiy
2015-08-20 6:45 ` Richard Weinberger
2015-08-26 14:15 ` Josh Cartwright
2015-08-27 1:00 ` Dongsheng Yang
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=x49wpwjbh7p.fsf@segfault.boston.devel.redhat.com \
--to=jmoyer@redhat.com \
--cc=computersforpeace@gmail.com \
--cc=david@fromorbit.com \
--cc=dedekind1@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=richard@nod.at \
--cc=yangds.fnst@cn.fujitsu.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).