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}