Am 02.04.2014 14:45, schrieb Paolo Bonzini:
> Some targets may return "invalid field" as the ASCQ from WRITE SAME
> if they support the command only without the UNMAP field.  Recognize
> that, and return ENOTSUP just like for "invalid operation code".
>
> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
> ---
>  block/iscsi.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/block/iscsi.c b/block/iscsi.c
> index 6d6cd4f..f01c883 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -1012,7 +1012,8 @@ retry:
>  
>      if (iTask.status == SCSI_STATUS_CHECK_CONDITION &&
>          iTask.task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST &&
> -        iTask.task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) {
> +        (iTask.task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE ||
> +      iTask.task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB)) {
>          /* WRITE SAME is not supported by the target */
>          iscsilun->has_write_same = false;
>          scsi_free_scsi_task(iTask.task);

I also checked that

SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB

is available in libiscsi 1.4.0 already.


Reviewed-by: Peter Lieven <p...@kamp.de>


Reply via email to