Subject: Re: linux-next: build failure after merge of the scsi-mkp tree

From: "Madhani, Himanshu" <[email-masked]>
Date: Thu, 22 Mar 2018 16:33:40 +0000

Hi Stephen, 

> On Mar 21, 2018, at 11:25 PM, Stephen Rothwell <[email-masked]> wrote:
> 
> Hi Martin,
> 
> After merging the scsi-mkp tree, today's linux-next build (powerpc
> ppc64_defconfig) failed like this:
> 
> drivers/scsi/qla2xxx/qla_gs.c: In function 'qla24xx_async_gnnft_done':
> drivers/scsi/qla2xxx/qla_gs.c:3974:7: error: 'fc4type' undeclared (first use in this function); did you mean 'fc4type_t'?
>  if ((fc4type == FC4_TYPE_FCP_SCSI) && vha->flags.nvme_enabled)
>       ^~~~~~~
>       fc4type_t
> drivers/scsi/qla2xxx/qla_gs.c:3974:7: note: each undeclared identifier is reported only once for each function it appears in
> drivers/scsi/qla2xxx/qla_gs.c:3975:3: error: too few arguments to function 'qla24xx_async_gpnft'
>   qla24xx_async_gpnft(vha, FC4_TYPE_NVME);
>   ^~~~~~~~~~~~~~~~~~~
> In file included from drivers/scsi/qla2xxx/qla_def.h:4633:0,
>                 from drivers/scsi/qla2xxx/qla_gs.c:7:
> drivers/scsi/qla2xxx/qla_gbl.h:661:5: note: declared here
> int qla24xx_async_gpnft(scsi_qla_host_t *, u8, srb_t *);
>     ^~~~~~~~~~~~~~~~~~~
> 
> Caused by commit
> 
>  33b28357dd00 ("scsi: qla2xxx: Fix Async GPN_FT for FCP and FC-NVMe scan")
> 
> interacting with commit
> 
>  2b5b96473efc ("scsi: qla2xxx: Fix FC-NVMe LUN discovery")
> 
> from Linus' tree.
> 
> I have added the following merge fix patch for today. Unfortunately it
> produces this warning, so a better merge resolution is needed ...
> 
> drivers/scsi/qla2xxx/qla_gs.c: In function 'qla24xx_async_gnnft_done':
> drivers/scsi/qla2xxx/qla_gs.c:3974:9: warning: 'rp' may be used uninitialized in this function [-Wmaybe-uninitialized]
>  if ((rp->fc4type == FC4_TYPE_FCP_SCSI) && vha->flags.nvme_enabled)
>       ~~^~~~~~~~~
> 
> 
> From: Stephen Rothwell <[email-masked]>
> Date: Thu, 22 Mar 2018 17:09:38 +1100
> Subject: [PATCH] scsi: qla2xxx: merge fix in qla_gs.c
> 
> Signed-off-by: Stephen Rothwell <[email-masked]>
> ---
> drivers/scsi/qla2xxx/qla_gs.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
> index f84807e850c3..d33f4619332e 100644
> --- a/drivers/scsi/qla2xxx/qla_gs.c
> +++ b/drivers/scsi/qla2xxx/qla_gs.c
> @@ -3971,8 +3971,8 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
> 	vha->scan.scan_flags &= ~SF_SCANNING;
> 	spin_unlock_irqrestore(&vha->work_lock, flags);
> 
> -	if ((fc4type == FC4_TYPE_FCP_SCSI) && vha->flags.nvme_enabled)
> -		qla24xx_async_gpnft(vha, FC4_TYPE_NVME);
> +	if ((rp->fc4type == FC4_TYPE_FCP_SCSI) && vha->flags.nvme_enabled)
> +		qla24xx_async_gpnft(vha, FC4_TYPE_NVME, NULL);
> }
> 
> static void qla2x00_find_free_fcp_nvme_slot(struct scsi_qla_host *vha,
> -- 
> 2.16.1
> 
> -- 
> Cheers,
> Stephen Rothwell

Thanks so much to attempt to fix the build failure. I was aware of this issue and had 
send the diff yesterday with change that should be used for resolving merge conflict and
compile failure. 

Please use following to fix for the merge conflict and compile failure. 

diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index 403fa096f8c8..21eff2d30266 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -3973,9 +3973,6 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
       spin_lock_irqsave(&vha->work_lock, flags);
       vha->scan.scan_flags &= ~SF_SCANNING;
       spin_unlock_irqrestore(&vha->work_lock, flags);
-
-       if ((fc4type == FC4_TYPE_FCP_SCSI) && vha->flags.nvme_enabled)
-               qla24xx_async_gpnft(vha, FC4_TYPE_NVME);
}

static void qla2x00_async_gpnft_gnnft_sp_done(void *s, int res)
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 5c5dcca4d1da..dab847ba4bce 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -4822,9 +4822,10 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e)
                       fcport->d_id = e->u.new_sess.id;
                       fcport->flags |= FCF_FABRIC_DEVICE;
                       fcport->fw_login_state = DSC_LS_PLOGI_PEND;
-                       if (e->u.new_sess.fc4_type == FC4_TYPE_FCP_SCSI) {
+                       if (e->u.new_sess.fc4_type & FC4_TYPE_FCP_SCSI)
                               fcport->fc4_type = FC4_TYPE_FCP_SCSI;
-                       } else if (e->u.new_sess.fc4_type == FC4_TYPE_NVME) {
+
+                       if (e->u.new_sess.fc4_type & FC4_TYPE_NVME) {
                               fcport->fc4_type = FC4_TYPE_OTHER;
                               fcport->fc4f_nvme = FC4_TYPE_NVME;
                       }
(END)

Thanks,
- Himanshu