From: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
To: "'Hugh Dickins'" <hugh@veritas.com>,
"Hua Zhong" <hzhong@gmail.com>,
"'Nick Piggin'" <nickpiggin@yahoo.com.au>
Cc: "Christoph Hellwig" <hch@infradead.com>,
"'Bill Davidsen'" <davidsen@tmr.com>,
"'Linux-kernel'" <linux-kernel@vger.kernel.org>
Subject: RE: open(O_DIRECT) on a tmpfs?
Date: Thu, 4 Jan 2007 22:57:49 -0800 [thread overview]
Message-ID: <000001c73096$d0e7d370$ab80030a@amr.corp.intel.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0701041911470.27405@blonde.wat.veritas.com>
Hugh Dickins wrote on Thursday, January 04, 2007 11:14 AM
> On Thu, 4 Jan 2007, Hua Zhong wrote:
> > So I'd argue that it makes more sense to support O_DIRECT
> > on tmpfs as the memory IS the backing store.
>
> A few more voices in favour and I'll be persuaded. Perhaps I'm
> out of date: when O_DIRECT came in, just a few filesystems supported
> it, and it was perfectly normal for open O_DIRECT to be failed; but
> I wouldn't want tmpfs to stand out now as a lone obstacle.
Maybe a bit hackish, all we need is to have an empty .direct_IO method
in shmem_aops to make __dentry_open() to pass the O_DIRECT check. The
following patch adds 40 bytes to kernel text on x86-64. An even more
hackish but zero cost route is to make .direct_IO variable non-zero via
a cast of -1 or some sort (that is probably ugly as hell).
diff -Nurp linus-2.6.git/mm/shmem.c linus-2.6.git.ken/mm/shmem.c
--- linus-2.6.git/mm/shmem.c 2006-12-27 19:06:11.000000000 -0800
+++ linus-2.6.git.ken/mm/shmem.c 2007-01-04 21:03:14.000000000 -0800
@@ -2314,10 +2314,18 @@ static void destroy_inodecache(void)
kmem_cache_destroy(shmem_inode_cachep);
}
+ssize_t shmem_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
+ loff_t offset, unsigned long nr_segs)
+{
+ /* dummy direct_IO function. Not to be executed */
+ BUG();
+}
+
static const struct address_space_operations shmem_aops = {
.writepage = shmem_writepage,
.set_page_dirty = __set_page_dirty_nobuffers,
#ifdef CONFIG_TMPFS
+ .direct_IO = shmem_direct_IO,
.prepare_write = shmem_prepare_write,
.commit_write = simple_commit_write,
#endif
next prev parent reply other threads:[~2007-01-05 6:57 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-04 11:52 Michael Tokarev
2007-01-04 13:08 ` Hugh Dickins
2007-01-04 16:19 ` Bill Davidsen
2007-01-04 17:09 ` Hugh Dickins
2007-01-04 17:54 ` Peter Staubach
2007-01-04 18:11 ` Bill Davidsen
2007-01-04 18:41 ` Hua Zhong
2007-01-04 19:14 ` Hugh Dickins
2007-01-04 19:35 ` Mark Lord
2007-01-05 6:57 ` Chen, Kenneth W [this message]
2007-01-05 14:38 ` Helge Hafting
2007-01-05 14:58 ` Jesper Juhl
2007-01-05 14:59 ` Jesper Juhl
2007-01-04 22:17 ` Denis Vlasenko
2007-01-05 5:30 ` Nick Piggin
2007-01-05 16:20 ` Bill Davidsen
2007-01-06 0:30 ` Denis Vlasenko
2007-01-08 19:42 ` Bill Davidsen
2007-01-05 11:49 ` Michael Tokarev
[not found] <7zzqw-SS-27@gated-at.bofh.it>
2007-01-04 14:47 ` Bodo Eggert
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='000001c73096$d0e7d370$ab80030a@amr.corp.intel.com' \
--to=kenneth.w.chen@intel.com \
--cc=davidsen@tmr.com \
--cc=hch@infradead.com \
--cc=hugh@veritas.com \
--cc=hzhong@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
/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
Powered by JetHome