aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dlm/lockspace.c
diff options
context:
space:
mode:
authorBryn M. Reeves <bmr@redhat.com>2011-07-01 16:49:23 -0400
committerDavid Teigland <teigland@redhat.com>2011-07-01 16:49:23 -0400
commitc282af49901679b63c139b8330b0aba027aa3b56 (patch)
tree22665116a1761b8580b407ff53a59cba047b60b8 /fs/dlm/lockspace.c
parent55b3286d3dfd74a1daa5c902cb76575ba0187388 (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/lockspace.c')
-rw-r--r--fs/dlm/lockspace.c18
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