Re: [QUESTION] How to fix the race of "mdadm --add" and "mdadm mdadm --incremental --export"

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

 




On 2023/3/15 22:14, Martin Wilck wrote:
> On Wed, 2023-03-15 at 21:10 +0800, Li Xiao Keng wrote:
>>>
>>   I test move close() after ioctl(). The reason of EBUSY is that
>> mdadm
>> open(sdf) with O_EXCL. So fd should be closed before ioctl. When I
>> remove
>> O_EXCL, ioctl() will return success.
> 
> This makes sense. I suppose mdadm must use O_EXCL if it modifies RAID
> meta data, otherwise data corruption is just too likely. It is also
> impossible to drop the O_EXCL flag with fcntl() without closing the fd.
> 
> So, if mdadm must close the fd before calling ioctl(), the race can
> hardly be avoided. The close() will cause a uevent, and nothing
> prevents the udev rules from running before the ioctl() returns.
> 
  Now I find that close() cause a change udev. Is it necessary to import
"mdadm --incremental --export" when change udev cause? Can we ignore it?

> Unless we want to explore the flag-in-tmpfs idea, I think mdadm must
> expect this to happen, and deal with -EBUSY accordingly.
> 
> But first we should get an answer to Coly's question, which version of
> mdadm is in use?
> 
  I use 4.1 mdadm and 5.10 kernel.
> Martin
> 
> .
> 



[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