提交 66e8d1cc 编写于 作者: M Matthew Wilcox 提交者: James Bottomley

[SCSI] sym2: Report disabled devices and LUNs more attractively

Rather than print a list of targets at driver init time, print each
disabled target as we attempt to scan it.
Signed-off-by: NMatthew Wilcox <matthew@wil.cx>
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 b37df489
...@@ -1018,6 +1018,7 @@ static int sym53c8xx_slave_alloc(struct scsi_device *sdev) ...@@ -1018,6 +1018,7 @@ static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN) if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN)
return -ENXIO; return -ENXIO;
tp->starget = sdev->sdev_target;
/* /*
* Fail the device init if the device is flagged NOSCAN at BOOT in * Fail the device init if the device is flagged NOSCAN at BOOT in
* the NVRAM. This may speed up boot and maintain coherency with * the NVRAM. This may speed up boot and maintain coherency with
...@@ -1027,17 +1028,24 @@ static int sym53c8xx_slave_alloc(struct scsi_device *sdev) ...@@ -1027,17 +1028,24 @@ static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
* lun devices behave badly when asked for a non zero LUN. * lun devices behave badly when asked for a non zero LUN.
*/ */
if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) || if (tp->usrflags & SYM_SCAN_BOOT_DISABLED) {
((tp->usrflags & SYM_SCAN_LUNS_DISABLED) && sdev->lun != 0)) {
tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED; tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
starget_printk(KERN_INFO, tp->starget,
"Scan at boot disabled in NVRAM\n");
return -ENXIO; return -ENXIO;
} }
if (tp->usrflags & SYM_SCAN_LUNS_DISABLED) {
if (sdev->lun != 0)
return -ENXIO;
starget_printk(KERN_INFO, tp->starget,
"Multiple LUNs disabled in NVRAM\n");
}
lp = sym_alloc_lcb(np, sdev->id, sdev->lun); lp = sym_alloc_lcb(np, sdev->id, sdev->lun);
if (!lp) if (!lp)
return -ENOMEM; return -ENOMEM;
tp->starget = sdev->sdev_target;
spi_min_period(tp->starget) = tp->usr_period; spi_min_period(tp->starget) = tp->usr_period;
spi_max_width(tp->starget) = tp->usr_width; spi_max_width(tp->starget) = tp->usr_width;
......
...@@ -616,29 +616,6 @@ static __inline void sym_init_burst(struct sym_hcb *np, u_char bc) ...@@ -616,29 +616,6 @@ static __inline void sym_init_burst(struct sym_hcb *np, u_char bc)
} }
} }
/*
* Print out the list of targets that have some flag disabled by user.
*/
static void sym_print_targets_flag(struct sym_hcb *np, int mask, char *msg)
{
int cnt;
int i;
for (cnt = 0, i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
if (i == np->myaddr)
continue;
if (np->target[i].usrflags & mask) {
if (!cnt++)
printf("%s: %s disabled for targets",
sym_name(np), msg);
printf(" %d", i);
}
}
if (cnt)
printf(".\n");
}
/* /*
* Save initial settings of some IO registers. * Save initial settings of some IO registers.
* Assumed to have been set by BIOS. * Assumed to have been set by BIOS.
...@@ -986,13 +963,6 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru ...@@ -986,13 +963,6 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru
sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl, sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl,
np->rv_ctest3, np->rv_ctest4, np->rv_ctest5); np->rv_ctest3, np->rv_ctest4, np->rv_ctest5);
} }
/*
* Let user be aware of targets that have some disable flags set.
*/
sym_print_targets_flag(np, SYM_SCAN_BOOT_DISABLED, "SCAN AT BOOT");
if (sym_verbose)
sym_print_targets_flag(np, SYM_SCAN_LUNS_DISABLED,
"SCAN FOR LUNS");
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册