memory.c (03ab8e6297acd1bc0eedaa050e2a1635c576fd11) | memory.c (61bed0baa4dba17dd06cdfe20481a580718d6c7c) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/****************************************************************************** 3******************************************************************************* 4** 5** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. 6** Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. 7** 8** 9******************************************************************************* 10******************************************************************************/ 11 12#include "dlm_internal.h" 13#include "midcomms.h" 14#include "lowcomms.h" 15#include "config.h" 16#include "memory.h" | 1// SPDX-License-Identifier: GPL-2.0-only 2/****************************************************************************** 3******************************************************************************* 4** 5** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. 6** Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. 7** 8** 9******************************************************************************* 10******************************************************************************/ 11 12#include "dlm_internal.h" 13#include "midcomms.h" 14#include "lowcomms.h" 15#include "config.h" 16#include "memory.h" |
17#include "ast.h" |
|
17 18static struct kmem_cache *writequeue_cache; 19static struct kmem_cache *mhandle_cache; 20static struct kmem_cache *msg_cache; 21static struct kmem_cache *lkb_cache; 22static struct kmem_cache *rsb_cache; | 18 19static struct kmem_cache *writequeue_cache; 20static struct kmem_cache *mhandle_cache; 21static struct kmem_cache *msg_cache; 22static struct kmem_cache *lkb_cache; 23static struct kmem_cache *rsb_cache; |
24static struct kmem_cache *cb_cache; |
|
23 24 25int __init dlm_memory_init(void) 26{ 27 writequeue_cache = dlm_lowcomms_writequeue_cache_create(); 28 if (!writequeue_cache) 29 goto out; 30 --- 10 unchanged lines hidden (view full) --- 41 if (!msg_cache) 42 goto msg; 43 44 rsb_cache = kmem_cache_create("dlm_rsb", sizeof(struct dlm_rsb), 45 __alignof__(struct dlm_rsb), 0, NULL); 46 if (!rsb_cache) 47 goto rsb; 48 | 25 26 27int __init dlm_memory_init(void) 28{ 29 writequeue_cache = dlm_lowcomms_writequeue_cache_create(); 30 if (!writequeue_cache) 31 goto out; 32 --- 10 unchanged lines hidden (view full) --- 43 if (!msg_cache) 44 goto msg; 45 46 rsb_cache = kmem_cache_create("dlm_rsb", sizeof(struct dlm_rsb), 47 __alignof__(struct dlm_rsb), 0, NULL); 48 if (!rsb_cache) 49 goto rsb; 50 |
51 cb_cache = kmem_cache_create("dlm_cb", sizeof(struct dlm_callback), 52 __alignof__(struct dlm_callback), 0, 53 NULL); 54 if (!rsb_cache) 55 goto cb; 56 |
|
49 return 0; 50 | 57 return 0; 58 |
59cb: 60 kmem_cache_destroy(rsb_cache); |
|
51rsb: 52 kmem_cache_destroy(msg_cache); 53msg: 54 kmem_cache_destroy(lkb_cache); 55lkb: 56 kmem_cache_destroy(mhandle_cache); 57mhandle: 58 kmem_cache_destroy(writequeue_cache); 59out: 60 return -ENOMEM; 61} 62 63void dlm_memory_exit(void) 64{ 65 kmem_cache_destroy(writequeue_cache); 66 kmem_cache_destroy(mhandle_cache); 67 kmem_cache_destroy(msg_cache); 68 kmem_cache_destroy(lkb_cache); 69 kmem_cache_destroy(rsb_cache); | 61rsb: 62 kmem_cache_destroy(msg_cache); 63msg: 64 kmem_cache_destroy(lkb_cache); 65lkb: 66 kmem_cache_destroy(mhandle_cache); 67mhandle: 68 kmem_cache_destroy(writequeue_cache); 69out: 70 return -ENOMEM; 71} 72 73void dlm_memory_exit(void) 74{ 75 kmem_cache_destroy(writequeue_cache); 76 kmem_cache_destroy(mhandle_cache); 77 kmem_cache_destroy(msg_cache); 78 kmem_cache_destroy(lkb_cache); 79 kmem_cache_destroy(rsb_cache); |
80 kmem_cache_destroy(cb_cache); |
|
70} 71 72char *dlm_allocate_lvb(struct dlm_ls *ls) 73{ 74 char *p; 75 76 p = kzalloc(ls->ls_lvblen, GFP_NOFS); 77 return p; --- 32 unchanged lines hidden (view full) --- 110 if (lkb->lkb_flags & DLM_IFL_USER) { 111 struct dlm_user_args *ua; 112 ua = lkb->lkb_ua; 113 if (ua) { 114 kfree(ua->lksb.sb_lvbptr); 115 kfree(ua); 116 } 117 } | 81} 82 83char *dlm_allocate_lvb(struct dlm_ls *ls) 84{ 85 char *p; 86 87 p = kzalloc(ls->ls_lvblen, GFP_NOFS); 88 return p; --- 32 unchanged lines hidden (view full) --- 121 if (lkb->lkb_flags & DLM_IFL_USER) { 122 struct dlm_user_args *ua; 123 ua = lkb->lkb_ua; 124 if (ua) { 125 kfree(ua->lksb.sb_lvbptr); 126 kfree(ua); 127 } 128 } |
129 130 /* drop references if they are set */ 131 dlm_callback_set_last_ptr(&lkb->lkb_last_cast, NULL); 132 dlm_callback_set_last_ptr(&lkb->lkb_last_cb, NULL); 133 |
|
118 kmem_cache_free(lkb_cache, lkb); 119} 120 121struct dlm_mhandle *dlm_allocate_mhandle(void) 122{ 123 return kmem_cache_alloc(mhandle_cache, GFP_NOFS); 124} 125 --- 16 unchanged lines hidden (view full) --- 142{ 143 return kmem_cache_alloc(msg_cache, allocation); 144} 145 146void dlm_free_msg(struct dlm_msg *msg) 147{ 148 kmem_cache_free(msg_cache, msg); 149} | 134 kmem_cache_free(lkb_cache, lkb); 135} 136 137struct dlm_mhandle *dlm_allocate_mhandle(void) 138{ 139 return kmem_cache_alloc(mhandle_cache, GFP_NOFS); 140} 141 --- 16 unchanged lines hidden (view full) --- 158{ 159 return kmem_cache_alloc(msg_cache, allocation); 160} 161 162void dlm_free_msg(struct dlm_msg *msg) 163{ 164 kmem_cache_free(msg_cache, msg); 165} |
166 167struct dlm_callback *dlm_allocate_cb(void) 168{ 169 return kmem_cache_alloc(cb_cache, GFP_ATOMIC); 170} 171 172void dlm_free_cb(struct dlm_callback *cb) 173{ 174 kmem_cache_free(cb_cache, cb); 175} |
|