diff options
author | Alexander Aring <aahringo@redhat.com> | 2021-05-21 15:08:42 -0400 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2021-05-25 09:22:20 -0500 |
commit | 8f2dc78dbc2010b497bb58e0460cb44c678a3c5b (patch) | |
tree | 63b4528cf5521cfbf0c5aa085693170223afc634 /fs/dlm/lowcomms.h | |
parent | a070a91cf1402b5328d3517d1fccbdeec58d3f2d (diff) | |
download | lwn-8f2dc78dbc2010b497bb58e0460cb44c678a3c5b.tar.gz lwn-8f2dc78dbc2010b497bb58e0460cb44c678a3c5b.zip |
fs: dlm: make buffer handling per msg
This patch makes the void pointer handle for lowcomms functionality per
message and not per page allocation entry. A refcount handling for the
handle was added to keep the message alive until the user doesn't need
it anymore.
There exists now a per message callback which will be called when
allocating a new buffer. This callback will be guaranteed to be called
according the order of the sending buffer, which can be used that the
caller increments a sequence number for the dlm message handle.
For transition process we cast the dlm_mhandle to dlm_msg and vice versa
until the midcomms layer will implement a specific dlm_mhandle structure.
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/lowcomms.h')
-rw-r--r-- | fs/dlm/lowcomms.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/dlm/lowcomms.h b/fs/dlm/lowcomms.h index 48bbc4e18761..cdb8f066f0d8 100644 --- a/fs/dlm/lowcomms.h +++ b/fs/dlm/lowcomms.h @@ -22,8 +22,11 @@ void dlm_lowcomms_shutdown(void); void dlm_lowcomms_stop(void); void dlm_lowcomms_exit(void); int dlm_lowcomms_close(int nodeid); -void *dlm_lowcomms_get_buffer(int nodeid, int len, gfp_t allocation, char **ppc); -void dlm_lowcomms_commit_buffer(void *mh); +struct dlm_msg *dlm_lowcomms_new_msg(int nodeid, int len, gfp_t allocation, + char **ppc, void (*cb)(struct dlm_mhandle *mh), + struct dlm_mhandle *mh); +void dlm_lowcomms_commit_msg(struct dlm_msg *msg); +void dlm_lowcomms_put_msg(struct dlm_msg *msg); int dlm_lowcomms_connect_node(int nodeid); int dlm_lowcomms_nodes_set_mark(int nodeid, unsigned int mark); int dlm_lowcomms_addr(int nodeid, struct sockaddr_storage *addr, int len); |