Re: [RFC PATCH] target: For Exclusive Access registration allow all registrants to READ (resend)

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

 



Ping?

I never heard a thing on this, so I'll submit it to linux-scsi.

On 12/19/2014 02:19 PM, Lee Duncan wrote:
> Recent changes by Nicholas to fix the Persistent Group Reservation
> code for the iSCSI target code prompted me to run my PGR test suite
> (see https://github.com/gonzoleeman/open-iscsi-pgr-validate), and I
> found one more bug in the PR code.
> For a PR lock type of Exclusive Access, all registrants should be able
> to read from the device though only the reservation holder should be
> able to write to the device.
> The current target code disallows reading as well as writing in this
> case, which is a bug.
> The following patch seems to fix this, but I'm using
> "cmd->data_direction == DMA_FROM_DEVICE" to identify READ commands,
> and I'm not sure this is correct. Perhaps the code should explicitly
> check for allowed commands as per SBC 3, Section 4.17 Reservations,
> Table 4 SBC-3 commands that are allowed in the presence of various
> reservations?
> 
> I would appreciate your input since you know the code so well.
> 
> ----------------------------------------------------------------
> From: Lee Duncan <lduncan@xxxxxxxx>
> Subject: [PATCH] target: Allow READ fro Write Exclusive Registrants.
> 
> For reservation type Exclusive Access, allow all registrants
> to read from the device.
> 
> Signed-off-by: Lee Duncan <lduncan@xxxxxxxx>
> ---  target_core_pr.c |   12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
> --- a/drivers/target/target_core_pr.c	2014-12-18 18:05:34.155248494 -0800
> +++ b/drivers/target/target_core_pr.c	2014-12-18 19:49:46.786931456 -0800
> @@ -528,6 +528,18 @@ static int core_scsi3_pr_seq_non_holder(
>   			return 0;
>  		}
> +	} else if (we && registered_nexus) {
> +		/*
> +		 * Reads are allowed for Write Exclusive locks
> +		 * from all registrants.
> +		 */
> +		if (cmd->data_direction == DMA_FROM_DEVICE) {
> +			pr_debug("Allowing READ CDB: 0x%02x for %s"
> +				" reservation\n", cdb[0],
> +				core_scsi3_pr_dump_type(pr_reg_type));
> +
> +			return 0;
> +		}
>  	}
>  	pr_debug("%s Conflict for %sregistered nexus %s CDB: 0x%2x"
>  		" for %s reservation\n", transport_dump_cmd_direction(cmd),
> 
> --
> 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
> 

-- 
Lee Duncan
SUSE Labs
--
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