cifs: Convert to separately allocated bdi
Allocate struct backing_dev_info separately instead of embedding it inside superblock. This unifies handling of bdi among users. CC: Steve French <sfrench@samba.org> CC: linux-cifs@vger.kernel.org Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
09dc9fc24b
commit
851ea08609
@ -68,7 +68,6 @@ struct cifs_sb_info {
|
|||||||
umode_t mnt_dir_mode;
|
umode_t mnt_dir_mode;
|
||||||
unsigned int mnt_cifs_flags;
|
unsigned int mnt_cifs_flags;
|
||||||
char *mountdata; /* options received at mount time or via DFS refs */
|
char *mountdata; /* options received at mount time or via DFS refs */
|
||||||
struct backing_dev_info bdi;
|
|
||||||
struct delayed_work prune_tlinks;
|
struct delayed_work prune_tlinks;
|
||||||
struct rcu_head rcu;
|
struct rcu_head rcu;
|
||||||
char *prepath;
|
char *prepath;
|
||||||
|
@ -138,7 +138,12 @@ cifs_read_super(struct super_block *sb)
|
|||||||
sb->s_magic = CIFS_MAGIC_NUMBER;
|
sb->s_magic = CIFS_MAGIC_NUMBER;
|
||||||
sb->s_op = &cifs_super_ops;
|
sb->s_op = &cifs_super_ops;
|
||||||
sb->s_xattr = cifs_xattr_handlers;
|
sb->s_xattr = cifs_xattr_handlers;
|
||||||
sb->s_bdi = &cifs_sb->bdi;
|
rc = super_setup_bdi(sb);
|
||||||
|
if (rc)
|
||||||
|
goto out_no_root;
|
||||||
|
/* tune readahead according to rsize */
|
||||||
|
sb->s_bdi->ra_pages = cifs_sb->rsize / PAGE_SIZE;
|
||||||
|
|
||||||
sb->s_blocksize = CIFS_MAX_MSGSIZE;
|
sb->s_blocksize = CIFS_MAX_MSGSIZE;
|
||||||
sb->s_blocksize_bits = 14; /* default 2**14 = CIFS_MAX_MSGSIZE */
|
sb->s_blocksize_bits = 14; /* default 2**14 = CIFS_MAX_MSGSIZE */
|
||||||
inode = cifs_root_iget(sb);
|
inode = cifs_root_iget(sb);
|
||||||
|
@ -3683,10 +3683,6 @@ cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *volume_info)
|
|||||||
int referral_walks_count = 0;
|
int referral_walks_count = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rc = bdi_setup_and_register(&cifs_sb->bdi, "cifs");
|
|
||||||
if (rc)
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
#ifdef CONFIG_CIFS_DFS_UPCALL
|
#ifdef CONFIG_CIFS_DFS_UPCALL
|
||||||
try_mount_again:
|
try_mount_again:
|
||||||
/* cleanup activities if we're chasing a referral */
|
/* cleanup activities if we're chasing a referral */
|
||||||
@ -3714,7 +3710,6 @@ try_mount_again:
|
|||||||
server = cifs_get_tcp_session(volume_info);
|
server = cifs_get_tcp_session(volume_info);
|
||||||
if (IS_ERR(server)) {
|
if (IS_ERR(server)) {
|
||||||
rc = PTR_ERR(server);
|
rc = PTR_ERR(server);
|
||||||
bdi_destroy(&cifs_sb->bdi);
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if ((volume_info->max_credits < 20) ||
|
if ((volume_info->max_credits < 20) ||
|
||||||
@ -3768,9 +3763,6 @@ try_mount_again:
|
|||||||
cifs_sb->wsize = server->ops->negotiate_wsize(tcon, volume_info);
|
cifs_sb->wsize = server->ops->negotiate_wsize(tcon, volume_info);
|
||||||
cifs_sb->rsize = server->ops->negotiate_rsize(tcon, volume_info);
|
cifs_sb->rsize = server->ops->negotiate_rsize(tcon, volume_info);
|
||||||
|
|
||||||
/* tune readahead according to rsize */
|
|
||||||
cifs_sb->bdi.ra_pages = cifs_sb->rsize / PAGE_SIZE;
|
|
||||||
|
|
||||||
remote_path_check:
|
remote_path_check:
|
||||||
#ifdef CONFIG_CIFS_DFS_UPCALL
|
#ifdef CONFIG_CIFS_DFS_UPCALL
|
||||||
/*
|
/*
|
||||||
@ -3887,7 +3879,6 @@ mount_fail_check:
|
|||||||
cifs_put_smb_ses(ses);
|
cifs_put_smb_ses(ses);
|
||||||
else
|
else
|
||||||
cifs_put_tcp_session(server, 0);
|
cifs_put_tcp_session(server, 0);
|
||||||
bdi_destroy(&cifs_sb->bdi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
@ -4090,7 +4081,6 @@ cifs_umount(struct cifs_sb_info *cifs_sb)
|
|||||||
}
|
}
|
||||||
spin_unlock(&cifs_sb->tlink_tree_lock);
|
spin_unlock(&cifs_sb->tlink_tree_lock);
|
||||||
|
|
||||||
bdi_destroy(&cifs_sb->bdi);
|
|
||||||
kfree(cifs_sb->mountdata);
|
kfree(cifs_sb->mountdata);
|
||||||
kfree(cifs_sb->prepath);
|
kfree(cifs_sb->prepath);
|
||||||
call_rcu(&cifs_sb->rcu, delayed_free);
|
call_rcu(&cifs_sb->rcu, delayed_free);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user