2007-10-14 05:35:26

by Paul Jackson

[permalink] [raw]
Subject: [PATCH] git scsi misc include fix

From: Paul Jackson <[email protected]>

The added line in scsi_eh.h:
struct scatterlist sense_sgl;
fails to compile, with the error:
field 'sense_sgl' has incomplete type
unless scatterlist.h happens to be included
somehow already ... which it isn't always.

So include scatterlist.h in scsi_eh.h directly.

Signed-off-by: Paul Jackson <[email protected]>

---

This patch goes after the patch 'git-scsi-misc.patch'

include/scsi/scsi_eh.h | 1 +
1 file changed, 1 insertion(+)

--- 2.6.23-mm1.orig/include/scsi/scsi_eh.h 2007-10-13 01:13:26.568876534 -0700
+++ 2.6.23-mm1/include/scsi/scsi_eh.h 2007-10-13 01:31:32.911855338 -0700
@@ -2,6 +2,7 @@
#define _SCSI_SCSI_EH_H

#include <scsi/scsi_cmnd.h>
+#include <linux/scatterlist.h>
struct scsi_device;
struct Scsi_Host;


--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <[email protected]> 1.650.933.1373


2007-10-15 23:35:50

by James Bottomley

[permalink] [raw]
Subject: Re: [PATCH] git scsi misc include fix

On Sat, 2007-10-13 at 22:35 -0700, Paul Jackson wrote:
> From: Paul Jackson <[email protected]>
>
> The added line in scsi_eh.h:
> struct scatterlist sense_sgl;
> fails to compile, with the error:
> field 'sense_sgl' has incomplete type
> unless scatterlist.h happens to be included
> somehow already ... which it isn't always.
>
> So include scatterlist.h in scsi_eh.h directly.
>
> Signed-off-by: Paul Jackson <[email protected]>
>
> ---
>
> This patch goes after the patch 'git-scsi-misc.patch'
>
> include/scsi/scsi_eh.h | 1 +
> 1 file changed, 1 insertion(+)
>
> --- 2.6.23-mm1.orig/include/scsi/scsi_eh.h 2007-10-13 01:13:26.568876534 -0700
> +++ 2.6.23-mm1/include/scsi/scsi_eh.h 2007-10-13 01:31:32.911855338 -0700
> @@ -2,6 +2,7 @@
> #define _SCSI_SCSI_EH_H
>
> #include <scsi/scsi_cmnd.h>
> +#include <linux/scatterlist.h>
> struct scsi_device;
> struct Scsi_Host;


I've added linux-scsi which should be cc'd on all SCSI issues.

I don't quite believe this, though. The requirement for struct
scatterlist is the same before and after the gid scsi-misc patch. If
the compile fails with git-scsi-misc because of a missing scatterlist
include, it should also fail with vanilla 2.6.23 without the git
patch ... could you see if you can find out why it doesn't?

thanks,

James


2007-10-15 23:56:25

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] git scsi misc include fix

On Mon, 15 Oct 2007 19:35:30 -0400
James Bottomley <[email protected]> wrote:

> On Sat, 2007-10-13 at 22:35 -0700, Paul Jackson wrote:
> > From: Paul Jackson <[email protected]>
> >
> > The added line in scsi_eh.h:
> > struct scatterlist sense_sgl;
> > fails to compile, with the error:
> > field 'sense_sgl' has incomplete type
> > unless scatterlist.h happens to be included
> > somehow already ... which it isn't always.
> >
> > So include scatterlist.h in scsi_eh.h directly.
> >
> > Signed-off-by: Paul Jackson <[email protected]>
> >
> > ---
> >
> > This patch goes after the patch 'git-scsi-misc.patch'
> >
> > include/scsi/scsi_eh.h | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > --- 2.6.23-mm1.orig/include/scsi/scsi_eh.h 2007-10-13 01:13:26.568876534 -0700
> > +++ 2.6.23-mm1/include/scsi/scsi_eh.h 2007-10-13 01:31:32.911855338 -0700
> > @@ -2,6 +2,7 @@
> > #define _SCSI_SCSI_EH_H
> >
> > #include <scsi/scsi_cmnd.h>
> > +#include <linux/scatterlist.h>
> > struct scsi_device;
> > struct Scsi_Host;
>
>
> I've added linux-scsi which should be cc'd on all SCSI issues.
>
> I don't quite believe this, though. The requirement for struct
> scatterlist is the same before and after the gid scsi-misc patch. If
> the compile fails with git-scsi-misc because of a missing scatterlist
> include, it should also fail with vanilla 2.6.23 without the git
> patch ... could you see if you can find out why it doesn't?
>

git-scsi-misc adds this:

struct scsi_eh_save {
int result;
enum dma_data_direction data_direction;
unsigned char cmd_len;
unsigned char cmnd[MAX_COMMAND_SIZE];

void *buffer;
unsigned bufflen;
unsigned short use_sg;
int resid;

struct scatterlist sense_sgl;
};

which will not compile unless the includer has earlier included
scatterlist.h.

2007-10-16 00:08:55

by Paul Jackson

[permalink] [raw]
Subject: Re: [PATCH] git scsi misc include fix

James wrote:
> The requirement for struct scatterlist is the same
> before and after the gid scsi-misc patch.

Not so. The git-scsi-misc.patch in 2.6.23-mm1 clearly adds the line:

struct scatterlist sense_sgl;

as part of the added struct scsi_eh_save in scsi/scsi_eh.h.

This bit me while I was doing a bisection on 2.6.23-mm1, for another
problem, in git-sched, which is discussed in the lkml thread:

git-sched patch won't boot on SN arch, 2.6.23-mm1

This is using sn2_defconfig. The full 2.6.23-mm1 patch set builds ok,
because another patch, git-block.patch as I recall, includes
scatterlist.h some other way, but for the following range of patches in
2.6.23-mm1, on the configuration sn2_defconfig, the build is broken,
due to 'struct scatterlist' being an incomplete type:

git-scsi-misc.patch
git-scsi-misc-include-fix.patch
git-scsi-misc-fixup.patch
qla2xxx-printk-fixes.patch
pci-error-recovery-symbios-scsi-base-support.patch
pci-error-recovery-symbios-scsi-first-failure.patch
nsp32_restart_autoscsi-remove-error-check.patch
scsi-send-media-state-change-modification-events.patch
scsi-early-detection-of-medium-not-present-updated.patch
mptbase-reset-ioc-initiator-during-pci-resume.patch
scsi-use-notifier-chain-for-asynchronous-event.patch
initio-fix-conflict-when-loading-driver.patch
git-block.patch

> it should also fail with vanilla 2.6.23

I don't know about the vanilla 2.6.23 case.

--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <[email protected]> 1.925.600.0401

2007-10-16 01:07:37

by James Bottomley

[permalink] [raw]
Subject: Re: [PATCH] git scsi misc include fix

On Mon, 2007-10-15 at 17:08 -0700, Paul Jackson wrote:
> James wrote:
> > The requirement for struct scatterlist is the same
> > before and after the gid scsi-misc patch.
>
> Not so. The git-scsi-misc.patch in 2.6.23-mm1 clearly adds the line:
>
> struct scatterlist sense_sgl;
>
> as part of the added struct scsi_eh_save in scsi/scsi_eh.h.
>
> This bit me while I was doing a bisection on 2.6.23-mm1, for another
> problem, in git-sched, which is discussed in the lkml thread:
>
> git-sched patch won't boot on SN arch, 2.6.23-mm1
>
> This is using sn2_defconfig. The full 2.6.23-mm1 patch set builds ok,
> because another patch, git-block.patch as I recall, includes
> scatterlist.h some other way, but for the following range of patches in
> 2.6.23-mm1, on the configuration sn2_defconfig, the build is broken,
> due to 'struct scatterlist' being an incomplete type:
>
> git-scsi-misc.patch
> git-scsi-misc-include-fix.patch
> git-scsi-misc-fixup.patch
> qla2xxx-printk-fixes.patch
> pci-error-recovery-symbios-scsi-base-support.patch
> pci-error-recovery-symbios-scsi-first-failure.patch
> nsp32_restart_autoscsi-remove-error-check.patch
> scsi-send-media-state-change-modification-events.patch
> scsi-early-detection-of-medium-not-present-updated.patch
> mptbase-reset-ioc-initiator-during-pci-resume.patch
> scsi-use-notifier-chain-for-asynchronous-event.patch
> initio-fix-conflict-when-loading-driver.patch
> git-block.patch
>
> > it should also fail with vanilla 2.6.23
>
> I don't know about the vanilla 2.6.23 case.

Ah, right, sorry ... on the ball now. I thought you were saying that
the scsi_error.c compilation was failing. In that case, the correct fix
is actually to move the scatterlist include from scsi_error.c (where the
scatterlist was originally used locally) into scsi_eh.h, like this.

James

diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index d29f846..ebaca4c 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -24,7 +24,6 @@
#include <linux/interrupt.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
-#include <linux/scatterlist.h>

#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h
index 44224ba..d21b891 100644
--- a/include/scsi/scsi_eh.h
+++ b/include/scsi/scsi_eh.h
@@ -1,6 +1,8 @@
#ifndef _SCSI_SCSI_EH_H
#define _SCSI_SCSI_EH_H

+#include <linux/scatterlist.h>
+
#include <scsi/scsi_cmnd.h>
struct scsi_device;
struct Scsi_Host;


2007-10-16 01:24:53

by Paul Jackson

[permalink] [raw]
Subject: Re: [PATCH] git scsi misc include fix

James wrote:
> In that case, the correct fix
> is actually to move the scatterlist include from scsi_error.c (where the
> scatterlist was originally used locally) into scsi_eh.h, like this.

I suspect you're correct, yes.

--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <[email protected]> 1.925.600.0401