mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 23:51:39 +00:00
dlm: use RSB_HASHED to avoid lookup twice
Since commit 01fdeca1cc
("dlm: use rcu to avoid an extra rsb struct
lookup") _dlm_master_lookup() is called under rcu lock that prevents
that the rsb structure is being freed. There was a missing change to
avoid an additional lookup and just check that the rsb is still part of
the ls_rsbtbl structure. This patch is doing such check instead of
lookup the rsb structure again.
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
parent
94e180d625
commit
98ff7d95d9
@ -1308,11 +1308,11 @@ static int _dlm_master_lookup(struct dlm_ls *ls, int from_nodeid, const char *na
|
||||
}
|
||||
|
||||
do_inactive:
|
||||
/* unlikely path - relookup under write */
|
||||
/* unlikely path - check if still part of ls_rsbtbl */
|
||||
write_lock_bh(&ls->ls_rsbtbl_lock);
|
||||
|
||||
error = dlm_search_rsb_tree(&ls->ls_rsbtbl, name, len, &r);
|
||||
if (!error) {
|
||||
/* see comment in find_rsb_dir */
|
||||
if (rsb_flag(r, RSB_HASHED)) {
|
||||
if (!rsb_flag(r, RSB_INACTIVE)) {
|
||||
write_unlock_bh(&ls->ls_rsbtbl_lock);
|
||||
/* something as changed, very unlikely but
|
||||
|
Loading…
Reference in New Issue
Block a user