All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Lord <liml@rtr.ca>
To: Tejun Heo <htejun@gmail.com>,
	IDE/ATA development list <linux-ide@vger.kernel.org>,
	Sebastian Kemper <sebastian_ml@gmx.net>
Cc: Jeff Garzik <jgarzik@pobox.com>, Alan Cox <alan@redhat.com>,
	Linux Kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH] libata-scsi:  be tolerant of 12-byte ATAPI commands in 16-byte CDBs
Date: Wed, 14 Nov 2007 12:44:23 -0500	[thread overview]
Message-ID: <473B33F7.7030708@rtr.ca> (raw)
In-Reply-To: <473B1B83.9020103@rtr.ca>

Sebastian Kemper reported that issuing CD/DVD commands under libata
is not fully compatible with ide-scsi.  In particular, the GPCMD_SET_STREAMING
was being rejected at the host level in some instances.

The reason is that libata-scsi insists upon the cmd_len field exactly matching
the SCSI opcode being issued, whereas ide-scsi tolerates 12-byte commands
contained within a 16-byte (cmd_len) CDB.

There doesn't seem to be a good reason for us to not be compatible there,
so here is a patch to fix libata-scsi to permit SCSI opcodes so long as
they fit within whatever size CDB is provided.

Signed-off-by: Mark Lord <mlord@pobox.com>
---

Patch is against 2.6.24-rc2-git4.
Sebastian, could you please re-test with this patch
and let us know that it works for you (or not).

--- old/drivers/ata/libata-scsi.c	2007-11-13 23:25:15.000000000 -0500
+++ linux/drivers/ata/libata-scsi.c	2007-11-14 12:32:16.000000000 -0500
@@ -2869,7 +2869,8 @@
 		xlat_func = NULL;
 		if (likely((scsi_op != ATA_16) || !atapi_passthru16)) {
 			/* relay SCSI command to ATAPI device */
-			if (unlikely(scmd->cmd_len > dev->cdb_len))
+			int len = COMMAND_SIZE(scsi_op);
+			if (unlikely(len > scmd->cmd_len || len > dev->cdb_len))
 				goto bad_cdb_len;
 
 			xlat_func = atapi_xlat;

  reply	other threads:[~2007-11-14 17:44 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-13 16:43 libata/PATA: GPCMD_SET_STREAMING via SG_IO does nothing Sebastian Kemper
2007-11-13 21:22 ` Alan Cox
2007-11-13 23:28   ` Sebastian Kemper
2007-11-14 12:11     ` Sebastian Kemper
2007-11-14 15:09     ` Mark Lord
2007-11-14 15:38       ` Sebastian Kemper
2007-11-14 16:00         ` Mark Lord
2007-11-14 17:44           ` Mark Lord [this message]
2007-11-14 17:50             ` [PATCH] libata-scsi: be tolerant of 12-byte ATAPI commands in 16-byte CDBs Alan Cox
2007-11-15  2:26             ` Tejun Heo
2007-11-14 16:26     ` libata/PATA: GPCMD_SET_STREAMING via SG_IO does nothing Mark Lord
2007-11-14 16:41       ` Mark Lord
2007-11-14 17:11         ` Sebastian Kemper
2007-11-14 17:21           ` Mark Lord
2007-11-15 20:55             ` Bartlomiej Zolnierkiewicz
2007-11-15 20:59               ` Mark Lord
2007-11-14 17:16       ` Sebastian Kemper
2007-11-14 17:49         ` Mark Lord

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=473B33F7.7030708@rtr.ca \
    --to=liml@rtr.ca \
    --cc=alan@redhat.com \
    --cc=htejun@gmail.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sebastian_ml@gmx.net \
    /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.