Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 42775
b: refs/heads/master
c: d809161
h: refs/heads/master
i:
  42773: 3183aee
  42771: a589703
  42767: 28f4b6c
v: v3
  • Loading branch information
Miklos Szeredi authored and Linus Torvalds committed Dec 7, 2006
1 parent edd5a9c commit 84c8460
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d6392f873f1d09974d5c92c52715fa422ad7c625
refs/heads/master: d809161402e9f99aefe8848c4e701597ac367269
5 changes: 5 additions & 0 deletions trunk/Documentation/filesystems/fuse.txt
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,11 @@ Mount options
The default is infinite. Note that the size of read requests is
limited anyway to 32 pages (which is 128kbyte on i386).

'blksize=N'

Set the block size for the filesystem. The default is 512. This
option is only valid for 'fuseblk' type mounts.

Control filesystem
~~~~~~~~~~~~~~~~~~

Expand Down
24 changes: 20 additions & 4 deletions trunk/fs/fuse/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ struct fuse_mount_data {
unsigned group_id_present : 1;
unsigned flags;
unsigned max_read;
unsigned blksize;
};

static struct inode *fuse_alloc_inode(struct super_block *sb)
Expand Down Expand Up @@ -274,6 +275,7 @@ enum {
OPT_DEFAULT_PERMISSIONS,
OPT_ALLOW_OTHER,
OPT_MAX_READ,
OPT_BLKSIZE,
OPT_ERR
};

Expand All @@ -285,14 +287,16 @@ static match_table_t tokens = {
{OPT_DEFAULT_PERMISSIONS, "default_permissions"},
{OPT_ALLOW_OTHER, "allow_other"},
{OPT_MAX_READ, "max_read=%u"},
{OPT_BLKSIZE, "blksize=%u"},
{OPT_ERR, NULL}
};

static int parse_fuse_opt(char *opt, struct fuse_mount_data *d)
static int parse_fuse_opt(char *opt, struct fuse_mount_data *d, int is_bdev)
{
char *p;
memset(d, 0, sizeof(struct fuse_mount_data));
d->max_read = ~0;
d->blksize = 512;

while ((p = strsep(&opt, ",")) != NULL) {
int token;
Expand Down Expand Up @@ -345,6 +349,12 @@ static int parse_fuse_opt(char *opt, struct fuse_mount_data *d)
d->max_read = value;
break;

case OPT_BLKSIZE:
if (!is_bdev || match_int(&args[0], &value))
return 0;
d->blksize = value;
break;

default:
return 0;
}
Expand Down Expand Up @@ -500,15 +510,21 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
struct dentry *root_dentry;
struct fuse_req *init_req;
int err;
int is_bdev = sb->s_bdev != NULL;

if (sb->s_flags & MS_MANDLOCK)
return -EINVAL;

if (!parse_fuse_opt((char *) data, &d))
if (!parse_fuse_opt((char *) data, &d, is_bdev))
return -EINVAL;

sb->s_blocksize = PAGE_CACHE_SIZE;
sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
if (is_bdev) {
if (!sb_set_blocksize(sb, d.blksize))
return -EINVAL;
} else {
sb->s_blocksize = PAGE_CACHE_SIZE;
sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
}
sb->s_magic = FUSE_SUPER_MAGIC;
sb->s_op = &fuse_super_operations;
sb->s_maxbytes = MAX_LFS_FILESIZE;
Expand Down

0 comments on commit 84c8460

Please sign in to comment.