dlm for 6.10

- Fix a long standing race between the unlock callback for the last lkb
struct, and removing the rsb that became unused after the final unlock.
This could lead different nodes to inconsistent info about the rsb master
node.

- Remove unnecessary refcounting on callback structs, returning to the way
things were done in the past.

- Do message processing in softirq context.  This allows dlm messages to
be cleared more quickly and efficiently, reducing long lists of incomplete
requests.  A future change to run callbacks directly from this context
will make this more effective.

- The softirq message processing involved a number of patches changing
mutexes to spinlocks and rwlocks, and a fair amount of code re-org in
preparation.

- Use an rhashtable for rsb structs, rather than our old internal hash
table implementation.  This also required some re-org of lists and locks
preparation for the change.

- Drop the dlm_scand kthread, and use timers to clear unused rsb structs.
Scanning all rsb's periodically was a lot of wasted work.

- Fix recent regression in logic for copying LVB data in user space lock
requests.
dlm: return -ENOMEM if ls_recover_buf fails

This patch fixes to return -ENOMEM in case of an allocation failure that
was forgotten to change in commit 6c648035cbe7 ("dlm: switch to use
rhashtable for rsbs").

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202404200536.jGi6052v-lkp@intel.com/
Fixes: 6c648035cbe7 ("dlm: switch to use rhashtable for rsbs")
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
1 file changed