On 05/12/2014 14:58, Martin K. Petersen wrote:
>>>>>> "Ming" == Ming Lei <ming....@canonical.com> writes:
> 
>>> What about in READ CAPACITY(16)?
> 
> Ming> It isn't set too.
> 
> Please try the following patch:
> 
> 
> [SCSI] sd: Tweak discard heuristics to work around QEMU SCSI issue
> 
> 7985090aa020 changed the discard heuristics to give preference to the
> WRITE SAME commands that (unlike UNMAP) guarantee deterministic results.
> 
> Ming Lei discovered that QEMU SCSI's WRITE SAME implementation
> internally relied on limits that were only communicated for the UNMAP
> case. And therefore discard commands backed by WRITE SAME would fail.
> 
> Tweak the heuristics so we still pick UNMAP in the LBPRZ=0 case and only
> prefer the WRITE SAME variants if the device has the LBPRZ flag set.
> 
> Reported-by: Ming Lei <ming....@canonical.com>
> Signed-off-by: Martin K. Petersen <martin.peter...@oracle.com>
> 
> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
> index 95bfb7bfbb9d..76c5d1388417 100644
> --- a/drivers/scsi/sd.c
> +++ b/drivers/scsi/sd.c
> @@ -2623,8 +2623,9 @@ static void sd_read_block_limits(struct scsi_disk *sdkp)
>                               sd_config_discard(sdkp, SD_LBP_WS16);
>  
>               } else {        /* LBP VPD page tells us what to use */
> -
> -                     if (sdkp->lbpws)
> +                     if (sdkp->lbpu && sdkp->max_unmap_blocks && 
> !sdkp->lbprz)
> +                             sd_config_discard(sdkp, SD_LBP_UNMAP);
> +                     else if (sdkp->lbpws)
>                               sd_config_discard(sdkp, SD_LBP_WS16);
>                       else if (sdkp->lbpws10)
>                               sd_config_discard(sdkp, SD_LBP_WS10);
> 

This is the right fix.  Ming, how do you reproduce the QEMU bug?

Acked-by: Paolo Bonzini <pbonz...@redhat.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to