summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafał Miłecki2018-12-07 13:13:10 +0000
committerRafał Miłecki2018-12-07 20:46:37 +0000
commitdc6a462997db36e860a97e49f2a3e5f4f4ac4d34 (patch)
tree69fe6af77db91f965dda8abd3c838b41f606eb5c
parentf6a96865da9162f45ea1d482c794fe14b26ecfe1 (diff)
downloadfstools-dc6a462997db36e860a97e49f2a3e5f4f4ac4d34.tar.gz
blockd: don't reparse blob msg in the vlist callbacks
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 <rafal@milecki.pl> Acked-by: John Crispin <john@phrozen.org>
-rw-r--r--blockd.c16
1 files 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);
}