blockd: use uloop_process for calling /sbin/hotplug-call mount
authorRafał Miłecki <rafal@milecki.pl>
Tue, 5 May 2020 19:08:03 +0000 (21:08 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Wed, 6 May 2020 15:48:00 +0000 (17:48 +0200)
commit4963db4e9f48355b70e2f75d47ad6fe80337758c
treeba884bbf4da16cbdb54acb3b5c1671deb13dec30
parentcddd902cc165e0af01469d1cb8defd9b1366093f
blockd: use uloop_process for calling /sbin/hotplug-call mount

As blockd uses uloop calling any script and using waitpid() can easily
result in a lock. It's enough for script to use /bin/ubus to cause that.

It's not an option to drop waitpid() as it's important to e.g. call
mount scripts with ACTION=remove before unmounting devices. So solving
this problem requires using uloop_process.

Unfortunately this means:
1. Using callbacks making code slightly more complex
2. Dropping that nice devices_update_cb()

With this change however hotplug.d "mount" scripts can safely call
"ubus".

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
block.c
blockd.c