Mark Kirkwood <markir(at)coretech(dot)co(dot)nz> writes: > In addition to holding the BufMappingLock, each buffer header is (spin) > locked before examining it, hopefully this is correct - BTW, I like the > new buffer lock design.
It'd be possible to dispense with the per-buffer spinlocks so long as you look only at the tag (and perhaps the TAG_VALID flag bit). The tags can't be changing while you hold the BufMappingLock. I'm dubious that there's any point in recording information as transient as the refcounts and dirtybits, and reducing the amount of time you hold the lock would be a Good Thing.
Also, you're still not dealing with the case of a not-valid buffer in a reasonable way.