Page MenuHomeFreeBSD

unix: Use a dedicated mtx pool for vnode name locks
Needs ReviewPublic

Authored by jhb on Thu, Sep 26, 1:22 AM.

Details

Reviewers
glebius
Summary

mtxpool_sleep should be used as a leaf lock since it is a general
purpose pool shared across many consumers. Holding a pool lock while
acquiring other locks (e.g. the socket buffer lock in soreserve()) can
trigger LOR warnings for unrelated code.

Sponsored by: Chelsio Communications

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 59604
Build 56491: arc lint + arc unit

Event Timeline

jhb requested review of this revision.Thu, Sep 26, 1:22 AM

The LORs I was seeing before were mitigated by rGaec2ae8b57fc638fa3ba9fac9d2067f2049ab613. However, I do think in general that locks from the global mutex pools should only be used as leaf locks.

Also, the count of 1024 locks might be too high here. I just copied the default size of the mtxpool_sleep pool. We could use a smaller value like 128 or 64 if we don't think these will be contested very often.