diff options
| author | Bryant G. Ly <bryantly@linux.vnet.ibm.com> | 2017-06-06 10:28:52 -0400 |
|---|---|---|
| committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2017-07-07 02:11:32 -0400 |
| commit | 8a45885c1514cdae2ee64b5ac03ffc00a1a8a9d7 (patch) | |
| tree | 9d094ca4f89ce0674875dc6da1a80f2e1cfb752b | |
| parent | ee01825220f01c0befea25f08325962fa9374ee2 (diff) | |
tcmu: Add Type of reconfig into netlink
This patch adds more info about the attribute being changed,
so that usersapce can easily figure out what is happening.
Signed-off-by: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
Reviewed-By: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
| -rw-r--r-- | drivers/target/target_core_user.c | 20 | ||||
| -rw-r--r-- | include/uapi/linux/target_core_user.h | 8 |
2 files changed, 22 insertions, 6 deletions
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c index 7c6475731895..afc1fd6bacaf 100644 --- a/drivers/target/target_core_user.c +++ b/drivers/target/target_core_user.c | |||
| @@ -1176,7 +1176,8 @@ static int tcmu_release(struct uio_info *info, struct inode *inode) | |||
| 1176 | return 0; | 1176 | return 0; |
| 1177 | } | 1177 | } |
| 1178 | 1178 | ||
| 1179 | static int tcmu_netlink_event(enum tcmu_genl_cmd cmd, const char *name, int minor) | 1179 | static int tcmu_netlink_event(enum tcmu_genl_cmd cmd, const char *name, |
| 1180 | int minor, int type) | ||
| 1180 | { | 1181 | { |
| 1181 | struct sk_buff *skb; | 1182 | struct sk_buff *skb; |
| 1182 | void *msg_header; | 1183 | void *msg_header; |
| @@ -1198,6 +1199,10 @@ static int tcmu_netlink_event(enum tcmu_genl_cmd cmd, const char *name, int mino | |||
| 1198 | if (ret < 0) | 1199 | if (ret < 0) |
| 1199 | goto free_skb; | 1200 | goto free_skb; |
| 1200 | 1201 | ||
| 1202 | ret = nla_put_u32(skb, TCMU_ATTR_TYPE, type); | ||
| 1203 | if (ret < 0) | ||
| 1204 | goto free_skb; | ||
| 1205 | |||
| 1201 | genlmsg_end(skb, msg_header); | 1206 | genlmsg_end(skb, msg_header); |
| 1202 | 1207 | ||
| 1203 | ret = genlmsg_multicast_allns(&tcmu_genl_family, skb, 0, | 1208 | ret = genlmsg_multicast_allns(&tcmu_genl_family, skb, 0, |
| @@ -1301,7 +1306,7 @@ static int tcmu_configure_device(struct se_device *dev) | |||
| 1301 | kref_get(&udev->kref); | 1306 | kref_get(&udev->kref); |
| 1302 | 1307 | ||
| 1303 | ret = tcmu_netlink_event(TCMU_CMD_ADDED_DEVICE, udev->uio_info.name, | 1308 | ret = tcmu_netlink_event(TCMU_CMD_ADDED_DEVICE, udev->uio_info.name, |
| 1304 | udev->uio_info.uio_dev->minor); | 1309 | udev->uio_info.uio_dev->minor, NO_RECONFIG); |
| 1305 | if (ret) | 1310 | if (ret) |
| 1306 | goto err_netlink; | 1311 | goto err_netlink; |
| 1307 | 1312 | ||
| @@ -1383,7 +1388,7 @@ static void tcmu_free_device(struct se_device *dev) | |||
| 1383 | 1388 | ||
| 1384 | if (tcmu_dev_configured(udev)) { | 1389 | if (tcmu_dev_configured(udev)) { |
| 1385 | tcmu_netlink_event(TCMU_CMD_REMOVED_DEVICE, udev->uio_info.name, | 1390 | tcmu_netlink_event(TCMU_CMD_REMOVED_DEVICE, udev->uio_info.name, |
| 1386 | udev->uio_info.uio_dev->minor); | 1391 | udev->uio_info.uio_dev->minor, NO_RECONFIG); |
| 1387 | 1392 | ||
| 1388 | uio_unregister_device(&udev->uio_info); | 1393 | uio_unregister_device(&udev->uio_info); |
| 1389 | } | 1394 | } |
| @@ -1577,7 +1582,8 @@ static ssize_t tcmu_dev_path_store(struct config_item *item, const char *page, | |||
| 1577 | if (tcmu_dev_configured(udev)) { | 1582 | if (tcmu_dev_configured(udev)) { |
| 1578 | ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE, | 1583 | ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE, |
| 1579 | udev->uio_info.name, | 1584 | udev->uio_info.name, |
| 1580 | udev->uio_info.uio_dev->minor); | 1585 | udev->uio_info.uio_dev->minor, |
| 1586 | CONFIG_PATH); | ||
| 1581 | if (ret) { | 1587 | if (ret) { |
| 1582 | pr_err("Unable to reconfigure device\n"); | 1588 | pr_err("Unable to reconfigure device\n"); |
| 1583 | return ret; | 1589 | return ret; |
| @@ -1615,7 +1621,8 @@ static ssize_t tcmu_dev_size_store(struct config_item *item, const char *page, | |||
| 1615 | if (tcmu_dev_configured(udev)) { | 1621 | if (tcmu_dev_configured(udev)) { |
| 1616 | ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE, | 1622 | ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE, |
| 1617 | udev->uio_info.name, | 1623 | udev->uio_info.name, |
| 1618 | udev->uio_info.uio_dev->minor); | 1624 | udev->uio_info.uio_dev->minor, |
| 1625 | CONFIG_SIZE); | ||
| 1619 | if (ret) { | 1626 | if (ret) { |
| 1620 | pr_err("Unable to reconfigure device\n"); | 1627 | pr_err("Unable to reconfigure device\n"); |
| 1621 | return ret; | 1628 | return ret; |
| @@ -1654,7 +1661,8 @@ static ssize_t tcmu_emulate_write_cache_store(struct config_item *item, | |||
| 1654 | if (tcmu_dev_configured(udev)) { | 1661 | if (tcmu_dev_configured(udev)) { |
| 1655 | ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE, | 1662 | ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE, |
| 1656 | udev->uio_info.name, | 1663 | udev->uio_info.name, |
| 1657 | udev->uio_info.uio_dev->minor); | 1664 | udev->uio_info.uio_dev->minor, |
| 1665 | CONFIG_WRITECACHE); | ||
| 1658 | if (ret) { | 1666 | if (ret) { |
| 1659 | pr_err("Unable to reconfigure device\n"); | 1667 | pr_err("Unable to reconfigure device\n"); |
| 1660 | return ret; | 1668 | return ret; |
diff --git a/include/uapi/linux/target_core_user.h b/include/uapi/linux/target_core_user.h index 403a61faada0..5b00e3500005 100644 --- a/include/uapi/linux/target_core_user.h +++ b/include/uapi/linux/target_core_user.h | |||
| @@ -139,8 +139,16 @@ enum tcmu_genl_attr { | |||
| 139 | TCMU_ATTR_UNSPEC, | 139 | TCMU_ATTR_UNSPEC, |
| 140 | TCMU_ATTR_DEVICE, | 140 | TCMU_ATTR_DEVICE, |
| 141 | TCMU_ATTR_MINOR, | 141 | TCMU_ATTR_MINOR, |
| 142 | TCMU_ATTR_TYPE, | ||
| 142 | __TCMU_ATTR_MAX, | 143 | __TCMU_ATTR_MAX, |
| 143 | }; | 144 | }; |
| 144 | #define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1) | 145 | #define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1) |
| 145 | 146 | ||
| 147 | enum tcmu_reconfig_types { | ||
| 148 | NO_RECONFIG, | ||
| 149 | CONFIG_PATH, | ||
| 150 | CONFIG_SIZE, | ||
| 151 | CONFIG_WRITECACHE, | ||
| 152 | }; | ||
| 153 | |||
| 146 | #endif | 154 | #endif |
