Commit c17d5d5f authored by Mike Christie's avatar Mike Christie Committed by Nicholas Bellinger

target: export lio pgr/alua support as device attr

Older kernels could crash or hang if the user write/read some ALUA files
with pscsi and tcmu backends. This patch exports if LIO supports
executing PGR and ALUA scsi commands/checks for the se_device, so userspace
can easily test.
Signed-off-by: default avatarMike Christie <mchristi@redhat.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 7ee00317
...@@ -1085,6 +1085,24 @@ static ssize_t block_size_store(struct config_item *item, ...@@ -1085,6 +1085,24 @@ static ssize_t block_size_store(struct config_item *item,
return count; return count;
} }
static ssize_t alua_support_show(struct config_item *item, char *page)
{
struct se_dev_attrib *da = to_attrib(item);
u8 flags = da->da_dev->transport->transport_flags;
return snprintf(page, PAGE_SIZE, "%d\n",
flags & TRANSPORT_FLAG_PASSTHROUGH_ALUA ? 0 : 1);
}
static ssize_t pgr_support_show(struct config_item *item, char *page)
{
struct se_dev_attrib *da = to_attrib(item);
u8 flags = da->da_dev->transport->transport_flags;
return snprintf(page, PAGE_SIZE, "%d\n",
flags & TRANSPORT_FLAG_PASSTHROUGH_PGR ? 0 : 1);
}
CONFIGFS_ATTR(, emulate_model_alias); CONFIGFS_ATTR(, emulate_model_alias);
CONFIGFS_ATTR(, emulate_dpo); CONFIGFS_ATTR(, emulate_dpo);
CONFIGFS_ATTR(, emulate_fua_write); CONFIGFS_ATTR(, emulate_fua_write);
...@@ -1116,6 +1134,8 @@ CONFIGFS_ATTR(, unmap_granularity); ...@@ -1116,6 +1134,8 @@ CONFIGFS_ATTR(, unmap_granularity);
CONFIGFS_ATTR(, unmap_granularity_alignment); CONFIGFS_ATTR(, unmap_granularity_alignment);
CONFIGFS_ATTR(, unmap_zeroes_data); CONFIGFS_ATTR(, unmap_zeroes_data);
CONFIGFS_ATTR(, max_write_same_len); CONFIGFS_ATTR(, max_write_same_len);
CONFIGFS_ATTR_RO(, alua_support);
CONFIGFS_ATTR_RO(, pgr_support);
/* /*
* dev_attrib attributes for devices using the target core SBC/SPC * dev_attrib attributes for devices using the target core SBC/SPC
...@@ -1154,6 +1174,8 @@ struct configfs_attribute *sbc_attrib_attrs[] = { ...@@ -1154,6 +1174,8 @@ struct configfs_attribute *sbc_attrib_attrs[] = {
&attr_unmap_granularity_alignment, &attr_unmap_granularity_alignment,
&attr_unmap_zeroes_data, &attr_unmap_zeroes_data,
&attr_max_write_same_len, &attr_max_write_same_len,
&attr_alua_support,
&attr_pgr_support,
NULL, NULL,
}; };
EXPORT_SYMBOL(sbc_attrib_attrs); EXPORT_SYMBOL(sbc_attrib_attrs);
...@@ -1168,6 +1190,8 @@ struct configfs_attribute *passthrough_attrib_attrs[] = { ...@@ -1168,6 +1190,8 @@ struct configfs_attribute *passthrough_attrib_attrs[] = {
&attr_hw_block_size, &attr_hw_block_size,
&attr_hw_max_sectors, &attr_hw_max_sectors,
&attr_hw_queue_depth, &attr_hw_queue_depth,
&attr_alua_support,
&attr_pgr_support,
NULL, NULL,
}; };
EXPORT_SYMBOL(passthrough_attrib_attrs); EXPORT_SYMBOL(passthrough_attrib_attrs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment