Re: 2.6.3 Problems with firewire DVD-writer (caused by SCSI change)

From: Michael Guntsche
Date: Thu Feb 19 2004 - 12:59:58 EST



> While trying to burn some files to it with growisofs I got the following
> error message
> and the program froze.

> --- syslog ---

> Feb 18 22:20:56 localhost kernel: SCSI error : <0 0 0 0> return code =
> 0x8000002
> Feb 18 22:20:56 localhost kernel: Current sr0: sense = 70 4
> Feb 18 22:20:56 localhost kernel: ASC=1b ASCQ= 0
> Feb 18 22:20:56 localhost kernel: Raw sense data:0x70 0x00 0x04 0x00
> 0x00 0x00 0x00 0x0a 0x00 0x00 0x00 0x00 0x1b 0x00 0x00 0x00 0x00 0x00
> <repeating>

> --- syslog ---

> Trying the same with USB 2.0 worked without a problem.
<snip>

Ok, digging through the sources I found out that the following change causes
the problems I have.

---------------
diff -Nru a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
--- a/drivers/scsi/scsi_lib.c Fri Feb 6 18:08:14 2004
+++ b/drivers/scsi/scsi_lib.c Fri Feb 6 18:08:14 2004
@@ -1287,6 +1284,15 @@
blk_queue_max_sectors(q, shost->max_sectors);
blk_queue_bounce_limit(q, scsi_calculate_bounce_limit(shost));
blk_queue_segment_boundary(q, shost->dma_boundary);
+
+ /*
+ * Set the queue's mask to require a mere 8-byte alignment for
+ * DMA buffers, rather than the default 512. This shouldn't
+ * inconvenience any user programs and should be okay for most
+ * host adapters. A host driver can alter this mask in its
+ * slave_alloc() or slave_configure() callback if necessary.
+ */
+ blk_queue_dma_alignment(q, (8 - 1));

if (!shost->use_clustering)
clear_bit(QUEUE_FLAG_CLUSTER, &q->queue_flags);
---------------

Commenting out this change made my burner work again.
Can someone tell me why?


/Michael


Attachment: pgp00000.pgp
Description: PGP signature