|
@@ -1986,7 +1986,15 @@ skip_lvb:
|
|
}
|
|
}
|
|
if (!bad) {
|
|
if (!bad) {
|
|
dlm_lock_get(newlock);
|
|
dlm_lock_get(newlock);
|
|
- list_add_tail(&newlock->list, queue);
|
|
|
|
|
|
+ if (mres->flags & DLM_MRES_RECOVERY &&
|
|
|
|
+ ml->list == DLM_CONVERTING_LIST &&
|
|
|
|
+ newlock->ml.type >
|
|
|
|
+ newlock->ml.convert_type) {
|
|
|
|
+ /* newlock is doing downconvert, add it to the
|
|
|
|
+ * head of converting list */
|
|
|
|
+ list_add(&newlock->list, queue);
|
|
|
|
+ } else
|
|
|
|
+ list_add_tail(&newlock->list, queue);
|
|
mlog(0, "%s:%.*s: added lock for node %u, "
|
|
mlog(0, "%s:%.*s: added lock for node %u, "
|
|
"setting refmap bit\n", dlm->name,
|
|
"setting refmap bit\n", dlm->name,
|
|
res->lockname.len, res->lockname.name, ml->node);
|
|
res->lockname.len, res->lockname.name, ml->node);
|