summaryrefslogtreecommitdiffstats
path: root/xlators/mount/fuse
diff options
context:
space:
mode:
authorAnand Avati <avati@gluster.com>2010-04-05 13:35:45 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-04-08 03:08:00 -0700
commit9c2bc1bc61af888192bde18170b113b4f6f8b4ca (patch)
tree99f130177a265b40266f75f675f4536b795365c6 /xlators/mount/fuse
parent7cb8982cbbe8298cd1bdd35055f7d3818f4a136f (diff)
fuse: change behavior of direct io mode.
If bigwrites are available, then disable direct io mode only by default (previously direct io mode was disabled in any case). Added new command line option to force enabling of direct io mode Signed-off-by: Anand V. Avati <avati@blackhole.gluster.com> Signed-off-by: Raghavendra G <raghavendra@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 801 (Direct io-mode support and related changes in caching translators.) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=801
Diffstat (limited to 'xlators/mount/fuse')
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c
index b33607076..ada09f5b8 100644
--- a/xlators/mount/fuse/src/fuse-bridge.c
+++ b/xlators/mount/fuse/src/fuse-bridge.c
@@ -835,8 +835,7 @@ fuse_fd_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
foo.open_flags = 0;
if (!IA_ISDIR (fd->inode->ia_type)) {
- if (((state->flags & O_ACCMODE) != O_RDONLY) &&
- priv->direct_io_mode)
+ if (priv->direct_io_mode)
foo.open_flags |= FOPEN_DIRECT_IO;
}
@@ -1650,8 +1649,7 @@ fuse_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
if (op_ret >= 0) {
foo.fh = (uintptr_t) fd;
- if (((state->flags & O_ACCMODE) != O_RDONLY) &&
- priv->direct_io_mode)
+ if (priv->direct_io_mode)
foo.open_flags |= FOPEN_DIRECT_IO;
gf_log ("glusterfs-fuse", GF_LOG_TRACE,
@@ -2922,8 +2920,9 @@ fuse_init (xlator_t *this, fuse_in_header_t *finh, void *msg)
fino.flags = FUSE_ASYNC_READ | FUSE_POSIX_LOCKS;
if (fini->minor >= 6 /* fuse_init_in has flags */ &&
fini->flags & FUSE_BIG_WRITES) {
- /* no need for direct I/O mode if big writes are supported */
- priv->direct_io_mode = 0;
+ /* no need for direct I/O mode by default if big writes are supported */
+ if (priv->direct_io_mode == 2)
+ priv->direct_io_mode = 0;
fino.flags |= FUSE_BIG_WRITES;
}
if (fini->minor >= 13) {
@@ -3423,7 +3422,7 @@ init (xlator_t *this_xl)
priv->entry_timeout = 1.0; /* default */
- priv->direct_io_mode = 1;
+ priv->direct_io_mode = 2;
ret = dict_get_str (options, ZR_DIRECT_IO_OPT, &value_string);
if (value_string) {
ret = gf_string2boolean (value_string, &priv->direct_io_mode);