summaryrefslogtreecommitdiffstats
path: root/fs/orangefs/super.c
diff options
context:
space:
mode:
authorMartin Brandenburg <martin@omnibond.com>2018-02-12 21:28:42 +0100
committerMike Marshall <hubcap@omnibond.com>2019-05-03 20:32:38 +0200
commitf2d34c738cbf21b0d24982693b71fd9f9f52ea4b (patch)
tree9c3770e9b6d79079a928f3fa94fdd27f66128f74 /fs/orangefs/super.c
parentorangefs: hold i_lock during inode_getattr (diff)
downloadlinux-f2d34c738cbf21b0d24982693b71fd9f9f52ea4b.tar.xz
linux-f2d34c738cbf21b0d24982693b71fd9f9f52ea4b.zip
orangefs: set up and use backing_dev_info
Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
Diffstat (limited to 'fs/orangefs/super.c')
-rw-r--r--fs/orangefs/super.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c
index 31db6ac73de1..ef3388c90ff7 100644
--- a/fs/orangefs/super.c
+++ b/fs/orangefs/super.c
@@ -407,15 +407,11 @@ static int orangefs_fill_sb(struct super_block *sb,
struct orangefs_fs_mount_response *fs_mount,
void *data, int silent)
{
- int ret = -EINVAL;
- struct inode *root = NULL;
- struct dentry *root_dentry = NULL;
+ int ret;
+ struct inode *root;
+ struct dentry *root_dentry;
struct orangefs_object_kref root_object;
- /* alloc and init our private orangefs sb info */
- sb->s_fs_info = kzalloc(sizeof(struct orangefs_sb_info_s), GFP_KERNEL);
- if (!ORANGEFS_SB(sb))
- return -ENOMEM;
ORANGEFS_SB(sb)->sb = sb;
ORANGEFS_SB(sb)->root_khandle = fs_mount->root_khandle;
@@ -438,6 +434,10 @@ static int orangefs_fill_sb(struct super_block *sb,
sb->s_blocksize_bits = PAGE_SHIFT;
sb->s_maxbytes = MAX_LFS_FILESIZE;
+ ret = super_setup_bdi(sb);
+ if (ret)
+ return ret;
+
root_object.khandle = ORANGEFS_SB(sb)->root_khandle;
root_object.fs_id = ORANGEFS_SB(sb)->fs_id;
gossip_debug(GOSSIP_SUPER_DEBUG,
@@ -516,6 +516,13 @@ struct dentry *orangefs_mount(struct file_system_type *fst,
goto free_op;
}
+ /* alloc and init our private orangefs sb info */
+ sb->s_fs_info = kzalloc(sizeof(struct orangefs_sb_info_s), GFP_KERNEL);
+ if (!ORANGEFS_SB(sb)) {
+ d = ERR_PTR(-ENOMEM);
+ goto free_op;
+ }
+
ret = orangefs_fill_sb(sb,
&new_op->downcall.resp.fs_mount, data,
flags & SB_SILENT ? 1 : 0);