Re: [PATCH] tcm_loop: Set residual field for SCSI commands

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

 



On Tue, 2012-02-14 at 15:30 -0800, Roland Dreier wrote:
> From: Roland Dreier <roland@xxxxxxxxxxxxxxx>
> 
> If the target core signals an over- or under-run, tcm_loop should call
> scsi_set_resid() to tell the SCSI midlayer about the residual data length.
> 
> The difference can be seen by doing something like
> 
>     strace -eioctl sg_raw -r 1024 /dev/sda 8 0 0 0 1 0 > /dev/null
> 
> and looking at the "resid=" part of the SG_IO ioctl -- after this patch,
> the field is correctly reported as 512.
> 
> Signed-off-by: Roland Dreier <roland@xxxxxxxxxxxxxxx>
> ---
>  drivers/target/loopback/tcm_loop.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c
> index 9ff6684..97f51df 100644
> --- a/drivers/target/loopback/tcm_loop.c
> +++ b/drivers/target/loopback/tcm_loop.c
> @@ -830,6 +830,9 @@ static int tcm_loop_queue_data_in(struct se_cmd *se_cmd)
>  
>  	sc->result = SAM_STAT_GOOD;
>  	set_host_byte(sc, DID_OK);
> +	if ((se_cmd->se_cmd_flags & SCF_OVERFLOW_BIT) ||
> +	    (se_cmd->se_cmd_flags & SCF_UNDERFLOW_BIT))
> +		scsi_set_resid(sc, se_cmd->residual_count);
>  	sc->scsi_done(sc);
>  	return 0;
>  }
> @@ -855,6 +858,9 @@ static int tcm_loop_queue_status(struct se_cmd *se_cmd)
>  		sc->result = se_cmd->scsi_status;
>  
>  	set_host_byte(sc, DID_OK);
> +	if ((se_cmd->se_cmd_flags & SCF_OVERFLOW_BIT) ||
> +	    (se_cmd->se_cmd_flags & SCF_UNDERFLOW_BIT))
> +		scsi_set_resid(sc, se_cmd->residual_count);
>  	sc->scsi_done(sc);
>  	return 0;
>  }

Applied to lio-core, and will get this queued for a 3.3-rc-fixes pull
request.

Thanks Roland!

--nab


--
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