linux/fs/dlm
Alexander Aring 2776635edc dlm: fix remove member after close call
The idea of commit 63e711b081 ("fs: dlm: create midcomms nodes when
configure") is to set the midcomms node lifetime when a node joins or
leaves the cluster. Currently we can hit the following warning:

[10844.611495] ------------[ cut here ]------------
[10844.615913] WARNING: CPU: 4 PID: 84304 at fs/dlm/midcomms.c:1263
dlm_midcomms_remove_member+0x13f/0x180 [dlm]

or running in a state where we hit a midcomms node usage count in a
negative value:

[  260.830782] node 2 users dec count -1

The first warning happens when the a specific node does not exists and
it was probably removed but dlm_midcomms_close() which is called when a
node leaves the cluster. The second kernel log message is probably in a
case when dlm_midcomms_addr() is called when a joined the cluster but
due fencing a node leaved the cluster without getting removed from the
lockspace. If the node joins the cluster and it was removed from the
cluster due fencing the first call is to remove the node from lockspaces
triggered by the user space. In both cases if the node wasn't found or
the user count is zero, we should ignore any additional midcomms handling
of dlm_midcomms_remove_member().

Fixes: 63e711b081 ("fs: dlm: create midcomms nodes when configure")
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
2023-10-12 15:20:37 -05:00
..
ast.c fs: dlm: move dlm_purge_lkb_callbacks to user module 2023-06-14 10:17:33 -05:00
ast.h fs: dlm: move dlm_purge_lkb_callbacks to user module 2023-06-14 10:17:33 -05:00
config.c fs: dlm: create midcomms nodes when configure 2023-08-10 10:33:03 -05:00
config.h fs: dlm: remove deprecated code parts 2023-03-06 15:49:07 -06:00
debug_fs.c fs: dlm: Remove some useless memset() 2023-10-12 15:20:17 -05:00
dir.c fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
dir.h fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
dlm_internal.h fs: dlm: debugfs for queued callbacks 2023-08-10 10:33:03 -05:00
Kconfig fs: dlm: remove deprecated code parts 2023-03-06 15:49:07 -06:00
lock.c fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
lock.h fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
lockspace.c fs: dlm: revert check required context while close 2023-06-14 10:17:33 -05:00
lockspace.h fs: dlm: revert check required context while close 2023-06-14 10:17:33 -05:00
lowcomms.c fs: dlm: remove unused processed_nodes 2023-08-10 10:33:03 -05:00
lowcomms.h fs: dlm: remove socket shutdown handling 2022-11-21 09:45:49 -06:00
lvb_table.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 193 2019-05-30 11:29:21 -07:00
main.c fs: dlm: unregister memory at the very last 2023-06-14 10:17:33 -05:00
Makefile fs: dlm: remove deprecated code parts 2023-03-06 15:49:07 -06:00
member.c fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
member.h fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
memory.c fs: dlm: change dflags to use atomic bits 2023-03-06 15:49:07 -06:00
memory.h fs: dlm: allow different allocation context per _create_message 2022-11-08 12:59:41 -06:00
midcomms.c dlm: fix remove member after close call 2023-10-12 15:20:37 -05:00
midcomms.h fs: dlm: create midcomms nodes when configure 2023-08-10 10:33:03 -05:00
plock.c dlm: fix plock lookup when using multiple lockspaces 2023-08-25 10:31:39 -05:00
rcom.c fs: dlm: don't use RCOM_NAMES for version detection 2023-08-10 10:33:03 -05:00
rcom.h fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
recover.c fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
recover.h fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
recoverd.c fs: dlm: get recovery sequence number as parameter 2023-08-10 10:33:03 -05:00
recoverd.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 193 2019-05-30 11:29:21 -07:00
requestqueue.c fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
requestqueue.h fs: dlm: constify receive buffer 2023-08-10 10:33:03 -05:00
user.c fs: dlm: move dlm_purge_lkb_callbacks to user module 2023-06-14 10:17:33 -05:00
user.h fs: dlm: move dlm_purge_lkb_callbacks to user module 2023-06-14 10:17:33 -05:00
util.c dlm: use __le types for dlm messages 2022-04-06 14:02:37 -05:00
util.h dlm: use __le types for dlm messages 2022-04-06 14:02:37 -05:00