From dc6a462997db36e860a97e49f2a3e5f4f4ac4d34 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Fri, 7 Dec 2018 14:13:10 +0100 Subject: [PATCH] blockd: don't reparse blob msg in the vlist callbacks MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ubus message is parsed in the block_hotplug() which fills all the struct device fields. Once that is done there is no need to parse original message again - it's enough to get required data from the struct. This also fixes handling messages with "autofs" set to 0. They were incorrectly interpreted due to the missing blobmsg_get_u32(). Signed-off-by: Rafał Miłecki Acked-by: John Crispin --- blockd.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/blockd.c b/blockd.c index 1379635..29d16f2 100644 --- a/blockd.c +++ b/blockd.c @@ -111,29 +111,19 @@ block(char *cmd, char *action, char *device) static void device_free(struct device *device) { - struct blob_attr *data[__MOUNT_MAX]; - - blobmsg_parse(mount_policy, __MOUNT_MAX, data, - blob_data(device->msg), blob_len(device->msg)); - - if (data[MOUNT_AUTOFS] && device->target) + if (device->autofs && device->target) unlink(device->target); } static void device_add(struct device *device) { - struct blob_attr *data[__MOUNT_MAX]; char path[64]; - blobmsg_parse(mount_policy, __MOUNT_MAX, data, - blob_data(device->msg), blob_len(device->msg)); - - if (!data[MOUNT_AUTOFS]) + if (!device->autofs) return; - snprintf(path, sizeof(path), "/tmp/run/blockd/%s", - blobmsg_get_string(data[MOUNT_DEVICE])); + snprintf(path, sizeof(path), "/tmp/run/blockd/%s", device->name); if (symlink(path, device->target)) ULOG_ERR("failed to symlink %s->%s\n", device->target, path); } -- 2.30.2