Re: [RFC PATCH v2 15/16] bcache: improve bcache_reboot()

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

 



On 2019/4/23 3:13 下午, Hannes Reinecke wrote:
> On 4/19/19 6:05 PM, Coly Li wrote:
>> This patch tries to release mutex bch_register_lock early, to give
>> chance to stop cache set and bcache device early.
>>
>> This patch also expends time out of stopping all bcache device from
>> 2 seconds to 10 seconds, because stopping writeback rate update worker
>> may delay for 5 seconds, 2 seconds is not enough.
>>
>> After this patch applied, stopping bcache devices during system reboot
>> or shutdown is very hard to be observed any more.
>>
>> Signed-off-by: Coly Li <colyli@xxxxxxx>
>> ---
>>   drivers/md/bcache/super.c | 6 ++++--
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
>> index e988e46a6479..2d377a4a182f 100644
>> --- a/drivers/md/bcache/super.c
>> +++ b/drivers/md/bcache/super.c
>> @@ -2453,10 +2453,13 @@ static int bcache_reboot(struct notifier_block
>> *n, unsigned long code, void *x)
>>           list_for_each_entry_safe(dc, tdc, &uncached_devices, list)
>>               bcache_device_stop(&dc->disk);
>>   +        mutex_unlock(&bch_register_lock);
>> +
>>           /* What's a condition variable? */
>>           while (1) {
>> -            long timeout = start + 2 * HZ - jiffies;
>> +            long timeout = start + 10 * HZ - jiffies;
>>   +            mutex_lock(&bch_register_lock);
>>               stopped = list_empty(&bch_cache_sets) &&
>>                   list_empty(&uncached_devices);
>>   @@ -2468,7 +2471,6 @@ static int bcache_reboot(struct notifier_block
>> *n, unsigned long code, void *x)
>>                 mutex_unlock(&bch_register_lock);
>>               schedule_timeout(timeout);
>> -            mutex_lock(&bch_register_lock);
>>           }
>>             finish_wait(&unregister_wait, &wait);
>> Maybe you should even call 'schedule()' after the first mutex_unlock() 
> to force execution of other tasks.
> But anyway:
> 

Hi Hannes,

It makes sense for an explicit schedule(). I will add it in next
version. Thanks.


> Reviewed-by: Hannes Reinecke <hare@xxxxxxxx>
> 
> Cheers,
> 
> Hannes


-- 

Coly Li



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux