aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryant G. Ly <bryantly@linux.vnet.ibm.com>2017-06-06 10:28:52 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2017-07-07 02:11:32 -0400
commit8a45885c1514cdae2ee64b5ac03ffc00a1a8a9d7 (patch)
tree9d094ca4f89ce0674875dc6da1a80f2e1cfb752b
parentee01825220f01c0befea25f08325962fa9374ee2 (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.c20
-rw-r--r--include/uapi/linux/target_core_user.h8
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
1179static int tcmu_netlink_event(enum tcmu_genl_cmd cmd, const char *name, int minor) 1179static 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
147enum tcmu_reconfig_types {
148 NO_RECONFIG,
149 CONFIG_PATH,
150 CONFIG_SIZE,
151 CONFIG_WRITECACHE,
152};
153
146#endif 154#endif