diff options
author | Alexander Aring <aahringo@redhat.com> | 2024-04-15 14:39:40 -0400 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2024-04-16 14:34:39 -0500 |
commit | 6644925abf056030cd9efc73fc05ea5a5df4f59f (patch) | |
tree | 5eb323cb2875a5257a6bec601ca7fa022ba9d5c1 /fs/dlm/recover.c | |
parent | 6c648035cbe75d78836f6d7d2fdd9d996048a66b (diff) |
dlm: do not use ref counts for rsb in the toss state
In the past we had problems when an rsb had a reference counter greater
than one while in the toss state. An rsb in the toss state is not
actively used for locking, and should not have any other references
apart from the single ref keeping it on the rsb hash. Shift to freeing
rsb's directly rather than using kref_put to free them, since the ref
counting is not meant to be used in this state. Add warnings if ref
counting is seen while an rsb is in the toss state.
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/recover.c')
-rw-r--r-- | fs/dlm/recover.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/dlm/recover.c b/fs/dlm/recover.c index c21ef115123b..d43189532b14 100644 --- a/fs/dlm/recover.c +++ b/fs/dlm/recover.c @@ -889,7 +889,7 @@ void dlm_clear_toss(struct dlm_ls *ls) list_del(&r->res_rsbs_list); rhashtable_remove_fast(&ls->ls_rsbtbl, &r->res_node, dlm_rhash_rsb_params); - dlm_free_rsb(r); + free_toss_rsb(r); count++; } spin_unlock_bh(&ls->ls_rsbtbl_lock); |