Skip to content

Commit

Permalink
tcmu: Add Type of reconfig into netlink
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Bryant G. Ly authored and Nicholas Bellinger committed Jul 7, 2017
1 parent ee01825 commit 8a45885
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
20 changes: 14 additions & 6 deletions drivers/target/target_core_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -1176,7 +1176,8 @@ static int tcmu_release(struct uio_info *info, struct inode *inode)
return 0;
}

static int tcmu_netlink_event(enum tcmu_genl_cmd cmd, const char *name, int minor)
static int tcmu_netlink_event(enum tcmu_genl_cmd cmd, const char *name,
int minor, int type)
{
struct sk_buff *skb;
void *msg_header;
Expand All @@ -1198,6 +1199,10 @@ static int tcmu_netlink_event(enum tcmu_genl_cmd cmd, const char *name, int mino
if (ret < 0)
goto free_skb;

ret = nla_put_u32(skb, TCMU_ATTR_TYPE, type);
if (ret < 0)
goto free_skb;

genlmsg_end(skb, msg_header);

ret = genlmsg_multicast_allns(&tcmu_genl_family, skb, 0,
Expand Down Expand Up @@ -1301,7 +1306,7 @@ static int tcmu_configure_device(struct se_device *dev)
kref_get(&udev->kref);

ret = tcmu_netlink_event(TCMU_CMD_ADDED_DEVICE, udev->uio_info.name,
udev->uio_info.uio_dev->minor);
udev->uio_info.uio_dev->minor, NO_RECONFIG);
if (ret)
goto err_netlink;

Expand Down Expand Up @@ -1383,7 +1388,7 @@ static void tcmu_free_device(struct se_device *dev)

if (tcmu_dev_configured(udev)) {
tcmu_netlink_event(TCMU_CMD_REMOVED_DEVICE, udev->uio_info.name,
udev->uio_info.uio_dev->minor);
udev->uio_info.uio_dev->minor, NO_RECONFIG);

uio_unregister_device(&udev->uio_info);
}
Expand Down Expand Up @@ -1577,7 +1582,8 @@ static ssize_t tcmu_dev_path_store(struct config_item *item, const char *page,
if (tcmu_dev_configured(udev)) {
ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE,
udev->uio_info.name,
udev->uio_info.uio_dev->minor);
udev->uio_info.uio_dev->minor,
CONFIG_PATH);
if (ret) {
pr_err("Unable to reconfigure device\n");
return ret;
Expand Down Expand Up @@ -1615,7 +1621,8 @@ static ssize_t tcmu_dev_size_store(struct config_item *item, const char *page,
if (tcmu_dev_configured(udev)) {
ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE,
udev->uio_info.name,
udev->uio_info.uio_dev->minor);
udev->uio_info.uio_dev->minor,
CONFIG_SIZE);
if (ret) {
pr_err("Unable to reconfigure device\n");
return ret;
Expand Down Expand Up @@ -1654,7 +1661,8 @@ static ssize_t tcmu_emulate_write_cache_store(struct config_item *item,
if (tcmu_dev_configured(udev)) {
ret = tcmu_netlink_event(TCMU_CMD_RECONFIG_DEVICE,
udev->uio_info.name,
udev->uio_info.uio_dev->minor);
udev->uio_info.uio_dev->minor,
CONFIG_WRITECACHE);
if (ret) {
pr_err("Unable to reconfigure device\n");
return ret;
Expand Down
8 changes: 8 additions & 0 deletions include/uapi/linux/target_core_user.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,16 @@ enum tcmu_genl_attr {
TCMU_ATTR_UNSPEC,
TCMU_ATTR_DEVICE,
TCMU_ATTR_MINOR,
TCMU_ATTR_TYPE,
__TCMU_ATTR_MAX,
};
#define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1)

enum tcmu_reconfig_types {
NO_RECONFIG,
CONFIG_PATH,
CONFIG_SIZE,
CONFIG_WRITECACHE,
};

#endif

0 comments on commit 8a45885

Please sign in to comment.