Re: [PATCH] md: don't update recovery_cp when curr_resync is ACTIVE

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

 



Hi,

On 2/2/2023 12:35 AM, Song Liu wrote:
> On Mon, Jan 30, 2023 at 10:39 PM Hou Tao <houtao@xxxxxxxxxxxxxxx> wrote:
>> From: Hou Tao <houtao1@xxxxxxxxxx>
>>
>> Don't update recovery_cp when curr_resync is MD_RESYNC_ACTIVE, otherwise
>> md may skip the resync of the first 3 sectors if the resync procedure is
>> interrupted before the first calling of ->sync_request() as shown below:
>>
>> md_do_sync thread          control thread
>>   // setup resync
>>   mddev->recovery_cp = 0
>>   j = 0
>>   mddev->curr_resync = MD_RESYNC_ACTIVE
>>
>>                              // e.g., set array as idle
>>                              set_bit(MD_RECOVERY_INTR, &&mddev_recovery)
>>   // resync loop
>>   // check INTR before calling sync_request
>>   !test_bit(MD_RECOVERY_INTR, &mddev->recovery
>>
>>   // resync interrupted
>>   // update recovery_cp from 0 to 3
>>   // the resync of three 3 sectors will be skipped
>>   mddev->recovery_cp = 3
>>
>> Fixes: eac58d08d493 ("md: Use enum for overloaded magic numbers used by mddev->curr_resync")
>> Signed-off-by: Hou Tao <houtao1@xxxxxxxxxx>
> By the way, how did you find this issue? Is it from users/production?
> Or just from reading the code?
Found the issue when reading the code and reproduced the problem to confirm that.
>
> Thanks,
> Song




[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