Re: initiator can write to the write-protected device in demo mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/15/2015 05:21 PM, Nicholas A. Bellinger wrote:
After thinking about this a bit more, I'd prefer the following to
propagate up a read-only bit using se_device->dev_flags, and
subsequently override the passed lun_access in core_tpg_add_lun().

WDYT..?

Looks like a good solution to me!

Thanks -- Andy


diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c
index 5a9982f..0f19e11 100644
--- a/drivers/target/target_core_iblock.c
+++ b/drivers/target/target_core_iblock.c
@@ -105,6 +105,8 @@ static int iblock_configure_device(struct se_device *dev)
  	mode = FMODE_READ|FMODE_EXCL;
  	if (!ib_dev->ibd_readonly)
  		mode |= FMODE_WRITE;
+	else
+		dev->dev_flags |= DF_READ_ONLY;

  	bd = blkdev_get_by_path(ib_dev->ibd_udev_path, mode, ib_dev);
  	if (IS_ERR(bd)) {
diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c
index 2d0381d..5fb9dd7 100644
--- a/drivers/target/target_core_tpg.c
+++ b/drivers/target/target_core_tpg.c
@@ -668,7 +668,10 @@ int core_tpg_add_lun(
  	list_add_tail(&lun->lun_dev_link, &dev->dev_sep_list);
  	spin_unlock(&dev->se_port_lock);

-	lun->lun_access = lun_access;
+	if (dev->dev_flags & DF_READ_ONLY)
+		lun->lun_access = TRANSPORT_LUNFLAGS_READ_ONLY;
+	else
+		lun->lun_access = lun_access;
  	if (!(dev->se_hba->hba_flags & HBA_FLAGS_INTERNAL_USE))
  		hlist_add_head_rcu(&lun->link, &tpg->tpg_lun_hlist);
  	mutex_unlock(&tpg->tpg_lun_mutex);
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index ac9bf1c..5f48754 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -730,6 +730,7 @@ struct se_device {
  #define DF_EMULATED_VPD_UNIT_SERIAL		0x00000004
  #define DF_USING_UDEV_PATH			0x00000008
  #define DF_USING_ALIAS				0x00000010
+#define DF_READ_ONLY				0x00000020
  	/* Physical device queue depth */
  	u32			queue_depth;
  	/* Used for SPC-2 reservations enforce of ISIDs */


--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux