diff options
| author | Rafał Miłecki | 2018-12-07 13:13:10 +0000 |
|---|---|---|
| committer | Rafał Miłecki | 2018-12-07 20:46:37 +0000 |
| commit | dc6a462997db36e860a97e49f2a3e5f4f4ac4d34 (patch) | |
| tree | 69fe6af77db91f965dda8abd3c838b41f606eb5c | |
| parent | f6a96865da9162f45ea1d482c794fe14b26ecfe1 (diff) | |
| download | fstools-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.c | 16 |
1 files changed, 3 insertions, 13 deletions
@@ -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); } |