Bug 16010 - Mptlinux update problem but need
Summary: Mptlinux update problem but need
Status: RESOLVED INVALID
Alias: None
Product: SCSI Drivers
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: scsi_drivers-other
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-20 07:24 UTC by Fabio Fantoni
Modified: 2012-07-12 13:27 UTC (History)
3 users (show)

See Also:
Kernel Version: 2.6.32
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Fabio Fantoni 2010-05-20 07:24:07 UTC
For Omsa 6.0.1 is need mptlinux version more than 3.04 present in kernel
I have download 4.22 from lsi site and try build update driver with dkms, i have already do same on 2.6.26 past without problem but with 2.6.32 give this compilation error:

/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c: In function ‘mptsas_smp_handler’:
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2757: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2758: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2775: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2805: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2808: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2821: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2823: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2854: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2855: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2864: error: ‘struct request’ has no member named ‘data_len’
/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2867: error: ‘struct request’ has no member named ‘data_len’
make[3]: *** [/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.o] Error 1
make[2]: *** [_module_/var/lib/dkms/mptlinux/4.22.00.00/build] Error 2
make[1]: *** [sub-make] Error 2
make: *** [all] Error 2 

Is possible update mptlinux on new kernel version please?
Comment 1 dujun 2010-05-21 09:33:32 UTC
you could fix it by change the data_len to _data_len. pls refer to the "struct request" in the 2.6.32 kernel header.
Comment 2 Anonymous Emailer 2010-05-21 14:05:40 UTC
Reply-To: James.Bottomley@suse.de

On Thu, 2010-05-20 at 07:24 +0000, bugzilla-daemon@bugzilla.kernel.org
wrote:
> For Omsa 6.0.1 is need mptlinux version more than 3.04 present in kernel
> I have download 4.22 from lsi site and try build update driver with dkms, i
> have already do same on 2.6.26 past without problem but with 2.6.32 give this
> compilation error:
> 
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c: In function
> ‘mptsas_smp_handler’:
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2757: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2758: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2775: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2805: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2808: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2821: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2823: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2854: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2855: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2864: error: ‘struct
> request’
> has no member named ‘data_len’
> /var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.c:2867: error: ‘struct
> request’
> has no member named ‘data_len’
> make[3]: *** [/var/lib/dkms/mptlinux/4.22.00.00/build/mptsas.o] Error 1
> make[2]: *** [_module_/var/lib/dkms/mptlinux/4.22.00.00/build] Error 2
> make[1]: *** [sub-make] Error 2
> make: *** [all] Error 2 
> 
> Is possible update mptlinux on new kernel version please?

bugzilla.kernel.org is for actual bugs within the linux kernel, not for
problems with out of tree drivers.  The issue you're trying to report
needs to be fixed by LSI.  While it's not impossible they would notice
this request on the scsi mailing list, you're much more likely to get
their attention by requesting support directly from them.

James
Comment 3 Kenneth Stailey 2010-07-12 15:30:29 UTC
@dujun - Thanks

It's actually a double underscore: __data_len

diff against 4.22.00.00-2

--- mptsas.c.DIST	2009-11-12 05:17:05.000000000 -0500
+++ mptsas.c	2010-07-12 11:14:41.480493720 -0400
@@ -2754,8 +2754,8 @@
 	/* do we need to support multiple segments? */
 	if (req->bio->bi_vcnt > 1 || rsp->bio->bi_vcnt > 1) {
 		printk(MYIOC_s_ERR_FMT "%s: multiple segments req %u %u, rsp %u %u\n",
-		    ioc->name, __func__, req->bio->bi_vcnt, req->data_len,
-		    rsp->bio->bi_vcnt, rsp->data_len);
+		    ioc->name, __func__, req->bio->bi_vcnt, req->__data_len,
+		    rsp->bio->bi_vcnt, rsp->__data_len);
 		return -EINVAL;
 	}
 
@@ -2772,7 +2772,7 @@
 	smpreq = (SmpPassthroughRequest_t *)mf;
 	memset(smpreq, 0, sizeof(*smpreq));
 
-	smpreq->RequestDataLength = cpu_to_le16(req->data_len - 4);
+	smpreq->RequestDataLength = cpu_to_le16(req->__data_len - 4);
 	smpreq->Function = MPI_FUNCTION_SMP_PASSTHROUGH;
 
 	if (rphy)
@@ -2802,10 +2802,10 @@
 
 	flagsLength = flagsLength << MPI_SGE_FLAGS_SHIFT;
 
-	flagsLength |= (req->data_len - 4);
+	flagsLength |= (req->__data_len - 4);
 
 	dma_addr_out = pci_map_single(ioc->pcidev, bio_data(req->bio),
-				      req->data_len, PCI_DMA_BIDIRECTIONAL);
+				      req->__data_len, PCI_DMA_BIDIRECTIONAL);
 	if (!dma_addr_out)
 		goto put_mf;
 	ioc->add_sge(psge, flagsLength, dma_addr_out);
@@ -2818,9 +2818,9 @@
 		MPI_SGE_FLAGS_END_OF_BUFFER;
 
 	flagsLength = flagsLength << MPI_SGE_FLAGS_SHIFT;
-	flagsLength |= rsp->data_len + 4;
+	flagsLength |= rsp->__data_len + 4;
 	dma_addr_in =  pci_map_single(ioc->pcidev, bio_data(rsp->bio),
-				      rsp->data_len, PCI_DMA_BIDIRECTIONAL);
+				      rsp->__data_len, PCI_DMA_BIDIRECTIONAL);
 	if (!dma_addr_in)
 		goto out_unmap;
 
@@ -2851,8 +2851,8 @@
 		smprep = (SmpPassthroughReply_t *)ioc->sas_mgmt.reply;
 		memcpy(req->sense, smprep, sizeof(*smprep));
 		req->sense_len = sizeof(*smprep);
-		req->data_len = 0;
-		rsp->data_len -= smprep->ResponseDataLength;
+		req->__data_len = 0;
+		rsp->__data_len -= smprep->ResponseDataLength;
 	} else {
 		printk(MYIOC_s_ERR_FMT
 		    "%s: smp passthru reply failed to be returned\n",
@@ -2861,10 +2861,10 @@
 	}
 out_unmap:
 	if (dma_addr_out)
-		pci_unmap_single(ioc->pcidev, dma_addr_out, req->data_len,
+		pci_unmap_single(ioc->pcidev, dma_addr_out, req->__data_len,
 				 PCI_DMA_BIDIRECTIONAL);
 	if (dma_addr_in)
-		pci_unmap_single(ioc->pcidev, dma_addr_in, rsp->data_len,
+		pci_unmap_single(ioc->pcidev, dma_addr_in, rsp->__data_len,
 				 PCI_DMA_BIDIRECTIONAL);
 put_mf:
 	if (mf)

Note You need to log in before you can comment on or make changes to this bug.