diff options
author | Alexander Aring <aahringo@redhat.com> | 2021-11-30 22:47:20 +0300 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2021-12-07 21:42:26 +0300 |
commit | e4dc81ed5a8069b8ae56116058ebbad77ff559ec (patch) | |
tree | ad2ceb088783ae41b0d8977222c76fc6413354e1 /fs/dlm/lowcomms.c | |
parent | 3af2326ca0a13cf84aeb75e001e757ff3cefeae9 (diff) | |
download | linux-e4dc81ed5a8069b8ae56116058ebbad77ff559ec.tar.xz |
fs: dlm: memory cache for lowcomms hotpath
This patch introduces a kmem cache for dlm_msg handles which are used
always if dlm sends a message out. Even if their are covered by midcomms
layer or not.
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/lowcomms.c')
-rw-r--r-- | fs/dlm/lowcomms.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index 300f44c5d132..23a1ff690725 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c @@ -204,6 +204,11 @@ struct kmem_cache *dlm_lowcomms_writequeue_cache_create(void) 0, 0, writequeue_entry_ctor); } +struct kmem_cache *dlm_lowcomms_msg_cache_create(void) +{ + return kmem_cache_create("dlm_msg", sizeof(struct dlm_msg), 0, 0, NULL); +} + /* need to held writequeue_lock */ static struct writequeue_entry *con_next_wq(struct connection *con) { @@ -750,7 +755,7 @@ static void dlm_msg_release(struct kref *kref) struct dlm_msg *msg = container_of(kref, struct dlm_msg, ref); kref_put(&msg->entry->ref, dlm_page_release); - kfree(msg); + dlm_free_msg(msg); } static void free_entry(struct writequeue_entry *e) @@ -1259,7 +1264,7 @@ static struct dlm_msg *dlm_lowcomms_new_msg_con(struct connection *con, int len, struct writequeue_entry *e; struct dlm_msg *msg; - msg = kzalloc(sizeof(*msg), allocation); + msg = dlm_allocate_msg(allocation); if (!msg) return NULL; @@ -1267,10 +1272,12 @@ static struct dlm_msg *dlm_lowcomms_new_msg_con(struct connection *con, int len, e = new_wq_entry(con, len, ppc, cb, data); if (!e) { - kfree(msg); + dlm_free_msg(msg); return NULL; } + msg->retransmit = false; + msg->orig_msg = NULL; msg->ppc = *ppc; msg->len = len; msg->entry = e; |