aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dlm/requestqueue.c
diff options
context:
space:
mode:
authorAlexander Aring <aahringo@redhat.com>2021-11-02 15:17:18 -0400
committerDavid Teigland <teigland@redhat.com>2021-11-02 14:39:20 -0500
commit3cb5977c5214c219b2859f926ed547480d53fdde (patch)
treef321ca0c0e1f397073f194180f7e8043cea747aa /fs/dlm/requestqueue.c
parent164d88abd7608e869b7617d5ff8893344fdda759 (diff)
downloadlinux-3cb5977c5214c219b2859f926ed547480d53fdde.tar.gz
fs: dlm: ls_count busy wait to event based wait
This patch changes the ls_count busy wait to use atomic counter values and wait_event() to wait until ls_count reach zero. It will slightly reduce the number of holding lslist_lock. At remove lockspace we need to retry the wait because it a lockspace get could interefere between wait_event() and holding the lock which deletes the lockspace list entry. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/requestqueue.c')
-rw-r--r--fs/dlm/requestqueue.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/dlm/requestqueue.c b/fs/dlm/requestqueue.c
index d0cf68570dcf6..ccb5307c21e90 100644
--- a/fs/dlm/requestqueue.c
+++ b/fs/dlm/requestqueue.c
@@ -127,7 +127,7 @@ static int purge_request(struct dlm_ls *ls, struct dlm_message *ms, int nodeid)
uint32_t type = ms->m_type;
/* the ls is being cleaned up and freed by release_lockspace */
- if (!ls->ls_count)
+ if (!atomic_read(&ls->ls_count))
return 1;
if (dlm_is_removed(ls, nodeid))