diff options
| author | Sage Weil <sage@newdream.net> | 2010-04-29 16:26:53 -0400 |
|---|---|---|
| committer | Sage Weil <sage@newdream.net> | 2010-05-03 13:49:25 -0400 |
| commit | b0930f8d38c6ab76dc8222a5a910a21392d38208 (patch) | |
| tree | 0aad65459eaa8fd5fdf8b621eb9b851e7864ae6e | |
| parent | 7ff899da02cb674211858fcd919f8b4511a4423f (diff) | |
ceph: remove bad auth_x kmem_cache
It's useless, since our allocations are already a power of 2. And it was
allocated per-instance (not globally), which caused a name collision when
we tried to mount a second file system with auth_x enabled.
Signed-off-by: Sage Weil <sage@newdream.net>
| -rw-r--r-- | fs/ceph/auth_x.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/fs/ceph/auth_x.c b/fs/ceph/auth_x.c index d9001a4dc8cc..fee5a08da881 100644 --- a/fs/ceph/auth_x.c +++ b/fs/ceph/auth_x.c | |||
| @@ -12,8 +12,6 @@ | |||
| 12 | #include "auth.h" | 12 | #include "auth.h" |
| 13 | #include "decode.h" | 13 | #include "decode.h" |
| 14 | 14 | ||
| 15 | struct kmem_cache *ceph_x_ticketbuf_cachep; | ||
| 16 | |||
| 17 | #define TEMP_TICKET_BUF_LEN 256 | 15 | #define TEMP_TICKET_BUF_LEN 256 |
| 18 | 16 | ||
| 19 | static void ceph_x_validate_tickets(struct ceph_auth_client *ac, int *pneed); | 17 | static void ceph_x_validate_tickets(struct ceph_auth_client *ac, int *pneed); |
| @@ -131,13 +129,12 @@ static int ceph_x_proc_ticket_reply(struct ceph_auth_client *ac, | |||
| 131 | char *ticket_buf; | 129 | char *ticket_buf; |
| 132 | u8 struct_v; | 130 | u8 struct_v; |
| 133 | 131 | ||
| 134 | dbuf = kmem_cache_alloc(ceph_x_ticketbuf_cachep, GFP_NOFS | GFP_ATOMIC); | 132 | dbuf = kmalloc(TEMP_TICKET_BUF_LEN, GFP_NOFS); |
| 135 | if (!dbuf) | 133 | if (!dbuf) |
| 136 | return -ENOMEM; | 134 | return -ENOMEM; |
| 137 | 135 | ||
| 138 | ret = -ENOMEM; | 136 | ret = -ENOMEM; |
| 139 | ticket_buf = kmem_cache_alloc(ceph_x_ticketbuf_cachep, | 137 | ticket_buf = kmalloc(TEMP_TICKET_BUF_LEN, GFP_NOFS); |
| 140 | GFP_NOFS | GFP_ATOMIC); | ||
| 141 | if (!ticket_buf) | 138 | if (!ticket_buf) |
| 142 | goto out_dbuf; | 139 | goto out_dbuf; |
| 143 | 140 | ||
| @@ -251,9 +248,9 @@ static int ceph_x_proc_ticket_reply(struct ceph_auth_client *ac, | |||
| 251 | 248 | ||
| 252 | ret = 0; | 249 | ret = 0; |
| 253 | out: | 250 | out: |
| 254 | kmem_cache_free(ceph_x_ticketbuf_cachep, ticket_buf); | 251 | kfree(ticket_buf); |
| 255 | out_dbuf: | 252 | out_dbuf: |
| 256 | kmem_cache_free(ceph_x_ticketbuf_cachep, dbuf); | 253 | kfree(dbuf); |
| 257 | return ret; | 254 | return ret; |
| 258 | 255 | ||
| 259 | bad: | 256 | bad: |
| @@ -605,8 +602,6 @@ static void ceph_x_destroy(struct ceph_auth_client *ac) | |||
| 605 | remove_ticket_handler(ac, th); | 602 | remove_ticket_handler(ac, th); |
| 606 | } | 603 | } |
| 607 | 604 | ||
| 608 | kmem_cache_destroy(ceph_x_ticketbuf_cachep); | ||
| 609 | |||
| 610 | kfree(ac->private); | 605 | kfree(ac->private); |
| 611 | ac->private = NULL; | 606 | ac->private = NULL; |
| 612 | } | 607 | } |
| @@ -641,26 +636,20 @@ int ceph_x_init(struct ceph_auth_client *ac) | |||
| 641 | int ret; | 636 | int ret; |
| 642 | 637 | ||
| 643 | dout("ceph_x_init %p\n", ac); | 638 | dout("ceph_x_init %p\n", ac); |
| 639 | ret = -ENOMEM; | ||
| 644 | xi = kzalloc(sizeof(*xi), GFP_NOFS); | 640 | xi = kzalloc(sizeof(*xi), GFP_NOFS); |
| 645 | if (!xi) | 641 | if (!xi) |
| 646 | return -ENOMEM; | 642 | goto out; |
| 647 | 643 | ||
| 648 | ret = -ENOMEM; | ||
| 649 | ceph_x_ticketbuf_cachep = kmem_cache_create("ceph_x_ticketbuf", | ||
| 650 | TEMP_TICKET_BUF_LEN, 8, | ||
| 651 | (SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD), | ||
| 652 | NULL); | ||
| 653 | if (!ceph_x_ticketbuf_cachep) | ||
| 654 | goto done_nomem; | ||
| 655 | ret = -EINVAL; | 644 | ret = -EINVAL; |
| 656 | if (!ac->secret) { | 645 | if (!ac->secret) { |
| 657 | pr_err("no secret set (for auth_x protocol)\n"); | 646 | pr_err("no secret set (for auth_x protocol)\n"); |
| 658 | goto done_nomem; | 647 | goto out_nomem; |
| 659 | } | 648 | } |
| 660 | 649 | ||
| 661 | ret = ceph_crypto_key_unarmor(&xi->secret, ac->secret); | 650 | ret = ceph_crypto_key_unarmor(&xi->secret, ac->secret); |
| 662 | if (ret) | 651 | if (ret) |
| 663 | goto done_nomem; | 652 | goto out_nomem; |
| 664 | 653 | ||
| 665 | xi->starting = true; | 654 | xi->starting = true; |
| 666 | xi->ticket_handlers = RB_ROOT; | 655 | xi->ticket_handlers = RB_ROOT; |
| @@ -670,10 +659,9 @@ int ceph_x_init(struct ceph_auth_client *ac) | |||
| 670 | ac->ops = &ceph_x_ops; | 659 | ac->ops = &ceph_x_ops; |
| 671 | return 0; | 660 | return 0; |
| 672 | 661 | ||
| 673 | done_nomem: | 662 | out_nomem: |
| 674 | kfree(xi); | 663 | kfree(xi); |
| 675 | if (ceph_x_ticketbuf_cachep) | 664 | out: |
| 676 | kmem_cache_destroy(ceph_x_ticketbuf_cachep); | ||
| 677 | return ret; | 665 | return ret; |
| 678 | } | 666 | } |
| 679 | 667 | ||
