From: Richard Weinberger <richard@nod.at>
To: dedekind1@gmail.com, Dongsheng Yang <yangds.fnst@cn.fujitsu.com>,
linux-mtd@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 2/2] ubifs: Allow O_DIRECT
Date: Thu, 20 Aug 2015 13:40:02 +0200 [thread overview]
Message-ID: <55D5BC92.8050903@nod.at> (raw)
In-Reply-To: <1440070300.31419.202.camel@gmail.com>
Artem,
Am 20.08.2015 um 13:31 schrieb Artem Bityutskiy:
> On Thu, 2015-08-20 at 11:00 +0800, Dongsheng Yang wrote:
>> On 08/20/2015 04:35 AM, Richard Weinberger wrote:
>>> Currently UBIFS does not support direct IO, but some applications
>>> blindly use the O_DIRECT flag.
>>> Instead of failing upon open() we can do better and fall back
>>> to buffered IO.
>>
>> Hmmmm, to be honest, I am not sure we have to do it as Dave
>> suggested. I think that's just a work-around for current fstests.
>>
>> IMHO, perform a buffered IO when user request direct IO without
>> any warning sounds not a good idea. Maybe adding a warning would
>> make it better.
>>
>> I think we need more discussion about AIO&DIO in ubifs, and actually
>> I have a plan for it. But I have not listed the all cons and pros of
>> it so far.
>>
>> Artem, what's your opinion?
>
> Yes, this is my worry too.
>
> Basically, we need to see what is the "common practice" here, and
> follow it. This requires a small research. What would be the most
> popular Linux FS which does not support direct I/O? Can we check what
> it does?
All popular filesystems seem to support direct IO.
That's the problem, application do not expect O_DIRECT to fail.
My intention was to do it like exofs:
commit d83c7eb65d9bf0a57e7d5ed87a5bd8e5ea6b1fb6
Author: Boaz Harrosh <bharrosh@panasas.com>
Date: Mon Jan 13 23:45:43 2014 +0200
exofs: Allow O_DIRECT open
With this minimal do nothing patch an application can open O_DIRECT
and then actually do buffered sync IO instead. But the aio API is
supported which is a good thing
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c
index a52a5d2..7e7ba9a 100644
--- a/fs/exofs/inode.c
+++ b/fs/exofs/inode.c
@@ -961,6 +961,14 @@ static void exofs_invalidatepage(struct page *page, unsigned int offset,
WARN_ON(1);
}
+
+ /* TODO: Should be easy enough to do proprly */
+static ssize_t exofs_direct_IO(int rw, struct kiocb *iocb,
+ const struct iovec *iov, loff_t offset, unsigned long nr_segs)
+{
+ return 0;
+}
+
const struct address_space_operations exofs_aops = {
.readpage = exofs_readpage,
.readpages = exofs_readpages,
@@ -974,7 +982,7 @@ const struct address_space_operations exofs_aops = {
/* Not implemented Yet */
.bmap = NULL, /* TODO: use osd's OSD_ACT_READ_MAP */
- .direct_IO = NULL, /* TODO: Should be trivial to do */
+ .direct_IO = exofs_direct_IO,
/* With these NULL has special meaning or default is not exported */
.get_xip_mem = NULL,
Thanks,
//richard
next prev parent reply other threads:[~2015-08-20 11:40 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 [this message]
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
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=55D5BC92.8050903@nod.at \
--to=richard@nod.at \
--cc=dedekind1@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--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 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.