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

Commit 4b36b68c authored by Nicholas Bellinger's avatar Nicholas Bellinger
Browse files

target: Disallow changing of WRITE cache/FUA attrs after export



Now that incoming FUA=1 bit check is enforced for backends with FUA or
WCE disabled, go ahead and disallow the changing of related backend
attributes when active fabric exports exist.

This is required to avoid potential failures with existing initiator
LUN registrations that have been previously created with FUA=1.

Reported-by: default avatarChristoph Hellwig <hch@lst.de>
Cc: Doug Gilbert <dgilbert@interlog.com>
Cc: James Bottomley <JBottomley@Parallels.com>
Cc: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent c517d838
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -767,6 +767,16 @@ int se_dev_set_emulate_fua_write(struct se_device *dev, int flag)
		pr_err("Illegal value %d\n", flag);
		return -EINVAL;
	}
	if (flag &&
	    dev->transport->get_write_cache) {
		pr_err("emulate_fua_write not supported for this device\n");
		return -EINVAL;
	}
	if (dev->export_count) {
		pr_err("emulate_fua_write cannot be changed with active"
		       " exports: %d\n", dev->export_count);
		return -EINVAL;
	}
	dev->dev_attrib.emulate_fua_write = flag;
	pr_debug("dev[%p]: SE Device Forced Unit Access WRITEs: %d\n",
			dev, dev->dev_attrib.emulate_fua_write);
@@ -801,7 +811,11 @@ int se_dev_set_emulate_write_cache(struct se_device *dev, int flag)
		pr_err("emulate_write_cache not supported for this device\n");
		return -EINVAL;
	}

	if (dev->export_count) {
		pr_err("emulate_write_cache cannot be changed with active"
		       " exports: %d\n", dev->export_count);
		return -EINVAL;
	}
	dev->dev_attrib.emulate_write_cache = flag;
	pr_debug("dev[%p]: SE Device WRITE_CACHE_EMULATION flag: %d\n",
			dev, dev->dev_attrib.emulate_write_cache);