Commit 7b14a213 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

nfs: don't call bdi_unregister

bdi_destroy already does all the work, and if we delay freeing the
anon bdev we can get away with just that single call.

Addintionally remove the call during mount failure, as
deactivate_super_locked will already call ->kill_sb and clean up
the bdi for us.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent e4d27509
...@@ -416,7 +416,6 @@ int nfs_show_options(struct seq_file *, struct dentry *); ...@@ -416,7 +416,6 @@ int nfs_show_options(struct seq_file *, struct dentry *);
int nfs_show_devname(struct seq_file *, struct dentry *); int nfs_show_devname(struct seq_file *, struct dentry *);
int nfs_show_path(struct seq_file *, struct dentry *); int nfs_show_path(struct seq_file *, struct dentry *);
int nfs_show_stats(struct seq_file *, struct dentry *); int nfs_show_stats(struct seq_file *, struct dentry *);
void nfs_put_super(struct super_block *);
int nfs_remount(struct super_block *sb, int *flags, char *raw_data); int nfs_remount(struct super_block *sb, int *flags, char *raw_data);
/* write.c */ /* write.c */
......
...@@ -53,7 +53,6 @@ static const struct super_operations nfs4_sops = { ...@@ -53,7 +53,6 @@ static const struct super_operations nfs4_sops = {
.destroy_inode = nfs_destroy_inode, .destroy_inode = nfs_destroy_inode,
.write_inode = nfs4_write_inode, .write_inode = nfs4_write_inode,
.drop_inode = nfs_drop_inode, .drop_inode = nfs_drop_inode,
.put_super = nfs_put_super,
.statfs = nfs_statfs, .statfs = nfs_statfs,
.evict_inode = nfs4_evict_inode, .evict_inode = nfs4_evict_inode,
.umount_begin = nfs_umount_begin, .umount_begin = nfs_umount_begin,
......
...@@ -311,7 +311,6 @@ const struct super_operations nfs_sops = { ...@@ -311,7 +311,6 @@ const struct super_operations nfs_sops = {
.destroy_inode = nfs_destroy_inode, .destroy_inode = nfs_destroy_inode,
.write_inode = nfs_write_inode, .write_inode = nfs_write_inode,
.drop_inode = nfs_drop_inode, .drop_inode = nfs_drop_inode,
.put_super = nfs_put_super,
.statfs = nfs_statfs, .statfs = nfs_statfs,
.evict_inode = nfs_evict_inode, .evict_inode = nfs_evict_inode,
.umount_begin = nfs_umount_begin, .umount_begin = nfs_umount_begin,
...@@ -2569,7 +2568,7 @@ struct dentry *nfs_fs_mount_common(struct nfs_server *server, ...@@ -2569,7 +2568,7 @@ struct dentry *nfs_fs_mount_common(struct nfs_server *server,
error = nfs_bdi_register(server); error = nfs_bdi_register(server);
if (error) { if (error) {
mntroot = ERR_PTR(error); mntroot = ERR_PTR(error);
goto error_splat_bdi; goto error_splat_super;
} }
server->super = s; server->super = s;
} }
...@@ -2601,9 +2600,6 @@ struct dentry *nfs_fs_mount_common(struct nfs_server *server, ...@@ -2601,9 +2600,6 @@ struct dentry *nfs_fs_mount_common(struct nfs_server *server,
dput(mntroot); dput(mntroot);
mntroot = ERR_PTR(error); mntroot = ERR_PTR(error);
error_splat_super: error_splat_super:
if (server && !s->s_root)
bdi_unregister(&server->backing_dev_info);
error_splat_bdi:
deactivate_locked_super(s); deactivate_locked_super(s);
goto out; goto out;
} }
...@@ -2650,28 +2646,20 @@ struct dentry *nfs_fs_mount(struct file_system_type *fs_type, ...@@ -2650,28 +2646,20 @@ struct dentry *nfs_fs_mount(struct file_system_type *fs_type,
} }
EXPORT_SYMBOL_GPL(nfs_fs_mount); EXPORT_SYMBOL_GPL(nfs_fs_mount);
/*
* Ensure that we unregister the bdi before kill_anon_super
* releases the device name
*/
void nfs_put_super(struct super_block *s)
{
struct nfs_server *server = NFS_SB(s);
bdi_unregister(&server->backing_dev_info);
}
EXPORT_SYMBOL_GPL(nfs_put_super);
/* /*
* Destroy an NFS2/3 superblock * Destroy an NFS2/3 superblock
*/ */
void nfs_kill_super(struct super_block *s) void nfs_kill_super(struct super_block *s)
{ {
struct nfs_server *server = NFS_SB(s); struct nfs_server *server = NFS_SB(s);
dev_t dev = s->s_dev;
generic_shutdown_super(s);
kill_anon_super(s);
nfs_fscache_release_super_cookie(s); nfs_fscache_release_super_cookie(s);
nfs_free_server(server); nfs_free_server(server);
free_anon_bdev(dev);
} }
EXPORT_SYMBOL_GPL(nfs_kill_super); EXPORT_SYMBOL_GPL(nfs_kill_super);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment