dlm: fix QUECVT when convert queue is empty
The QUECVT flag should not prevent conversions from being granted immediately when the convert queue is empty. Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
Родитель
dd775ae254
Коммит
53ad1c980d
|
@ -1736,6 +1736,18 @@ static int _can_be_granted(struct dlm_rsb *r, struct dlm_lkb *lkb, int now)
|
|||
if (now && conv && !(lkb->lkb_exflags & DLM_LKF_QUECVT))
|
||||
return 1;
|
||||
|
||||
/*
|
||||
* Even if the convert is compat with all granted locks,
|
||||
* QUECVT forces it behind other locks on the convert queue.
|
||||
*/
|
||||
|
||||
if (now && conv && (lkb->lkb_exflags & DLM_LKF_QUECVT)) {
|
||||
if (list_empty(&r->res_convertqueue))
|
||||
return 1;
|
||||
else
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* The NOORDER flag is set to avoid the standard vms rules on grant
|
||||
* order.
|
||||
|
|
Загрузка…
Ссылка в новой задаче