From: Miklos Szeredi <miklos@szeredi.hu>
To: linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Miklos Szeredi <mszeredi@redhat.com>
Subject: Re: [fuse] Effects of opening with O_DIRECT
Date: Mon, 2 Mar 2020 10:47:28 +0100 [thread overview]
Message-ID: <CAJfpegupesjdOe=+rrjPNmsCg_6n-67HrS4w2Pm=w4ZrQOdj1Q@mail.gmail.com> (raw)
In-Reply-To: <8736as2ovb.fsf@vostro.rath.org>
On Sun, Mar 1, 2020 at 2:20 PM Nikolaus Rath <Nikolaus@rath.org> wrote:
>
> Hi,
>
> What happens if a file (on a FUSE mountpoint) is opened without
> O_DIRECT, has some data in the page cache, and is then opened a second
> with O_DIRECT?
>
> Will reads with O_DIRECT come from the page cache (if there's a hit), or
> be passed through to the fuse daemon?
O_DIRECT read will try first directly, and fall back to the cache on
short or zero return count.
>
> What happens to writes (with and without O_DIRECT, and assuming that
> writeback caching is active)? It seems to me that in order to keep
> consistent, either caching has to be disabled for both file descriptors
> or enabled for both...
This is not a fuse specific problem. The kernel will try to keep
things consistent by flushing dirty data before an O_DIRECT read.
However this mode of operation is not recommended. See open(2)
manpage:
Applications should avoid mixing 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. Likewise, applications should avoid mixing mmap(2)
of files with direct I/O to the same files.
[...]
In summary, O_DIRECT is a potentially powerful tool that should be used
with caution. It is recommended that applications treat use of
O_DIRECT as a performance option which is disabled by default.
"The thing that has always disturbed me about O_DIRECT is that
the whole interface is just stupid, and was probably designed by
a deranged monkey on some serious mind-controlling sub‐
stances."—Linus
Thanks,
Miklos
next prev parent reply other threads:[~2020-03-02 9:47 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-01 13:20 [fuse] Effects of opening with O_DIRECT Nikolaus Rath
2020-03-02 9:47 ` Miklos Szeredi [this message]
2020-03-02 20:28 ` Nikolaus Rath
2020-03-10 13:16 ` Miklos Szeredi
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='CAJfpegupesjdOe=+rrjPNmsCg_6n-67HrS4w2Pm=w4ZrQOdj1Q@mail.gmail.com' \
--to=miklos@szeredi.hu \
--cc=linux-fsdevel@vger.kernel.org \
--cc=mszeredi@redhat.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.