diff options
author | Daniel Golle <daniel@makrotopia.org> | 2022-04-13 01:00:31 +0100 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2022-05-01 16:55:55 +0100 |
commit | 898b328d9ee4b0158df5a972d19924864ec9bfaf (patch) | |
tree | 9ad0503903f5478a93d7f01b274f71719f9b3158 | |
parent | ce5eacb0762bb19c61a543b64167f7b27f189bed (diff) | |
download | fstools-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.c | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -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); } |