Messages in this thread | | | Subject | Re: [PATCH v2 1/2] locking: Implement an algorithm choice for Wound-Wait mutexes | From | Thomas Hellstrom <> | Date | Thu, 14 Jun 2018 15:43:04 +0200 |
| |
On 06/14/2018 03:29 PM, Matthew Wilcox wrote: > On Thu, Jun 14, 2018 at 01:54:15PM +0200, Thomas Hellstrom wrote: >> On 06/14/2018 01:36 PM, Peter Zijlstra wrote: >>> Currently you don't allow mixing WD and WW contexts (which is not >>> immediately obvious from the above code), and the above hard relies on >>> that. Are there sensible use cases for mixing them? IOW will your >>> current restriction stand without hassle? >> Contexts _must_ agree on the algorithm used to resolve deadlocks. With >> Wait-Die, for example, older transactions will wait if a lock is held by a >> younger transaction and with Wound-Wait, younger transactions will wait if a >> lock is held by an older transaction so there is no way of mixing them. > Maybe the compiler should be enforcing that; ie make it a different type?
It's intended to be enforced by storing the algorithm choice in the WW_MUTEX_CLASS which must be common for an acquire context and the ww_mutexes it acquires. However, I don't think there is a check that that holds. I guess we could add it as a DEBUG_MUTEX test in ww_mutex_lock().
Thanks,
Thomas
| |