aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/fuse/inode.c')
-rw-r--r--fs/fuse/inode.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 298c1d4c1534..652c9d5df973 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -258,6 +258,7 @@ enum {
258 OPT_DEFAULT_PERMISSIONS, 258 OPT_DEFAULT_PERMISSIONS,
259 OPT_ALLOW_OTHER, 259 OPT_ALLOW_OTHER,
260 OPT_KERNEL_CACHE, 260 OPT_KERNEL_CACHE,
261 OPT_DIRECT_IO,
261 OPT_MAX_READ, 262 OPT_MAX_READ,
262 OPT_ERR 263 OPT_ERR
263}; 264};
@@ -270,6 +271,7 @@ static match_table_t tokens = {
270 {OPT_DEFAULT_PERMISSIONS, "default_permissions"}, 271 {OPT_DEFAULT_PERMISSIONS, "default_permissions"},
271 {OPT_ALLOW_OTHER, "allow_other"}, 272 {OPT_ALLOW_OTHER, "allow_other"},
272 {OPT_KERNEL_CACHE, "kernel_cache"}, 273 {OPT_KERNEL_CACHE, "kernel_cache"},
274 {OPT_DIRECT_IO, "direct_io"},
273 {OPT_MAX_READ, "max_read=%u"}, 275 {OPT_MAX_READ, "max_read=%u"},
274 {OPT_ERR, NULL} 276 {OPT_ERR, NULL}
275}; 277};
@@ -329,6 +331,10 @@ static int parse_fuse_opt(char *opt, struct fuse_mount_data *d)
329 d->flags |= FUSE_KERNEL_CACHE; 331 d->flags |= FUSE_KERNEL_CACHE;
330 break; 332 break;
331 333
334 case OPT_DIRECT_IO:
335 d->flags |= FUSE_DIRECT_IO;
336 break;
337
332 case OPT_MAX_READ: 338 case OPT_MAX_READ:
333 if (match_int(&args[0], &value)) 339 if (match_int(&args[0], &value))
334 return 0; 340 return 0;
@@ -359,6 +365,8 @@ static int fuse_show_options(struct seq_file *m, struct vfsmount *mnt)
359 seq_puts(m, ",allow_other"); 365 seq_puts(m, ",allow_other");
360 if (fc->flags & FUSE_KERNEL_CACHE) 366 if (fc->flags & FUSE_KERNEL_CACHE)
361 seq_puts(m, ",kernel_cache"); 367 seq_puts(m, ",kernel_cache");
368 if (fc->flags & FUSE_DIRECT_IO)
369 seq_puts(m, ",direct_io");
362 if (fc->max_read != ~0) 370 if (fc->max_read != ~0)
363 seq_printf(m, ",max_read=%u", fc->max_read); 371 seq_printf(m, ",max_read=%u", fc->max_read);
364 return 0; 372 return 0;
@@ -489,6 +497,7 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
489 fc->max_read = d.max_read; 497 fc->max_read = d.max_read;
490 if (fc->max_read / PAGE_CACHE_SIZE < fc->bdi.ra_pages) 498 if (fc->max_read / PAGE_CACHE_SIZE < fc->bdi.ra_pages)
491 fc->bdi.ra_pages = fc->max_read / PAGE_CACHE_SIZE; 499 fc->bdi.ra_pages = fc->max_read / PAGE_CACHE_SIZE;
500 fc->max_write = FUSE_MAX_IN / 2;
492 501
493 err = -ENOMEM; 502 err = -ENOMEM;
494 root = get_root_inode(sb, d.rootmode); 503 root = get_root_inode(sb, d.rootmode);