Please don't reply to lustre-devel. Instead, comment in Bugzilla by using the
following link:
https://bugzilla.lustre.org/show_bug.cgi?id=10902
What |Removed |Added
----------------------------------------------------------------------------
Attachment #9248 is|0 |1
obsolete| |
Created an attachment (id=9273)
Please don't reply to lustre-devel. Instead, comment in Bugzilla by using the
following link:
--> (https://bugzilla.lustre.org/attachment.cgi?id=9273&action=view)
code for PLAIN/IBITS granted list improvement (revision 4)
> 1. Oleg, your optimization above does not look very helpful.
> Once a lock with a compatible mode occurs, we skip all the
> locks of this mode by mode skip list -- locks are grouped by
> mode. As we do not walk through locks with compatible modes,
> your optimization works for the very first lock in every compatible
> mode group only. I do not think we need an optimization that
> works for 1 lock per mode group of locks.
well, i didn't change it in this patch, need Oleg's feedback of your opinion.
> 2. we should probably check in search_grant_lock() if @lock is
> not plain nor inodebits type, and LBUG if so.
included in this patch.
> 3. when we call ldlm_granted_list_add_lock(), we do not call
> ldlm_resource_add_lock() anymore. Thus ldlm_granted_list_add_lock()
> should print the same debug info as ldlm_resource_add_lock() does.
> It also should handle destroyed locks in the same way.
included in this patch.
> 4. ldlm_lock_convert()
> if the lock is in the middle of the mode and policy groups,
> @mark_lock will be NULL and the lock will be inserted later
> to the end of the granted list in ldlm_granted_list_add_lock(),
> what is wrong.
when lock is in the middle of the mode/policy group, code in lines(1552-1554)
of
ldlm_lock.c will be hit
1548 if ((join & LDLM_MODE_JOIN_LEFT) ||
1549 (join & LDLM_POLICY_JOIN_LEFT))
1550 mark_lock = list_entry(lock->l_res_link.prev,
1551 struct ldlm_lock,
l_res_link);
1552 else if (lock->l_res_link.next != &res->lr_granted)
1553 mark_lock = list_entry(lock->l_res_link.next,
1554 struct ldlm_lock,
l_res_link);
so the mark_lock will not be NULL in this case.
_______________________________________________
Lustre-devel mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-devel