[systemd-devel] btrfs raid not ready but systemd tries to mount it anyway

Lennart Poettering lennart at poettering.net
Fri Oct 16 13:29:33 UTC 2020


On Mo, 12.10.20 14:42, Chris Murphy (lists at colorremedies.com) wrote:

> > When precisely it returns success or failure is entirely up to the btrfs kernel
> > code. systemd/udev doesn't have any control on that. The udev btrfs
> > builtin is too trivial for that: it just calls the ioctl and that
> > pretty much is it.
>
> What does this line mean? Does it mean the 'btrfs ready' ioctl has
> been called at this moment and the device is ready? i.e. this specific
> device is ready now, but not before now?
>
> [   30.923721] kernel: BTRFS: device label BTRFS_RAID1_srv devid 1
> transid 60815 /dev/sdg scanned by systemd-udevd (710)

It's generated by the kernel whenever userspace calls
BTRFS_IOC_DEVICES_READY (also in a few other cases, e.g. if you never
call that but mount the fs right-away).

That ioctl is called by udev whenever a btrfs device pops up, and it
basically tells the btrfs layer in the kernel to consider it, and then
maybe assemble something from it.

> Because I see six such lines for this file system before the mount
> attempt. And four such lines after the mount attempt. If "all devices
> ready" is not true until the last such line appears, then the mount is
> happening too soon for some reason.

It should be generate at least once for each device belonging to the
file system. Because udev calls the ioctl whenever a btrfs fs pops up.

But note that due to the initrd transitoin and retriggering of udev
rules you might see this more than once per device.

Lennart

--
Lennart Poettering, Berlin


More information about the systemd-devel mailing list