mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
This patch will introducde a queue implementation for callbacks by using the Linux lists. The current callback queue handling is implemented by a static limit of 6 entries, see DLM_CALLBACKS_SIZE. The sequence number inside the callback structure was used to see if the entries inside the static entry is valid or not. We don't need any sequence numbers anymore with a dynamic datastructure with grows and shrinks during runtime to offer such functionality. We assume that every callback will be delivered to the DLM user if once queued. Therefore the callback flag DLM_CB_SKIP was dropped and the check for skipping bast was moved before worker handling and not skip while the callback worker executes. This will reduce unnecessary queues of the callback worker. All last callback saves are pointers now and don't need to copied over. There is a reference counter for callback structures which will care about to free the callback structures at the right time if they are not referenced anymore. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
34 lines
1.3 KiB
C
34 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/******************************************************************************
|
|
*******************************************************************************
|
|
**
|
|
** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
|
** Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
|
|
**
|
|
**
|
|
*******************************************************************************
|
|
******************************************************************************/
|
|
|
|
#ifndef __MEMORY_DOT_H__
|
|
#define __MEMORY_DOT_H__
|
|
|
|
int dlm_memory_init(void);
|
|
void dlm_memory_exit(void);
|
|
struct dlm_rsb *dlm_allocate_rsb(struct dlm_ls *ls);
|
|
void dlm_free_rsb(struct dlm_rsb *r);
|
|
struct dlm_lkb *dlm_allocate_lkb(struct dlm_ls *ls);
|
|
void dlm_free_lkb(struct dlm_lkb *l);
|
|
char *dlm_allocate_lvb(struct dlm_ls *ls);
|
|
void dlm_free_lvb(char *l);
|
|
struct dlm_mhandle *dlm_allocate_mhandle(void);
|
|
void dlm_free_mhandle(struct dlm_mhandle *mhandle);
|
|
struct writequeue_entry *dlm_allocate_writequeue(void);
|
|
void dlm_free_writequeue(struct writequeue_entry *writequeue);
|
|
struct dlm_msg *dlm_allocate_msg(gfp_t allocation);
|
|
void dlm_free_msg(struct dlm_msg *msg);
|
|
struct dlm_callback *dlm_allocate_cb(void);
|
|
void dlm_free_cb(struct dlm_callback *cb);
|
|
|
|
#endif /* __MEMORY_DOT_H__ */
|
|
|