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. 2) Increase udev timeout. That's about it, I don't think there's any clever tricks to be had, and I definitely don't want to go down the path of trying to work around the udev killing in the kernel. -- Jens Axboe