[struct buf] Unlocked access to b_vflags?

Alexander Lochmann alexander.lochmann at tu-dortmund.de
Mon Apr 12 21:19:10 UTC 2021


Hi folks,

I'm was digging through our data set when I encountered a strange situation:
According to the code in trunc_dependencies() in sys/ufs/ffs/ffs_softdep.c,
the bo_lock should be held. At least that's how I read the code.
However, we see several thousands of accesses to b_vflags without the 
bo_lock held.
At least the own b_lock is acquired.
The access happens in line 7549: bp->b_vflags |= BV_SCANNED; [1]
Can you please shed some light on this situation?
Is the b_lock sufficeint, and somehow overrules the bo_lock?
Am I missing something?

FYI, some information about the greater context: I'm still trying to 
understand FreeBSD's locking. This is needed to properly port our 
approach. LockDoc, at the moment, seems to miss some cases on FreeBSD.

Regards,
Alex


[1] 
https://github.com/freebsd/freebsd-src/blob/main/sys/ufs/ffs/ffs_softdep.c#L7549
-- 
Technische Universität Dortmund
Alexander Lochmann                PGP key: 0xBC3EF6FD
Otto-Hahn-Str. 16                 phone:  +49.231.7556141
D-44227 Dortmund                  fax:    +49.231.7556116
http://ess.cs.tu-dortmund.de/Staff/al

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20210412/c366d9e6/attachment.sig>


More information about the freebsd-fs mailing list