|
@@ -72,10 +72,12 @@ static int v9fs_set_super(struct super_block *s, void *data)
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
|
|
|
|
-static void
|
|
|
|
|
|
+static int
|
|
v9fs_fill_super(struct super_block *sb, struct v9fs_session_info *v9ses,
|
|
v9fs_fill_super(struct super_block *sb, struct v9fs_session_info *v9ses,
|
|
int flags, void *data)
|
|
int flags, void *data)
|
|
{
|
|
{
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
sb->s_maxbytes = MAX_LFS_FILESIZE;
|
|
sb->s_maxbytes = MAX_LFS_FILESIZE;
|
|
sb->s_blocksize_bits = fls(v9ses->maxdata - 1);
|
|
sb->s_blocksize_bits = fls(v9ses->maxdata - 1);
|
|
sb->s_blocksize = 1 << sb->s_blocksize_bits;
|
|
sb->s_blocksize = 1 << sb->s_blocksize_bits;
|
|
@@ -85,7 +87,11 @@ v9fs_fill_super(struct super_block *sb, struct v9fs_session_info *v9ses,
|
|
sb->s_xattr = v9fs_xattr_handlers;
|
|
sb->s_xattr = v9fs_xattr_handlers;
|
|
} else
|
|
} else
|
|
sb->s_op = &v9fs_super_ops;
|
|
sb->s_op = &v9fs_super_ops;
|
|
- sb->s_bdi = &v9ses->bdi;
|
|
|
|
|
|
+
|
|
|
|
+ ret = super_setup_bdi(sb);
|
|
|
|
+ if (ret)
|
|
|
|
+ return ret;
|
|
|
|
+
|
|
if (v9ses->cache)
|
|
if (v9ses->cache)
|
|
sb->s_bdi->ra_pages = (VM_MAX_READAHEAD * 1024)/PAGE_SIZE;
|
|
sb->s_bdi->ra_pages = (VM_MAX_READAHEAD * 1024)/PAGE_SIZE;
|
|
|
|
|
|
@@ -99,6 +105,7 @@ v9fs_fill_super(struct super_block *sb, struct v9fs_session_info *v9ses,
|
|
#endif
|
|
#endif
|
|
|
|
|
|
save_mount_options(sb, data);
|
|
save_mount_options(sb, data);
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -138,7 +145,9 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags,
|
|
retval = PTR_ERR(sb);
|
|
retval = PTR_ERR(sb);
|
|
goto clunk_fid;
|
|
goto clunk_fid;
|
|
}
|
|
}
|
|
- v9fs_fill_super(sb, v9ses, flags, data);
|
|
|
|
|
|
+ retval = v9fs_fill_super(sb, v9ses, flags, data);
|
|
|
|
+ if (retval)
|
|
|
|
+ goto release_sb;
|
|
|
|
|
|
if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE)
|
|
if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE)
|
|
sb->s_d_op = &v9fs_cached_dentry_operations;
|
|
sb->s_d_op = &v9fs_cached_dentry_operations;
|