diff options
author | Sunil Mushran <sunil.mushran@oracle.com> | 2009-02-26 18:00:40 -0500 |
---|---|---|
committer | Mark Fasheh <mfasheh@suse.com> | 2009-04-03 14:39:18 -0400 |
commit | e2b66ddcce922529e058cf74d839c4c49c8379a1 (patch) | |
tree | d27e078e59c79624a2f7a1317c50934e543489f1 /fs/ocfs2/dlm/dlmdomain.c | |
parent | c2cd4a44333034203cb198915e2b75c3227d41bf (diff) |
ocfs2/dlm: Create and destroy the dlm->master_hash
This patch adds code to create and destroy the dlm->master_hash.
Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Diffstat (limited to 'fs/ocfs2/dlm/dlmdomain.c')
-rw-r--r-- | fs/ocfs2/dlm/dlmdomain.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c index d8d578f45613..45315046daf5 100644 --- a/fs/ocfs2/dlm/dlmdomain.c +++ b/fs/ocfs2/dlm/dlmdomain.c | |||
@@ -304,6 +304,9 @@ static void dlm_free_ctxt_mem(struct dlm_ctxt *dlm) | |||
304 | if (dlm->lockres_hash) | 304 | if (dlm->lockres_hash) |
305 | dlm_free_pagevec((void **)dlm->lockres_hash, DLM_HASH_PAGES); | 305 | dlm_free_pagevec((void **)dlm->lockres_hash, DLM_HASH_PAGES); |
306 | 306 | ||
307 | if (dlm->master_hash) | ||
308 | dlm_free_pagevec((void **)dlm->master_hash, DLM_HASH_PAGES); | ||
309 | |||
307 | if (dlm->name) | 310 | if (dlm->name) |
308 | kfree(dlm->name); | 311 | kfree(dlm->name); |
309 | 312 | ||
@@ -1534,12 +1537,27 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain, | |||
1534 | for (i = 0; i < DLM_HASH_BUCKETS; i++) | 1537 | for (i = 0; i < DLM_HASH_BUCKETS; i++) |
1535 | INIT_HLIST_HEAD(dlm_lockres_hash(dlm, i)); | 1538 | INIT_HLIST_HEAD(dlm_lockres_hash(dlm, i)); |
1536 | 1539 | ||
1540 | dlm->master_hash = (struct hlist_head **) | ||
1541 | dlm_alloc_pagevec(DLM_HASH_PAGES); | ||
1542 | if (!dlm->master_hash) { | ||
1543 | mlog_errno(-ENOMEM); | ||
1544 | dlm_free_pagevec((void **)dlm->lockres_hash, DLM_HASH_PAGES); | ||
1545 | kfree(dlm->name); | ||
1546 | kfree(dlm); | ||
1547 | dlm = NULL; | ||
1548 | goto leave; | ||
1549 | } | ||
1550 | |||
1551 | for (i = 0; i < DLM_HASH_BUCKETS; i++) | ||
1552 | INIT_HLIST_HEAD(dlm_master_hash(dlm, i)); | ||
1553 | |||
1537 | strcpy(dlm->name, domain); | 1554 | strcpy(dlm->name, domain); |
1538 | dlm->key = key; | 1555 | dlm->key = key; |
1539 | dlm->node_num = o2nm_this_node(); | 1556 | dlm->node_num = o2nm_this_node(); |
1540 | 1557 | ||
1541 | ret = dlm_create_debugfs_subroot(dlm); | 1558 | ret = dlm_create_debugfs_subroot(dlm); |
1542 | if (ret < 0) { | 1559 | if (ret < 0) { |
1560 | dlm_free_pagevec((void **)dlm->master_hash, DLM_HASH_PAGES); | ||
1543 | dlm_free_pagevec((void **)dlm->lockres_hash, DLM_HASH_PAGES); | 1561 | dlm_free_pagevec((void **)dlm->lockres_hash, DLM_HASH_PAGES); |
1544 | kfree(dlm->name); | 1562 | kfree(dlm->name); |
1545 | kfree(dlm); | 1563 | kfree(dlm); |