Re: [PATCH 10/12] nfs: don't call bdi_unregister

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed 14-01-15 10:42:39, Christoph Hellwig wrote:
> 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.
  Looks good. You can add:
Reviewed-by: Jan Kara <jack@xxxxxxx>

								Honza

> 
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> ---
>  fs/nfs/internal.h  |  1 -
>  fs/nfs/nfs4super.c |  1 -
>  fs/nfs/super.c     | 24 ++++++------------------
>  3 files changed, 6 insertions(+), 20 deletions(-)
> 
> diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
> index efaa31c..f519d41 100644
> --- a/fs/nfs/internal.h
> +++ b/fs/nfs/internal.h
> @@ -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_path(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);
>  
>  /* write.c */
> diff --git a/fs/nfs/nfs4super.c b/fs/nfs/nfs4super.c
> index 6f340f0..ab30a3a 100644
> --- a/fs/nfs/nfs4super.c
> +++ b/fs/nfs/nfs4super.c
> @@ -53,7 +53,6 @@ static const struct super_operations nfs4_sops = {
>  	.destroy_inode	= nfs_destroy_inode,
>  	.write_inode	= nfs4_write_inode,
>  	.drop_inode	= nfs_drop_inode,
> -	.put_super	= nfs_put_super,
>  	.statfs		= nfs_statfs,
>  	.evict_inode	= nfs4_evict_inode,
>  	.umount_begin	= nfs_umount_begin,
> diff --git a/fs/nfs/super.c b/fs/nfs/super.c
> index 31a11b0..6ec4fe2 100644
> --- a/fs/nfs/super.c
> +++ b/fs/nfs/super.c
> @@ -311,7 +311,6 @@ const struct super_operations nfs_sops = {
>  	.destroy_inode	= nfs_destroy_inode,
>  	.write_inode	= nfs_write_inode,
>  	.drop_inode	= nfs_drop_inode,
> -	.put_super	= nfs_put_super,
>  	.statfs		= nfs_statfs,
>  	.evict_inode	= nfs_evict_inode,
>  	.umount_begin	= nfs_umount_begin,
> @@ -2569,7 +2568,7 @@ struct dentry *nfs_fs_mount_common(struct nfs_server *server,
>  		error = nfs_bdi_register(server);
>  		if (error) {
>  			mntroot = ERR_PTR(error);
> -			goto error_splat_bdi;
> +			goto error_splat_super;
>  		}
>  		server->super = s;
>  	}
> @@ -2601,9 +2600,6 @@ error_splat_root:
>  	dput(mntroot);
>  	mntroot = ERR_PTR(error);
>  error_splat_super:
> -	if (server && !s->s_root)
> -		bdi_unregister(&server->backing_dev_info);
> -error_splat_bdi:
>  	deactivate_locked_super(s);
>  	goto out;
>  }
> @@ -2651,27 +2647,19 @@ out:
>  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
>   */
>  void nfs_kill_super(struct super_block *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_free_server(server);
> +	free_anon_bdev(dev);
>  }
>  EXPORT_SYMBOL_GPL(nfs_kill_super);
>  
> -- 
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
Jan Kara <jack@xxxxxxx>
SUSE Labs, CR

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]