[PATCH] firewire: sbp2: add support for disks >2 TB (and CBSs >12 bytes)

Stefan Richter
2009-06-29T20:01:35Z

I wrote:
> I need to fix the SBP-2 drivers to set the limit correctly. This will
> be a little more than one-liners though, I guess, because we need to
> check a target capability datum before we set the length limit.

No, we don't need to check anything. The transport allows for
arbitrarily sized command descriptor blocks.

---------- 8< ----------

We forgot to set Scsi_Host.max_cmd_len. Therefore SCSI core sent at
most 12 bytes long commands to FireWire targets. Among else, this
prevented support of disks larger than 2 TB.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
---
drivers/firewire/sbp2.c | 6 ++++++
1 file changed, 6 insertions(+)

Index: b/drivers/firewire/sbp2.c
===================================================================
--- a/drivers/firewire/sbp2.c
+++ b/drivers/firewire/sbp2.c
@@ -1146,6 +1146,12 @@ static int sbp2_probe(struct device *dev
if (fw_device_enable_phys_dma(device) < 0)
goto fail_shost_put;

+ /*
+ * SBP-2 does not impose limits on the CDB length. Targets may have
+ * limits, but this is going to be reported at the command set level.
+ */
+ shost->max_cmd_len = SCSI_MAX_VARLEN_CDB_SIZE;
+
if (scsi_add_host(shost, &unit->device) < 0)
goto fail_shost_put;

--
Stefan Richter
-=====-==--= -==- ===-=