blockd: don't flush devices list on "hotplug" call
authorRafał Miłecki <rafal@milecki.pl>
Fri, 13 Dec 2019 10:05:12 +0000 (11:05 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Fri, 13 Dec 2019 13:48:34 +0000 (14:48 +0100)
The point of "hotplug" call is to add or remove a single entry to/from
devices list. Using vlist_update() and vlist_flush() was clearing whole
list (and leaving the last entry in case of adding a device).

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

index 7375b2b..e07530c 100644 (file)
--- a/blockd.c
+++ b/blockd.c
@@ -237,7 +237,6 @@ block_hotplug(struct ubus_context *ctx, struct ubus_object *obj,
        if (!device)
                return UBUS_STATUS_UNKNOWN_ERROR;
 
        if (!device)
                return UBUS_STATUS_UNKNOWN_ERROR;
 
-       vlist_update(&devices);
        if (data[MOUNT_REMOVE]) {
                vlist_delete(&devices, &device->node);
        } else {
        if (data[MOUNT_REMOVE]) {
                vlist_delete(&devices, &device->node);
        } else {
@@ -257,7 +256,6 @@ block_hotplug(struct ubus_context *ctx, struct ubus_object *obj,
                strcpy(__target, target);
                vlist_add(&devices, &device->node, device->name);
        }
                strcpy(__target, target);
                vlist_add(&devices, &device->node, device->name);
        }
-       vlist_flush(&devices);
 
        return 0;
 }
 
        return 0;
 }