aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/super.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2009-11-18 15:08:44 -0800
committerSage Weil <sage@newdream.net>2009-11-18 16:20:08 -0800
commitb9bfb93ce2b1ef668254f0b9e16fcc5246d65d8e (patch)
tree77f3c99bd497137297fed7f0f2ba8967d4181bec /fs/ceph/super.c
parent4e7a5dcd1bbab6560fbc8ada29a840e7a20ed7bc (diff)
downloadkernel_samsung_smdk4412-b9bfb93ce2b1ef668254f0b9e16fcc5246d65d8e.zip
kernel_samsung_smdk4412-b9bfb93ce2b1ef668254f0b9e16fcc5246d65d8e.tar.gz
kernel_samsung_smdk4412-b9bfb93ce2b1ef668254f0b9e16fcc5246d65d8e.tar.bz2
ceph: move mempool creation to ceph_create_client
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/super.c')
-rw-r--r--fs/ceph/super.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index c901395..df05617 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -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;