Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd30e931 authored by Nicholas Bellinger's avatar Nicholas Bellinger
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 93d441a8
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -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;
+0 −2
Original line number Original line Diff line number Diff line
@@ -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,
+0 −2
Original line number Original line Diff line number Diff line
@@ -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,
+0 −1
Original line number Original line Diff line number Diff line
@@ -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,
+0 −3
Original line number Original line Diff line number Diff line
@@ -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);