ceph: move mempool creation to ceph_create_client
authorSage Weil <sage@newdream.net>
Wed, 18 Nov 2009 23:08:44 +0000 (15:08 -0800)
committerSage Weil <sage@newdream.net>
Thu, 19 Nov 2009 00:20:08 +0000 (16:20 -0800)
Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/super.c

index c901395ae8a15920463cd07281832ae967489e3c..df05617aca86108ee9e88fdc6ad330ff7cce705b 100644 (file)
@@ -534,10 +534,18 @@ static struct ceph_client *ceph_create_client(struct ceph_mount_args *args)
        if (client->trunc_wq == NULL)
                goto fail_pg_inv_wq;
 
+       /* set up mempools */
+       err = -ENOMEM;
+       client->wb_pagevec_pool = mempool_create_kmalloc_pool(10,
+                             client->mount_args->wsize >> PAGE_CACHE_SHIFT);
+       if (!client->wb_pagevec_pool)
+               goto fail_trunc_wq;
+
+
        /* subsystems */
        err = ceph_monc_init(&client->monc, client);
        if (err < 0)
-               goto fail_trunc_wq;
+               goto fail_mempool;
        err = ceph_osdc_init(&client->osdc, client);
        if (err < 0)
                goto fail_monc;
@@ -550,6 +558,8 @@ fail_osdc:
        ceph_osdc_stop(&client->osdc);
 fail_monc:
        ceph_monc_stop(&client->monc);
+fail_mempool:
+       mempool_destroy(client->wb_pagevec_pool);
 fail_trunc_wq:
        destroy_workqueue(client->trunc_wq);
 fail_pg_inv_wq:
@@ -581,8 +591,7 @@ static void ceph_destroy_client(struct ceph_client *client)
 
        if (client->msgr)
                ceph_messenger_destroy(client->msgr);
-       if (client->wb_pagevec_pool)
-               mempool_destroy(client->wb_pagevec_pool);
+       mempool_destroy(client->wb_pagevec_pool);
 
        destroy_mount_args(client->mount_args);
 
@@ -845,14 +854,6 @@ static int ceph_get_sb(struct file_system_type *fs_type,
                dout("get_sb got existing client %p\n", client);
        } else {
                dout("get_sb using new client %p\n", client);
-
-               /* set up mempools */
-               err = -ENOMEM;
-               client->wb_pagevec_pool = mempool_create_kmalloc_pool(10,
-                             client->mount_args->wsize >> PAGE_CACHE_SHIFT);
-               if (!client->wb_pagevec_pool)
-                       goto out_splat;
-
                err = ceph_register_bdi(sb, client);
                if (err < 0)
                        goto out_splat;