[OpenAFS] Re: [OpenAFS-devel] 1.6 and post-1.6 OpenAFS branch management and schedule

Tom Keiser tkeiser@sinenomine.net
Tue, 22 Jun 2010 12:46:34 -0400


On Mon, Jun 21, 2010 at 4:41 AM, Rainer Toebbicke <rtb@pclella.cern.ch> wro=
te:
> Tom Keiser schrieb:
>
>>
>> I'll note that bitmap-later is also dangerous--it has several known
>> race conditions (e.g. VFreeBitmapEntry_r is just plain wrong;
>> GetBitmap() relies upon microarchitectural store ordering rules that
>> no modern processor guarantees, ...). =A0These can result in various
>> classes of corruption from vnodes that fail to be freed until salvage,
>> to multiple allocations of the same vnode.
>>
>>
>
> Thanks for the hint - could you elaborate on that?
>

Sure.  In GetBitmap() we need to defer setting the bitmap pointer in
the vnodeIndex object until after VOL_LOCK is reacquired--that will
close the processor store ordering race.  FYI: this fix was already
done on 1.5 as part of DAFS [see VGetBitMap_r() on git master for
details].
Aside from some latent fears about the concurrency model permitting
the vnode package to race against the GetBitmap scan, I think that one
change should fix things...

-Tom