if (scsi_probe_lun(sdev, result, result_len, &bflags))
                goto out_free_result;
 
+       if (bflagsp)
+               *bflagsp = bflags;
        /*
         * result contains valid SCSI INQUIRY data.
         */
                        sdev->lockable = 0;
                        scsi_unlock_floptical(sdev, result);
                }
-               if (bflagsp)
-                       *bflagsp = bflags;
        }
 
  out_free_result:
  * scsi_sequential_lun_scan - sequentially scan a SCSI target
  * @starget:   pointer to target structure to scan
  * @bflags:    black/white list flag for LUN 0
- * @lun0_res:  result of scanning LUN 0
  *
  * Description:
  *     Generally, scan from LUN 1 (LUN 0 is assumed to already have been
  *     Modifies sdevscan->lun.
  **/
 static void scsi_sequential_lun_scan(struct scsi_target *starget,
-                                    int bflags, int lun0_res, int scsi_level,
-                                    int rescan)
+                                    int bflags, int scsi_level, int rescan)
 {
        unsigned int sparse_lun, lun, max_dev_lun;
        struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
        } else
                sparse_lun = 0;
 
-       /*
-        * If not sparse lun and no device attached at LUN 0 do not scan
-        * any further.
-        */
-       if (!sparse_lun && (lun0_res != SCSI_SCAN_LUN_PRESENT))
-               return;
-
        /*
         * If less than SCSI_1_CSS, and no special lun scaning, stop
         * scanning; this matches 2.4 behaviour, but could just be a bug
                         * do a sequential scan.
                         */
                        scsi_sequential_lun_scan(starget, bflags,
-                                       res, starget->scsi_level, rescan);
+                                                starget->scsi_level, rescan);
        }
 
  out_reap: