diff options
author | Bryn M. Reeves <bmr@redhat.com> | 2011-07-01 16:49:23 -0400 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2011-07-01 16:49:23 -0400 |
commit | c282af49901679b63c139b8330b0aba027aa3b56 (patch) | |
tree | 22665116a1761b8580b407ff53a59cba047b60b8 /fs/dlm | |
parent | 55b3286d3dfd74a1daa5c902cb76575ba0187388 (diff) |
dlm: use vmalloc for hash tables
Allocate dlm hash tables in the vmalloc area to allow a greater
maximum size without restructuring of the hash table code.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm')
-rw-r--r-- | fs/dlm/lockspace.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c index 14cbf4099753..493d1e7161a4 100644 --- a/fs/dlm/lockspace.c +++ b/fs/dlm/lockspace.c | |||
@@ -463,7 +463,7 @@ static int new_lockspace(const char *name, int namelen, void **lockspace, | |||
463 | size = dlm_config.ci_rsbtbl_size; | 463 | size = dlm_config.ci_rsbtbl_size; |
464 | ls->ls_rsbtbl_size = size; | 464 | ls->ls_rsbtbl_size = size; |
465 | 465 | ||
466 | ls->ls_rsbtbl = kmalloc(sizeof(struct dlm_rsbtable) * size, GFP_NOFS); | 466 | ls->ls_rsbtbl = vmalloc(sizeof(struct dlm_rsbtable) * size); |
467 | if (!ls->ls_rsbtbl) | 467 | if (!ls->ls_rsbtbl) |
468 | goto out_lsfree; | 468 | goto out_lsfree; |
469 | for (i = 0; i < size; i++) { | 469 | for (i = 0; i < size; i++) { |
@@ -475,7 +475,7 @@ static int new_lockspace(const char *name, int namelen, void **lockspace, | |||
475 | size = dlm_config.ci_lkbtbl_size; | 475 | size = dlm_config.ci_lkbtbl_size; |
476 | ls->ls_lkbtbl_size = size; | 476 | ls->ls_lkbtbl_size = size; |
477 | 477 | ||
478 | ls->ls_lkbtbl = kmalloc(sizeof(struct dlm_lkbtable) * size, GFP_NOFS); | 478 | ls->ls_lkbtbl = vmalloc(sizeof(struct dlm_lkbtable) * size); |
479 | if (!ls->ls_lkbtbl) | 479 | if (!ls->ls_lkbtbl) |
480 | goto out_rsbfree; | 480 | goto out_rsbfree; |
481 | for (i = 0; i < size; i++) { | 481 | for (i = 0; i < size; i++) { |
@@ -487,7 +487,7 @@ static int new_lockspace(const char *name, int namelen, void **lockspace, | |||
487 | size = dlm_config.ci_dirtbl_size; | 487 | size = dlm_config.ci_dirtbl_size; |
488 | ls->ls_dirtbl_size = size; | 488 | ls->ls_dirtbl_size = size; |
489 | 489 | ||
490 | ls->ls_dirtbl = kmalloc(sizeof(struct dlm_dirtable) * size, GFP_NOFS); | 490 | ls->ls_dirtbl = vmalloc(sizeof(struct dlm_dirtable) * size); |
491 | if (!ls->ls_dirtbl) | 491 | if (!ls->ls_dirtbl) |
492 | goto out_lkbfree; | 492 | goto out_lkbfree; |
493 | for (i = 0; i < size; i++) { | 493 | for (i = 0; i < size; i++) { |
@@ -603,11 +603,11 @@ static int new_lockspace(const char *name, int namelen, void **lockspace, | |||
603 | spin_unlock(&lslist_lock); | 603 | spin_unlock(&lslist_lock); |
604 | kfree(ls->ls_recover_buf); | 604 | kfree(ls->ls_recover_buf); |
605 | out_dirfree: | 605 | out_dirfree: |
606 | kfree(ls->ls_dirtbl); | 606 | vfree(ls->ls_dirtbl); |
607 | out_lkbfree: | 607 | out_lkbfree: |
608 | kfree(ls->ls_lkbtbl); | 608 | vfree(ls->ls_lkbtbl); |
609 | out_rsbfree: | 609 | out_rsbfree: |
610 | kfree(ls->ls_rsbtbl); | 610 | vfree(ls->ls_rsbtbl); |
611 | out_lsfree: | 611 | out_lsfree: |
612 | if (do_unreg) | 612 | if (do_unreg) |
613 | kobject_put(&ls->ls_kobj); | 613 | kobject_put(&ls->ls_kobj); |
@@ -721,7 +721,7 @@ static int release_lockspace(struct dlm_ls *ls, int force) | |||
721 | */ | 721 | */ |
722 | 722 | ||
723 | dlm_dir_clear(ls); | 723 | dlm_dir_clear(ls); |
724 | kfree(ls->ls_dirtbl); | 724 | vfree(ls->ls_dirtbl); |
725 | 725 | ||
726 | /* | 726 | /* |
727 | * Free all lkb's on lkbtbl[] lists. | 727 | * Free all lkb's on lkbtbl[] lists. |
@@ -745,7 +745,7 @@ static int release_lockspace(struct dlm_ls *ls, int force) | |||
745 | } | 745 | } |
746 | dlm_astd_resume(); | 746 | dlm_astd_resume(); |
747 | 747 | ||
748 | kfree(ls->ls_lkbtbl); | 748 | vfree(ls->ls_lkbtbl); |
749 | 749 | ||
750 | /* | 750 | /* |
751 | * Free all rsb's on rsbtbl[] lists | 751 | * Free all rsb's on rsbtbl[] lists |
@@ -770,7 +770,7 @@ static int release_lockspace(struct dlm_ls *ls, int force) | |||
770 | } | 770 | } |
771 | } | 771 | } |
772 | 772 | ||
773 | kfree(ls->ls_rsbtbl); | 773 | vfree(ls->ls_rsbtbl); |
774 | 774 | ||
775 | /* | 775 | /* |
776 | * Free structures on any other lists | 776 | * Free structures on any other lists |