HomeFreeBSD

Add a memory barrier after taking a reference on the vnode holdcnt in _vhold

Description

Add a memory barrier after taking a reference on the vnode holdcnt in _vhold

This is needed to avoid a race between the VNASSERT() below, and another
thread updating the VI_FREE flag, on weakly-ordered architectures.

On a 72-thread POWER9, without this barrier a 'make -j72 buildworld' would
panic on the assert regularly.

It may be possible to use a weaker barrier, and I'll investigate that once
all stability issues are worked out on POWER9.

Details

Provenance
jhibbitsAuthored on Jun 6 2018, 12:57 PM
Parents
rG4a089e6bc593: Use m_copyback() function to write delayed checksum when it isn't located
Branches
Unknown
Tags
Unknown

Event Timeline