ceph: call ceph_mdsc_destroy from destroy_fs_client
authorJeff Layton <jlayton@kernel.org>
Thu, 12 Sep 2019 12:07:56 +0000 (08:07 -0400)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 16 Sep 2019 10:06:25 +0000 (12:06 +0200)
They're always called in succession.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/super.c

index 03b63b1..7173679 100644 (file)
@@ -731,6 +731,7 @@ static void destroy_fs_client(struct ceph_fs_client *fsc)
 {
        dout("destroy_fs_client %p\n", fsc);
 
+       ceph_mdsc_destroy(fsc);
        destroy_workqueue(fsc->inode_wq);
        destroy_workqueue(fsc->cap_wq);
 
@@ -1105,7 +1106,6 @@ static struct dentry *ceph_mount(struct file_system_type *fs_type,
        }
 
        if (ceph_sb_to_client(sb) != fsc) {
-               ceph_mdsc_destroy(fsc);
                destroy_fs_client(fsc);
                fsc = ceph_sb_to_client(sb);
                dout("get_sb got existing client %p\n", fsc);
@@ -1131,7 +1131,6 @@ out_splat:
        goto out_final;
 
 out:
-       ceph_mdsc_destroy(fsc);
        destroy_fs_client(fsc);
 out_final:
        dout("ceph_mount fail %ld\n", PTR_ERR(res));
@@ -1155,8 +1154,6 @@ static void ceph_kill_sb(struct super_block *s)
 
        ceph_fscache_unregister_fs(fsc);
 
-       ceph_mdsc_destroy(fsc);
-
        destroy_fs_client(fsc);
        free_anon_bdev(dev);
 }