mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 22:50:41 +00:00
target: Drop se_subsystem_api->[write_cache,fua_write]_emulated flags
This patch drops se_subsystem_api->[write_cache,fua_write]_emulated flags set by viritual FILEIO/IBLOCK/RD_MCP backend drivers in favor of explict TRANSPORT_PLUGIN_PHBA_PDEV checks to know when to fail if userspace is attempting to set virtual emulation bits for an pSCSI (passthrough) backend device. Reported-by: Christoph Hellwig <hch@lst.de> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
93d441a888
commit
fd30e93102
@ -988,8 +988,9 @@ int se_dev_set_emulate_fua_write(struct se_device *dev, int flag)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag && dev->transport->fua_write_emulated == 0) {
|
if (flag &&
|
||||||
pr_err("fua_write_emulated not supported\n");
|
dev->transport->transport_type == TRANSPORT_PLUGIN_PHBA_PDEV) {
|
||||||
|
pr_err("emulate_fua_write not supported for pSCSI\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
dev->se_sub_dev->se_dev_attrib.emulate_fua_write = flag;
|
dev->se_sub_dev->se_dev_attrib.emulate_fua_write = flag;
|
||||||
@ -1019,8 +1020,9 @@ int se_dev_set_emulate_write_cache(struct se_device *dev, int flag)
|
|||||||
pr_err("Illegal value %d\n", flag);
|
pr_err("Illegal value %d\n", flag);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (flag && dev->transport->write_cache_emulated == 0) {
|
if (flag &&
|
||||||
pr_err("write_cache_emulated not supported\n");
|
dev->transport->transport_type == TRANSPORT_PLUGIN_PHBA_PDEV) {
|
||||||
|
pr_err("emulate_write_cache not supported for pSCSI\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
dev->se_sub_dev->se_dev_attrib.emulate_write_cache = flag;
|
dev->se_sub_dev->se_dev_attrib.emulate_write_cache = flag;
|
||||||
|
@ -546,8 +546,6 @@ static struct se_subsystem_api fileio_template = {
|
|||||||
.name = "fileio",
|
.name = "fileio",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.transport_type = TRANSPORT_PLUGIN_VHBA_PDEV,
|
.transport_type = TRANSPORT_PLUGIN_VHBA_PDEV,
|
||||||
.write_cache_emulated = 1,
|
|
||||||
.fua_write_emulated = 1,
|
|
||||||
.attach_hba = fd_attach_hba,
|
.attach_hba = fd_attach_hba,
|
||||||
.detach_hba = fd_detach_hba,
|
.detach_hba = fd_detach_hba,
|
||||||
.allocate_virtdevice = fd_allocate_virtdevice,
|
.allocate_virtdevice = fd_allocate_virtdevice,
|
||||||
|
@ -766,8 +766,6 @@ static struct se_subsystem_api iblock_template = {
|
|||||||
.name = "iblock",
|
.name = "iblock",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.transport_type = TRANSPORT_PLUGIN_VHBA_PDEV,
|
.transport_type = TRANSPORT_PLUGIN_VHBA_PDEV,
|
||||||
.write_cache_emulated = 1,
|
|
||||||
.fua_write_emulated = 1,
|
|
||||||
.attach_hba = iblock_attach_hba,
|
.attach_hba = iblock_attach_hba,
|
||||||
.detach_hba = iblock_detach_hba,
|
.detach_hba = iblock_detach_hba,
|
||||||
.allocate_virtdevice = iblock_allocate_virtdevice,
|
.allocate_virtdevice = iblock_allocate_virtdevice,
|
||||||
|
@ -474,7 +474,6 @@ static int rd_parse_cdb(struct se_cmd *cmd)
|
|||||||
static struct se_subsystem_api rd_mcp_template = {
|
static struct se_subsystem_api rd_mcp_template = {
|
||||||
.name = "rd_mcp",
|
.name = "rd_mcp",
|
||||||
.transport_type = TRANSPORT_PLUGIN_VHBA_VDEV,
|
.transport_type = TRANSPORT_PLUGIN_VHBA_VDEV,
|
||||||
.write_cache_emulated = 1,
|
|
||||||
.attach_hba = rd_attach_hba,
|
.attach_hba = rd_attach_hba,
|
||||||
.detach_hba = rd_detach_hba,
|
.detach_hba = rd_detach_hba,
|
||||||
.allocate_virtdevice = rd_allocate_virtdevice,
|
.allocate_virtdevice = rd_allocate_virtdevice,
|
||||||
|
@ -13,9 +13,6 @@ struct se_subsystem_api {
|
|||||||
|
|
||||||
u8 transport_type;
|
u8 transport_type;
|
||||||
|
|
||||||
unsigned int fua_write_emulated : 1;
|
|
||||||
unsigned int write_cache_emulated : 1;
|
|
||||||
|
|
||||||
int (*attach_hba)(struct se_hba *, u32);
|
int (*attach_hba)(struct se_hba *, u32);
|
||||||
void (*detach_hba)(struct se_hba *);
|
void (*detach_hba)(struct se_hba *);
|
||||||
int (*pmode_enable_hba)(struct se_hba *, unsigned long);
|
int (*pmode_enable_hba)(struct se_hba *, unsigned long);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user