On 2020/4/23 23:08, Jens Axboe wrote: > On 4/23/20 5:23 AM, Coly Li wrote: >> Hi folk, >> >> I want to listen to your suggestion on how to handle the udevd timeout >> for bcache registration. >> >> First of all let me introduce the background of this timeout problem. >> >> Now the bcache registration is synchronized, the registering process >> will be blocked until the whole registration done. In boot up time, such >> registration can be initiated from a bcache udev rule. Normally it won't >> be problem, but for very large cached data size there might be a large >> internal btree on the cache device. During the registration checking all >> the btree nodes may take 50+ minutes as a udev task, it exceeds 180 >> seconds timeout and udevd will kill it. The killing signal will make >> kthread_create() fail during bcache initialization, then the automatic >> bcache registration in boot up time will fail. >> >> The above text describes the problem I need to solve: make boot up time >> automatic bache registration always success no mater how long it will take. >> >> I know there are several solutions to solve such problem, I do >> appreciate if you may share the solution so that I may learn good ideas >> from them. >> >> Thank you in advance for the information sharing of my request of >> suggestion. > > The way I see it, you have only two choices: > > 1) Make the registration async (or lazy), so that starting the device is > fast, but the btree verification happens on-demand or in the > background. > Yes, this is what I plan to do now, make whole initialization to be asynchronous. Currently there are points not clear to me. - During the boot up time, if a bcache device is listed in /etc/fstab. How can I block the fs mount step before the bcache device /dev/bcache<N> shows up. I guess it should be done in systemd, and not sure whether there is another timeout value. - When the bcache device registration done and /dev/bcache<N> show up, if it is listed in /etc/fstab, how to only mount this bcache device only and not touch other mount points. udev rules and systemd are both magic to me at this moment. If anybody may give a hint, or some similar example to learn and understand, it will be very helpful. Thanks. Coly Li