Re: [ 089/180] SCSI: fix scsi_wait_scan

From: Willy Tarreau
Date: Thu Oct 04 2012 - 17:08:58 EST


On Thu, Oct 04, 2012 at 09:57:25PM +0100, Ben Hutchings wrote:
> On Thu, Oct 04, 2012 at 10:38:13PM +0200, Willy Tarreau wrote:
> > On Thu, Oct 04, 2012 at 09:34:36PM +0100, Ben Hutchings wrote:
> > > On Tue, Oct 02, 2012 at 12:53:26AM +0200, Willy Tarreau wrote:
> > > > 2.6.32-longterm review patch. If anyone has any objections, please let me know.
> > > >
> > > > ------------------
> > > >
> > > > From: James Bottomley <jbottomley@xxxxxxxxxxxxx>
> > > >
> > > > commit 1ff2f40305772b159a91c19590ee159d3a504afc upstream.
> > > >
> > > > Commit c751085943362143f84346d274e0011419c84202
> > > > Author: Rafael J. Wysocki <rjw@xxxxxxx>
> > > > Date: Sun Apr 12 20:06:56 2009 +0200
> > > >
> > > > PM/Hibernate: Wait for SCSI devices scan to complete during resume
> > > >
> > > > Broke the scsi_wait_scan module in 2.6.30. Apparently debian still uses it so
> > > > fix it and backport to stable before removing it in 3.6.
> > > [...]
> > > > --- a/drivers/scsi/scsi_wait_scan.c
> > > > +++ b/drivers/scsi/scsi_wait_scan.c
> > > > @@ -13,6 +13,7 @@
> > > > #include <linux/module.h>
> > > > #include <linux/device.h>
> > > > #include <scsi/scsi_scan.h>
> > > > +#include "scsi_priv.h"
> > > >
> > > > static int __init wait_scan_init(void)
> > > > {
> > >
> > > This backported version is a no-op. I think we need to do:
> > >
> > > -#include <scsi/scsi_scan.h>
> > > +
> > > +extern int scsi_complete_async_scans(void);
> >
> > But this is what we have in scsi_scan.h :
> >
> > #ifdef CONFIG_SCSI
> > /* drivers/scsi/scsi_scan.c */
> > extern int scsi_complete_async_scans(void);
> > #else
> > static inline int scsi_complete_async_scans(void) { return 0; }
> > #endif
> >
> > Since CONFIG_SCSI_WAIT_SCAN depends on CONFIG_SCSI, we're certain to have
> > it defined when we build this code.
> >
> > Am I missing something ?
>
> Yes, this is dealing with the modular SCSI case (CONFIG_SCSI not
> defined). We can't change the '#ifdef CONFIG_SCSI' to check
> CONFIG_SCSI_MODULE as well, because <scsi/scsi_scan.h> is also used by
> the PM code which is built-in.

OK got it now. Thanks for the explanation.

I'm seeing that 3.0 has scsi_complete_async_scans() declared in
scsi_priv.h, so I'll better add it there and keep scsi_priv.h to
remain closer to newer versions.

Cheers,
Willy

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/