All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sagi Grimberg <sagig@dev.mellanox.co.il>
To: "Nicholas A. Bellinger" <nab@daterainc.com>,
	target-devel <target-devel@vger.kernel.org>
Cc: linux-scsi <linux-scsi@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Christoph Hellwig <hch@lst.de>, Hannes Reinecke <hare@suse.de>,
	Sagi Grimberg <sagig@mellanox.com>,
	Or Gerlitz <ogerlitz@mellanox.com>,
	Roland Dreier <roland@kernel.org>,
	Nicholas Bellinger <nab@linux-iscsi.org>
Subject: Re: [PATCH-v2 10/17] target: Add protection SGLs to target_submit_cmd_map_sgls
Date: Sun, 19 Jan 2014 14:12:53 +0200	[thread overview]
Message-ID: <52DBC145.7040104@dev.mellanox.co.il> (raw)
In-Reply-To: <1390099480-29013-11-git-send-email-nab@daterainc.com>

On 1/19/2014 4:44 AM, Nicholas A. Bellinger wrote:
> From: Nicholas Bellinger <nab@linux-iscsi.org>
>
> This patch adds support to target_submit_cmd_map_sgls() for
> accepting 'sgl_prot' + 'sgl_prot_count' parameters for
> DIF protection information.
>
> Note the passed parameters are stored at se_cmd->t_prot_sg
> and se_cmd->t_prot_nents respectively.
>
> Also, update tcm_loop and vhost-scsi fabrics usage of
> target_submit_cmd_map_sgls() to take into account the
> new parameters.

I didn't see that you added protection allocation to transports that 
does not use
target_submit_cmd_map_sgls() - which happens to be iSCSI/iSER/SRP :(

Don't you think that prot SG allocation should be added also to 
target_alloc_sgl()? by then
se_cmd should contain the protection attributes and this routine can 
know if it needs to
allocate prot_sg as well. This is how I used it...

> Cc: Martin K. Petersen <martin.petersen@oracle.com>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Hannes Reinecke <hare@suse.de>
> Cc: Sagi Grimberg <sagig@mellanox.com>
> Cc: Or Gerlitz <ogerlitz@mellanox.com>
> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
> ---
>   drivers/target/loopback/tcm_loop.c     |    2 +-
>   drivers/target/target_core_transport.c |   16 ++++++++++++++--
>   drivers/vhost/scsi.c                   |    2 +-
>   include/target/target_core_fabric.h    |    3 ++-
>   4 files changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c
> index 763ee45..112b795 100644
> --- a/drivers/target/loopback/tcm_loop.c
> +++ b/drivers/target/loopback/tcm_loop.c
> @@ -217,7 +217,7 @@ static void tcm_loop_submission_work(struct work_struct *work)
>   			scsi_bufflen(sc), tcm_loop_sam_attr(sc),
>   			sc->sc_data_direction, 0,
>   			scsi_sglist(sc), scsi_sg_count(sc),
> -			sgl_bidi, sgl_bidi_count);
> +			sgl_bidi, sgl_bidi_count, NULL, 0);
>   	if (rc < 0) {
>   		set_host_byte(sc, DID_NO_CONNECT);
>   		goto out_done;
> diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
> index fa4fc04..aebe0bb 100644
> --- a/drivers/target/target_core_transport.c
> +++ b/drivers/target/target_core_transport.c
> @@ -1310,6 +1310,8 @@ transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *sgl,
>    * @sgl_count: scatterlist count for unidirectional mapping
>    * @sgl_bidi: struct scatterlist memory for bidirectional READ mapping
>    * @sgl_bidi_count: scatterlist count for bidirectional READ mapping
> + * @sgl_prot: struct scatterlist memory protection information
> + * @sgl_prot_count: scatterlist count for protection information
>    *
>    * Returns non zero to signal active I/O shutdown failure.  All other
>    * setup exceptions will be returned as a SCSI CHECK_CONDITION response,
> @@ -1322,7 +1324,8 @@ int target_submit_cmd_map_sgls(struct se_cmd *se_cmd, struct se_session *se_sess
>   		unsigned char *cdb, unsigned char *sense, u32 unpacked_lun,
>   		u32 data_length, int task_attr, int data_dir, int flags,
>   		struct scatterlist *sgl, u32 sgl_count,
> -		struct scatterlist *sgl_bidi, u32 sgl_bidi_count)
> +		struct scatterlist *sgl_bidi, u32 sgl_bidi_count,
> +		struct scatterlist *sgl_prot, u32 sgl_prot_count)
>   {
>   	struct se_portal_group *se_tpg;
>   	sense_reason_t rc;
> @@ -1364,6 +1367,14 @@ int target_submit_cmd_map_sgls(struct se_cmd *se_cmd, struct se_session *se_sess
>   		target_put_sess_cmd(se_sess, se_cmd);
>   		return 0;
>   	}
> +	/*
> +	 * Save pointers for SGLs containing protection information,
> +	 * if present.
> +	 */
> +	if (sgl_prot_count) {
> +		se_cmd->t_prot_sg = sgl_prot;
> +		se_cmd->t_prot_nents = sgl_prot_count;
> +	}
>   
>   	rc = target_setup_cmd_from_cdb(se_cmd, cdb);
>   	if (rc != 0) {
> @@ -1406,6 +1417,7 @@ int target_submit_cmd_map_sgls(struct se_cmd *se_cmd, struct se_session *se_sess
>   			return 0;
>   		}
>   	}
> +
>   	/*
>   	 * Check if we need to delay processing because of ALUA
>   	 * Active/NonOptimized primary access state..
> @@ -1445,7 +1457,7 @@ int target_submit_cmd(struct se_cmd *se_cmd, struct se_session *se_sess,
>   {
>   	return target_submit_cmd_map_sgls(se_cmd, se_sess, cdb, sense,
>   			unpacked_lun, data_length, task_attr, data_dir,
> -			flags, NULL, 0, NULL, 0);
> +			flags, NULL, 0, NULL, 0, NULL, 0);
>   }
>   EXPORT_SYMBOL(target_submit_cmd);
>   
> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index f175629..84488a8 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -889,7 +889,7 @@ static void tcm_vhost_submission_work(struct work_struct *work)
>   			cmd->tvc_lun, cmd->tvc_exp_data_len,
>   			cmd->tvc_task_attr, cmd->tvc_data_direction,
>   			TARGET_SCF_ACK_KREF, sg_ptr, cmd->tvc_sgl_count,
> -			sg_bidi_ptr, sg_no_bidi);
> +			sg_bidi_ptr, sg_no_bidi, NULL, 0);
>   	if (rc < 0) {
>   		transport_send_check_condition_and_sense(se_cmd,
>   				TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE, 0);
> diff --git a/include/target/target_core_fabric.h b/include/target/target_core_fabric.h
> index 4cf4fda..0218d68 100644
> --- a/include/target/target_core_fabric.h
> +++ b/include/target/target_core_fabric.h
> @@ -105,7 +105,8 @@ sense_reason_t transport_lookup_cmd_lun(struct se_cmd *, u32);
>   sense_reason_t target_setup_cmd_from_cdb(struct se_cmd *, unsigned char *);
>   int	target_submit_cmd_map_sgls(struct se_cmd *, struct se_session *,
>   		unsigned char *, unsigned char *, u32, u32, int, int, int,
> -		struct scatterlist *, u32, struct scatterlist *, u32);
> +		struct scatterlist *, u32, struct scatterlist *, u32,
> +		struct scatterlist *, u32);
>   int	target_submit_cmd(struct se_cmd *, struct se_session *, unsigned char *,
>   		unsigned char *, u32, u32, int, int, int);
>   int	target_submit_tmr(struct se_cmd *se_cmd, struct se_session *se_sess,


  reply	other threads:[~2014-01-19 12:12 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-19  2:44 [PATCH-v2 00/17] target: Add support for DIF Type1+Type3 emulation + passthrough Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 01/17] target: Add DIF related base definitions Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 02/17] target: Add DIF CHECK_CONDITION ASC/ASCQ exception cases Nicholas A. Bellinger
2014-01-22 16:44   ` Sagi Grimberg
2014-01-22 22:16     ` Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 03/17] target/sbc: Add DIF setup in sbc_check_prot + sbc_parse_cdb Nicholas A. Bellinger
2014-01-19 11:43   ` Sagi Grimberg
2014-01-21 22:48     ` Nicholas A. Bellinger
2014-01-22 18:00       ` Sagi Grimberg
2014-01-22 22:27         ` Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 04/17] target/sbc: Add DIF TYPE1+TYPE3 read/write verify emulation Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 05/17] target/spc: Add protection bit to standard INQUIRY output Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 06/17] target/spc: Add protection related bits to INQUIRY EVPD=0x86 Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 07/17] target/sbc: Add P_TYPE + PROT_EN bits to READ_CAPACITY_16 Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 08/17] target/spc: Expose ATO bit in control mode page Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 09/17] target/configfs: Expose protection device attributes Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 10/17] target: Add protection SGLs to target_submit_cmd_map_sgls Nicholas A. Bellinger
2014-01-19 12:12   ` Sagi Grimberg [this message]
2014-01-21 22:17     ` Nicholas A. Bellinger
2014-01-22 10:07       ` Sagi Grimberg
2014-01-19  2:44 ` [PATCH-v2 11/17] target/iblock: Add blk_integrity + BIP passthrough support Nicholas A. Bellinger
2014-01-19 12:21   ` Sagi Grimberg
2014-01-21 22:20     ` Nicholas A. Bellinger
2014-01-22  1:54       ` Martin K. Petersen
2014-01-22  1:52     ` Martin K. Petersen
2014-01-22 10:09       ` Sagi Grimberg
2014-01-19  2:44 ` [PATCH-v2 12/17] target/file: Add DIF protection init/format support Nicholas A. Bellinger
2014-01-19 12:31   ` Sagi Grimberg
2014-01-21 22:28     ` Nicholas A. Bellinger
2014-01-22 10:12       ` Sagi Grimberg
2014-01-22 22:13         ` Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 13/17] target/file: Add DIF protection support to fd_execute_rw Nicholas A. Bellinger
2014-01-19 12:37   ` Sagi Grimberg
2014-01-19  2:44 ` [PATCH-v2 14/17] target/rd: Refactor rd_build_device_space + rd_release_device_space Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 15/17] target/rd: Add support for protection SGL setup + release Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 16/17] target/rd: Add DIF protection into rd_execute_rw Nicholas A. Bellinger
2014-01-19  2:44 ` [PATCH-v2 17/17] tcm_loop: Enable DIF/DIX modes in SCSI host LLD Nicholas A. Bellinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52DBC145.7040104@dev.mellanox.co.il \
    --to=sagig@dev.mellanox.co.il \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=nab@daterainc.com \
    --cc=nab@linux-iscsi.org \
    --cc=ogerlitz@mellanox.com \
    --cc=roland@kernel.org \
    --cc=sagig@mellanox.com \
    --cc=target-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.