mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-11 15:49:56 +00:00
target: Add device attribute to expose config_item_name for INQUIRY model
This patch changes LIO to use the configfs backend device name as the model if you echo '1' to an individual device's emulate_model_alias attribute. This is a valid operation only on devices with an export count of 0. Signed-off-by: Tregaron Bayly <tbayly@bluehost.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
0e48e7a5a3
commit
adfa9570a5
@ -609,6 +609,9 @@ static struct target_core_dev_attrib_attribute \
|
||||
__CONFIGFS_EATTR_RO(_name, \
|
||||
target_core_dev_show_attr_##_name);
|
||||
|
||||
DEF_DEV_ATTRIB(emulate_model_alias);
|
||||
SE_DEV_ATTR(emulate_model_alias, S_IRUGO | S_IWUSR);
|
||||
|
||||
DEF_DEV_ATTRIB(emulate_dpo);
|
||||
SE_DEV_ATTR(emulate_dpo, S_IRUGO | S_IWUSR);
|
||||
|
||||
@ -681,6 +684,7 @@ SE_DEV_ATTR(max_write_same_len, S_IRUGO | S_IWUSR);
|
||||
CONFIGFS_EATTR_OPS(target_core_dev_attrib, se_dev_attrib, da_group);
|
||||
|
||||
static struct configfs_attribute *target_core_dev_attrib_attrs[] = {
|
||||
&target_core_dev_attrib_emulate_model_alias.attr,
|
||||
&target_core_dev_attrib_emulate_dpo.attr,
|
||||
&target_core_dev_attrib_emulate_fua_write.attr,
|
||||
&target_core_dev_attrib_emulate_fua_read.attr,
|
||||
|
@ -713,6 +713,44 @@ int se_dev_set_max_write_same_len(
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dev_set_t10_wwn_model_alias(struct se_device *dev)
|
||||
{
|
||||
const char *configname;
|
||||
|
||||
configname = config_item_name(&dev->dev_group.cg_item);
|
||||
if (strlen(configname) >= 16) {
|
||||
pr_warn("dev[%p]: Backstore name '%s' is too long for "
|
||||
"INQUIRY_MODEL, truncating to 16 bytes\n", dev,
|
||||
configname);
|
||||
}
|
||||
snprintf(&dev->t10_wwn.model[0], 16, "%s", configname);
|
||||
}
|
||||
|
||||
int se_dev_set_emulate_model_alias(struct se_device *dev, int flag)
|
||||
{
|
||||
if (dev->export_count) {
|
||||
pr_err("dev[%p]: Unable to change model alias"
|
||||
" while export_count is %d\n",
|
||||
dev, dev->export_count);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (flag != 0 && flag != 1) {
|
||||
pr_err("Illegal value %d\n", flag);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
dev_set_t10_wwn_model_alias(dev);
|
||||
} else {
|
||||
strncpy(&dev->t10_wwn.model[0],
|
||||
dev->transport->inquiry_prod, 16);
|
||||
}
|
||||
dev->dev_attrib.emulate_model_alias = flag;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int se_dev_set_emulate_dpo(struct se_device *dev, int flag)
|
||||
{
|
||||
if (flag != 0 && flag != 1) {
|
||||
@ -1396,6 +1434,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
|
||||
dev->t10_alua.t10_dev = dev;
|
||||
|
||||
dev->dev_attrib.da_dev = dev;
|
||||
dev->dev_attrib.emulate_model_alias = DA_EMULATE_MODEL_ALIAS;
|
||||
dev->dev_attrib.emulate_dpo = DA_EMULATE_DPO;
|
||||
dev->dev_attrib.emulate_fua_write = DA_EMULATE_FUA_WRITE;
|
||||
dev->dev_attrib.emulate_fua_read = DA_EMULATE_FUA_READ;
|
||||
|
@ -25,6 +25,7 @@ int se_dev_set_max_unmap_block_desc_count(struct se_device *, u32);
|
||||
int se_dev_set_unmap_granularity(struct se_device *, u32);
|
||||
int se_dev_set_unmap_granularity_alignment(struct se_device *, u32);
|
||||
int se_dev_set_max_write_same_len(struct se_device *, u32);
|
||||
int se_dev_set_emulate_model_alias(struct se_device *, int);
|
||||
int se_dev_set_emulate_dpo(struct se_device *, int);
|
||||
int se_dev_set_emulate_fua_write(struct se_device *, int);
|
||||
int se_dev_set_emulate_fua_read(struct se_device *, int);
|
||||
|
@ -75,6 +75,8 @@
|
||||
#define DA_MAX_WRITE_SAME_LEN 0
|
||||
/* Default max transfer length */
|
||||
#define DA_FABRIC_MAX_SECTORS 8192
|
||||
/* Use a model alias based on the configfs backend device name */
|
||||
#define DA_EMULATE_MODEL_ALIAS 0
|
||||
/* Emulation for Direct Page Out */
|
||||
#define DA_EMULATE_DPO 0
|
||||
/* Emulation for Forced Unit Access WRITEs */
|
||||
@ -591,6 +593,7 @@ struct se_dev_entry {
|
||||
};
|
||||
|
||||
struct se_dev_attrib {
|
||||
int emulate_model_alias;
|
||||
int emulate_dpo;
|
||||
int emulate_fua_write;
|
||||
int emulate_fua_read;
|
||||
|
Loading…
x
Reference in New Issue
Block a user