@@ -1406,7 +1406,7 @@ static int add_to_waiters(struct dlm_lkb *lkb, int mstype, int to_nodeid)
1406
1406
struct dlm_ls * ls = lkb -> lkb_resource -> res_ls ;
1407
1407
int error = 0 ;
1408
1408
1409
- mutex_lock (& ls -> ls_waiters_mutex );
1409
+ spin_lock (& ls -> ls_waiters_lock );
1410
1410
1411
1411
if (is_overlap_unlock (lkb ) ||
1412
1412
(is_overlap_cancel (lkb ) && (mstype == DLM_MSG_CANCEL ))) {
@@ -1449,7 +1449,7 @@ static int add_to_waiters(struct dlm_lkb *lkb, int mstype, int to_nodeid)
1449
1449
log_error (ls , "addwait error %x %d flags %x %d %d %s" ,
1450
1450
lkb -> lkb_id , error , dlm_iflags_val (lkb ), mstype ,
1451
1451
lkb -> lkb_wait_type , lkb -> lkb_resource -> res_name );
1452
- mutex_unlock (& ls -> ls_waiters_mutex );
1452
+ spin_unlock (& ls -> ls_waiters_lock );
1453
1453
return error ;
1454
1454
}
1455
1455
@@ -1549,9 +1549,9 @@ static int remove_from_waiters(struct dlm_lkb *lkb, int mstype)
1549
1549
struct dlm_ls * ls = lkb -> lkb_resource -> res_ls ;
1550
1550
int error ;
1551
1551
1552
- mutex_lock (& ls -> ls_waiters_mutex );
1552
+ spin_lock (& ls -> ls_waiters_lock );
1553
1553
error = _remove_from_waiters (lkb , mstype , NULL );
1554
- mutex_unlock (& ls -> ls_waiters_mutex );
1554
+ spin_unlock (& ls -> ls_waiters_lock );
1555
1555
return error ;
1556
1556
}
1557
1557
@@ -1569,13 +1569,13 @@ static int remove_from_waiters_ms(struct dlm_lkb *lkb,
1569
1569
int error ;
1570
1570
1571
1571
if (!local )
1572
- mutex_lock (& ls -> ls_waiters_mutex );
1572
+ spin_lock (& ls -> ls_waiters_lock );
1573
1573
else
1574
1574
WARN_ON_ONCE (!rwsem_is_locked (& ls -> ls_in_recovery ) ||
1575
1575
!dlm_locking_stopped (ls ));
1576
1576
error = _remove_from_waiters (lkb , le32_to_cpu (ms -> m_type ), ms );
1577
1577
if (!local )
1578
- mutex_unlock (& ls -> ls_waiters_mutex );
1578
+ spin_unlock (& ls -> ls_waiters_lock );
1579
1579
return error ;
1580
1580
}
1581
1581
@@ -4993,15 +4993,15 @@ static struct dlm_lkb *find_resend_waiter(struct dlm_ls *ls)
4993
4993
{
4994
4994
struct dlm_lkb * lkb = NULL , * iter ;
4995
4995
4996
- mutex_lock (& ls -> ls_waiters_mutex );
4996
+ spin_lock (& ls -> ls_waiters_lock );
4997
4997
list_for_each_entry (iter , & ls -> ls_waiters , lkb_wait_reply ) {
4998
4998
if (test_bit (DLM_IFL_RESEND_BIT , & iter -> lkb_iflags )) {
4999
4999
hold_lkb (iter );
5000
5000
lkb = iter ;
5001
5001
break ;
5002
5002
}
5003
5003
}
5004
- mutex_unlock (& ls -> ls_waiters_mutex );
5004
+ spin_unlock (& ls -> ls_waiters_lock );
5005
5005
5006
5006
return lkb ;
5007
5007
}
@@ -5101,9 +5101,9 @@ int dlm_recover_waiters_post(struct dlm_ls *ls)
5101
5101
}
5102
5102
5103
5103
/* Forcibly remove from waiters list */
5104
- mutex_lock (& ls -> ls_waiters_mutex );
5104
+ spin_lock (& ls -> ls_waiters_lock );
5105
5105
list_del_init (& lkb -> lkb_wait_reply );
5106
- mutex_unlock (& ls -> ls_waiters_mutex );
5106
+ spin_unlock (& ls -> ls_waiters_lock );
5107
5107
5108
5108
/*
5109
5109
* The lkb is now clear of all prior waiters state and can be
0 commit comments