a47666eb76
There are some problems with the connections_lock. During my experiements I saw sometimes circular dependencies with sock_lock. The reason here might be code parts which runs nodeid2con() before or after sock_lock is acquired. Another issue are missing locks in for_conn() iteration. Maybe this works fine because for_conn() is running in a context where connection_hash cannot be manipulated by others anymore. However this patch changes the connection_hash to be protected by sleepable rcu. The hotpath function __find_con() is implemented lockless as it is only a reader of connection_hash and this hopefully fixes the circular locking dependencies. The iteration for_conn() will still call some sleepable functionality, that's why we use sleepable rcu in this case. This patch removes the kmemcache functionality as I think I need to make some free() functionality via call_rcu(). However allocation time isn't here an issue. The dlm_allow_con will not be protected by a lock anymore as I think it's enough to just set and flush workqueues afterwards. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
19 lines
529 B
Plaintext
19 lines
529 B
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
menuconfig DLM
|
|
tristate "Distributed Lock Manager (DLM)"
|
|
depends on INET
|
|
depends on SYSFS && CONFIGFS_FS && (IPV6 || IPV6=n)
|
|
select IP_SCTP
|
|
select SRCU
|
|
help
|
|
A general purpose distributed lock manager for kernel or userspace
|
|
applications.
|
|
|
|
config DLM_DEBUG
|
|
bool "DLM debugging"
|
|
depends on DLM
|
|
help
|
|
Under the debugfs mount point, the name of each lockspace will
|
|
appear as a file in the "dlm" directory. The output is the
|
|
list of resource and locks the local node knows about.
|