Bug 148861
| Summary: | converting locks can deadlock | ||
|---|---|---|---|
| Product: | [Retired] Red Hat Cluster Suite | Reporter: | David Teigland <teigland> |
| Component: | dlm | Assignee: | David Teigland <teigland> |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Cluster QE <mspqa-list> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 4 | CC: | cluster-maint |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2005-02-22 06:55:43 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
Changes by: teigland 2005-02-22 06:51:43
Modified files:
dlm-kernel/src : locking.c
Log message:
Recognize and resolve a second form of conversion deadlock.
When it happens, you'll see the following in dlm_locks output:
grant queue: empty
convert queue: NL->EX, PR->EX
Fixes bz 148861
|
From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041111 Firefox/1.0 Description of problem: We handle "normal" conversion deadlocks fine, e.g. two locks on the conversion queue doing PR->EX. There's another kind of conversion deadlock we don't resolve, though, that arises from the granting rules (that we copy from VMS) that state that locks on the conversion queue are granted in order. e.g. granted queue: empty convert queue: NL->EX (first lock) PR->EX (second lock) The first lock can't be granted because of the granted mode of the second lock and the second lock can't be granted because it's not at the head of the queue. We'll resolve this the same way we resolve other conversion deadlocks, by demoting the granted mode of the second lock to NL. (Prior to making can_be_granted() conform to VMS rules, we had a function that handled this case, but slightly differently.) Version-Release number of selected component (if applicable): How reproducible: Didn't try Steps to Reproduce: 1. run make_panic 2. 3. Additional info: