Re: [PATCH stable-5.4.y stable-5.10.y] btrfs: scan device in non-exclusive mode

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

 



On Mon, Apr 03, 2023 at 01:46:08PM +0800, Anand Jain wrote:
> commit 50d281fc434cb8e2497f5e70a309ccca6b1a09f0 upstream.
> 
> This fixes mkfs/mount/check failures due to race with systemd-udevd
> scan.
> 
> During the device scan initiated by systemd-udevd, other user space
> EXCL operations such as mkfs, mount, or check may get blocked and result
> in a "Device or resource busy" error. This is because the device
> scan process opens the device with the EXCL flag in the kernel.
> 
> Two reports were received:
> 
>  - btrfs/179 test case, where the fsck command failed with the -EBUSY
>    error
> 
>  - LTP pwritev03 test case, where mkfs.vfs failed with
>    the -EBUSY error, when mkfs.vfs tried to overwrite old btrfs filesystem
>    on the device.
> 
> In both cases, fsck and mkfs (respectively) were racing with a
> systemd-udevd device scan, and systemd-udevd won, resulting in the
> -EBUSY error for fsck and mkfs.
> 
> Reproducing the problem has been difficult because there is a very
> small window during which these userspace threads can race to
> acquire the exclusive device open. Even on the system where the problem
> was observed, the problem occurrences were anywhere between 10 to 400
> iterations and chances of reproducing decreases with debug printk()s.
> 
> However, an exclusive device open is unnecessary for the scan process,
> as there are no write operations on the device during scan. Furthermore,
> during the mount process, the superblock is re-read in the below
> function call chain:
> 
>   btrfs_mount_root
>    btrfs_open_devices
>     open_fs_devices
>      btrfs_open_one_device
>        btrfs_get_bdev_and_sb
> 
> So, to fix this issue, removes the FMODE_EXCL flag from the scan
> operation, and add a comment.
> 
> The case where mkfs may still write to the device and a scan is running,
> the btrfs signature is not written at that time so scan will not
> recognize such device.
> 
> Reported-by: Sherry Yang <sherry.yang@xxxxxxxxxx>
> Reported-by: kernel test robot <oliver.sang@xxxxxxxxx>
> Link: https://lore.kernel.org/oe-lkp/202303170839.fdf23068-oliver.sang@xxxxxxxxx
> CC: stable@xxxxxxxxxxxxxxx # 5.4+
> Signed-off-by: Anand Jain <anand.jain@xxxxxxxxxx>
> Reviewed-by: David Sterba <dsterba@xxxxxxxx>
> Signed-off-by: David Sterba <dsterba@xxxxxxxx>
> Signed-off-by: Anand Jain <anand.jain@xxxxxxxxxx>
> ---
> 
> The upstream commit 50d281fc434cb8e2497f5e70a309ccca6b1a09f0 can be
> applied without conflict to LTS stable-5.15.y and stable-6.1.y. However,
> on LTS stable-5.4.y and stable-5.15.y, a conflict fix is required since
> the zoned device support commits are not present in these versions. This
> patch resolves the conflicts.

Now queued up, thanks.

greg k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux