RE: 2.6.23-rc9 boot failure (megaraid?)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: FUJITA Tomonori [mailto:fujita.tomonori@xxxxxxxxxxxxx] 
> Sent: Tuesday, October 02, 2007 5:01 PM
> To: James.Bottomley@xxxxxxxxxxxx
> Cc: bunk@xxxxxxxxxx; bwindle@xxxxxxxx; 
> linux-kernel@xxxxxxxxxxxxxxx; jens.axboe@xxxxxxxxxx; 
> fujita.tomonori@xxxxxxxxxxxxx; Patro, Sumant; DL-MegaRAID 
> Linux; linux-scsi@xxxxxxxxxxxxxxx
> Subject: Re: 2.6.23-rc9 boot failure (megaraid?)
> 
> On Tue, 02 Oct 2007 15:38:13 -0500
> James Bottomley <James.Bottomley@xxxxxxxxxxxx> wrote:
> 
> > On Tue, 2007-10-02 at 20:15 +0200, Adrian Bunk wrote:
> > > Cc's added, the complete bug report is at
> > >   http://lkml.org/lkml/2007/10/2/243
> > > 
> > > On Tue, Oct 02, 2007 at 12:48:26PM -0400, Burton Windle wrote:
> > > > 2.6.23-rc9 fails to boot for me; 2.6.22.9 works fine.
> > > >
> > > > System is a Dell Poweredge with PERC 2/DC with RAID1 volume.
> > > >...
> > > 
> > > Thanks for your report.
> > > 
> > > Diff'ing the dmesg's shows:
> > > 
> > > <--  snip  -->
> > > 
> > >  scsi0: scanning scsi channel 4 [P0] for physical devices.
> > >  scsi0: scanning scsi channel 5 [P1] for physical devices.
> > >  st: Version 20070203, fixed bufsize 32768, s/g segs 256 -sd 
> > > 0:0:0:0: [sda] 17547264 512-byte hardware sectors (8984 MB)
> > > +sd 0:0:0:0: [sda] Sector size 0 reported, assuming 512.
> > > +sd 0:0:0:0: [sda] 1 512-byte hardware sectors (0 MB)
> > >  sd 0:0:0:0: [sda] Write Protect is off  sd 0:0:0:0: [sda] Asking 
> > > for cache data failed  sd 0:0:0:0: [sda] Assuming drive 
> cache: write 
> > > through -sd 0:0:0:0: [sda] 17547264 512-byte hardware 
> sectors (8984 
> > > MB)
> > > +sd 0:0:0:0: [sda] Sector size 0 reported, assuming 512.
> > > +sd 0:0:0:0: [sda] 1 512-byte hardware sectors (0 MB)
> > >  sd 0:0:0:0: [sda] Write Protect is off  sd 0:0:0:0: [sda] Asking 
> > > for cache data failed  sd 0:0:0:0: [sda] Assuming drive 
> cache: write 
> > > through
> > >   sda: sda1
> > > + sda: p1 exceeds device capacity
> > > 
> > > <--  snip  -->
> > > 
> > > -	case MEGA_BULK_DATA:
> > > -		if (scb->cmd->use_sg == 0)
> > > -			length = scb->cmd->request_bufflen;
> > > -		else {
> > > -			struct scatterlist *sgl =
> > > -				(struct scatterlist 
> *)scb->cmd->request_buffer;
> > > -			length = sgl->length;
> > > -		}
> > > -		pci_unmap_page(adapter->dev, scb->dma_h_bulkdata,
> > > -			       length, scb->dma_direction);
> > > -		break;
> > > -
> > 
> > This is the problem piece I think.  We've reintroduced a 
> very old bug:
> > 
> > commit 51c928c34fa7cff38df584ad01de988805877dba
> > Author: James Bottomley <James.Bottomley@xxxxxxxxxxxx>
> > Date:   Sat Oct 1 09:38:05 2005 -0500
> > 
> >     [SCSI] Legacy MegaRAID: Fix READ CAPACITY
> >     
> >     Some Legacy megaraid cards can't actually cope with the 
> scatter/gather
> >     version of the READ CAPACITY command (which is what we 
> now send them
> >     since altering all SCSI internal I/O to go via the 
> block layer).  Fix
> >     this (and a few other broken megaraid driver 
> assumptions) by sending
> >     the non-sg version of the command if the sg list only 
> has a single
> >     element.
> >     
> >     Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxx>
> > 
> > So what we have to do is put back the check for use_sg == 1 
> and send 
> > that as a bulk transfer command.
> 
> Sorry about this. Can this fix the problem?
> 
> Thanks,
> 
> 
> diff --git a/drivers/scsi/megaraid.c 
> b/drivers/scsi/megaraid.c index 3907f67..da56163 100644
> --- a/drivers/scsi/megaraid.c
> +++ b/drivers/scsi/megaraid.c
> @@ -1753,6 +1753,14 @@ mega_build_sglist(adapter_t *adapter, 
> scb_t *scb, u32 *buf, u32 *len)
>  
>  	*len = 0;
>  
> +	if (scsi_sg_count(cmd) == 1 && !adapter->has_64bit_addr) {
> +		sg = scsi_sglist(cmd);
> +		scb->dma_h_bulkdata = sg_dma_address(sg);
> +		*buf = (u32)scb->dma_h_bulkdata;
> +		*len = sg_dma_len(sg);
> +		return 0;
> +	}
> +
>  	scsi_for_each_sg(cmd, sg, sgcnt, idx) {
>  		if (adapter->has_64bit_addr) {
>  			scb->sgl64[idx].address = sg_dma_address(sg);
> 


With this patch I see the correct logical disk size reported.
Thanks.

Sumant
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux