diff options
author | Christoph Hellwig <hch@lst.de> | 2015-01-14 10:42:38 +0100 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-01-20 22:03:07 +0100 |
commit | e4d2750909aa26129bd0bf1b0dc832e0845aae90 (patch) | |
tree | d9cfd5dc69e5edba8e8d810c51009468e9f7199d | |
parent | fs: remove mapping->backing_dev_info (diff) | |
download | linux-e4d2750909aa26129bd0bf1b0dc832e0845aae90.tar.xz linux-e4d2750909aa26129bd0bf1b0dc832e0845aae90.zip |
ceph: remove call to 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.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | fs/ceph/super.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 50f06cddc94b..e350cc1611e4 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -40,17 +40,6 @@ static void ceph_put_super(struct super_block *s) dout("put_super\n"); ceph_mdsc_close_sessions(fsc->mdsc); - - /* - * ensure we release the bdi before put_anon_super releases - * the device name. - */ - if (s->s_bdi == &fsc->backing_dev_info) { - bdi_unregister(&fsc->backing_dev_info); - s->s_bdi = NULL; - } - - return; } static int ceph_statfs(struct dentry *dentry, struct kstatfs *buf) @@ -1002,11 +991,16 @@ out_final: static void ceph_kill_sb(struct super_block *s) { struct ceph_fs_client *fsc = ceph_sb_to_client(s); + dev_t dev = s->s_dev; + dout("kill_sb %p\n", s); + ceph_mdsc_pre_umount(fsc->mdsc); - kill_anon_super(s); /* will call put_super after sb is r/o */ + generic_shutdown_super(s); ceph_mdsc_destroy(fsc); + destroy_fs_client(fsc); + free_anon_bdev(dev); } static struct file_system_type ceph_fs_type = { |