[linux-lvm] LVM autoactivation and udev

heming.zhao at suse.com heming.zhao at suse.com
Wed Mar 23 07:33:00 UTC 2022


On 3/22/22 00:44, David Teigland wrote:
> On Mon, Mar 21, 2022 at 04:57:09PM +0800, heming.zhao at suse.com wrote:
>> ```
>> Mar 10 10:27:54 Mobile-PC systemd[1]: Stopped target Local File Systems.
>> Mar 10 10:27:55 Mobile-PC systemd[1]: Reached target Local File Systems.
>> Mar 10 10:27:55 Mobile-PC lvm[658]:   Udev database has incomplete information about device /dev/nvme0n1.
>> Mar 10 10:27:55 Mobile-PC lvm[658]:   /dev/nvme0n1: Failed to get external handle [udev].
>> Mar 10 10:27:55 Mobile-PC lvm[658]:   Udev database has incomplete information about device /dev/sda.
>> Mar 10 10:27:55 Mobile-PC lvm[658]:   /dev/sda: Failed to get external handle [udev].
>> ```
> 
> Since vgchange --monitor runs during startup, it should also override any
> udev settings to disable them, like pvscan does:
> 
>    init_obtain_device_list_from_udev(0);
>    init_external_device_info_source(DEV_EXT_NONE);
> 
> (Those are the default settings we use, so we don't see this.)
> 

you mind me, I forgot SUSE chose to use udev by default.
So this is a SUSE special issue.

> 
>> In my understand, lvm2-monitor.service does the "clean up" job, which will complete the
>> monitor job for thin/mirror/others LVs, which was created during initrd phase. (because
>> lvm_scan doesn't have ability to start monitoring.)
>> on current lvm2-monitor.service, the dependency asks this service start as early as possible:
>> ```
>> After=dm-event.socket dm-event.service
>> ```
>> It makes monitor service start too early, and triggers libudev not ready issue.
>>
>>
>> To fix above issue, we find a workaround:
>> ```
>> - After=dm-event.socket dm-event.service
>> + After=dm-event.socket dm-event.service sysinit.target
>> ```
> 
> Yes, I think starting it later would be better.  I don't know enough about
> these systemd targets to comment on how well that change would work.  I've
> not given much attention to lvm2-monitor, but I've also wished it would
> start later> 
>> And maybe there is another workaround (not verify):
>> ```
>> -ExecStart=@SBINDIR@/lvm vgchange --monitor y
>>
>> +ExecStart=@SBINDIR@/lvm vgchange --config 'devices { external_device_info_source="none" \
>> obtain_device_list_from_udev=0}' --monitor y
>> ```
> 
> Let's patch vgchange monitor as mentioned above.
> 
> Dave
> 

I inclined to use the "--config" option to avoid booting warning.
(or write additional codes for vgchange "monitor_ARG")

I have two reasons:

1>
Martin & I also found it is a difficult to find the best time to start lvm2-monitor.service
So modification "After=" dependency will still failed with some cases.

2>
the lvm2-monitor.service helps to finish monitoring job for lvm_scan. So it's not necessary
to ask this service to handle the VG/LV which starting after switch rootfs. (These VG/LV
should be monitored by "pvscan --cache".)

So starting lvm2-monitor.service as early as possible is accepted.

Thanks,



More information about the linux-lvm mailing list