Re: Re: [patch 03/10 v3] raid5: add a per-stripe lock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2012-07-04 07:56 NeilBrown <neilb@xxxxxxx> Wrote:
>On Tue, 3 Jul 2012 20:16:31 +0800 majianpeng <majianpeng@xxxxxxxxx> wrote:
>
>> On 2012-07-02 15:39 NeilBrown <neilb@xxxxxxx> Wrote:
>> >On Mon, 2 Jul 2012 11:16:26 +0800 Shaohua Li <shli@xxxxxxxxxx> wrote:
>> >
>> >
>> >> > Then I could see what is being added and what is being removed all in the one
>> >> > patch and I can be sure that they balance.
>> >> 
>> >> reworked the patch 3-5 to two patches as you suggested, and sent to you. please check.
>> >
>> >Thanks.  That's looking really good.
>> >
>> >However I think we can do better.  I've been looking more closely at the code
>> >and I think that the only things that we need stripe_lock to protect are
>> >->toread and ->towrite, together with the following bios.  e.g.
>> >->toread->bi_next etc.
>> >
>> >->read and ->written don't need stripe_lock protection, as they are only
>> >manipulated by the handle_stripe state machine which uses STRIPE_ACTIVE 
>> >and refcounts for exclusion.
>> >
>> >So add_stripe_bio need to take the lock while adding a bio to the
>> >->toread and  ->towrite lists, and ops_run_biodrain() and ops_run_biofill
>> >need to take the lock while the move the list from ->to{read,write} to
>> >->{read,written}.  
>
>> How about xchg()?
>
>(it would help a little if you made your comments stand out more, and maybe
>be a bit more verbose).
>
>bio_add_stripe() can insert a new bio into a list that starts are ->towrite
>or ->toread.
>You cannot do that with a simple xchg.  You really need a lock.
>
>NeilBrown
>
>
sorry,i missed xchg.
But when dev/stripe is set R5_Wantdrain/R5_Wantfill, can add stripe to dev/stripe??韬{.n?????%??檩??w?{.n???{炳盯w???塄}?财??j:+v??????2??璀??摺?囤??z夸z罐?+?????w棹f



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux