linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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 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).