summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2022-04-13 01:00:31 +0100
committerDaniel Golle <daniel@makrotopia.org>2022-05-01 16:55:55 +0100
commit898b328d9ee4b0158df5a972d19924864ec9bfaf (patch)
tree9ad0503903f5478a93d7f01b274f71719f9b3158
parentce5eacb0762bb19c61a543b64167f7b27f189bed (diff)
downloadfstools-898b328d9ee4b0158df5a972d19924864ec9bfaf.tar.gz
blockd: restore device_move semantics
Before commit 4963db4 block device were only removed and re-added in case of device_move() returning a non-zero value. Commit 4963db4 then (supposedly) accidentally inverted that logic and also (probably to work-around the problems resulting from the now inverted logic) limited this behavior to autofs mounts, leaving the autofs codepath in a semi- broken state. Restore the original semantics as of before commit 4963db4 to fully restore functionality for autofs mounts. Fixes: 4963db4 ("blockd: use uloop_process for calling /sbin/hotplug-call mount") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--blockd.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/blockd.c b/blockd.c
index 8bb5005..9572fd0 100644
--- a/blockd.c
+++ b/blockd.c
@@ -349,13 +349,11 @@ block_hotplug(struct ubus_context *ctx, struct ubus_object *obj,
vlist_add(&devices, &device->node, device->name);
- if (old && !device_move(old, device)) {
- if (device->autofs) {
- device_mount_remove(ctx, old);
- device_mount_add(ctx, device);
- } else {
+ if (old && device_move(old, device)) {
+ device_mount_remove(ctx, old);
+ device_mount_add(ctx, device);
+ if (!device->autofs)
block("mount", NULL, NULL, 0, NULL);
- }
} else if (device->autofs) {
device_mount_add(ctx, device);
}