Improve check for duplicated paths. It shows the warning twice for

every path (once for each duplicate found), but it should do for now.

Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Edward Tomasz Napierala 2014-02-11 10:55:32 +00:00
parent 2fabfaa504
commit a19eebb1b7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=261750

View File

@ -873,6 +873,7 @@ static int
conf_verify_lun(struct lun *lun)
{
const struct lun *lun2;
const struct target *targ2;
if (lun->l_backend == NULL)
lun_set_backend(lun, "block");
@ -901,16 +902,6 @@ conf_verify_lun(struct lun *lun)
lun->l_target->t_iqn);
return (1);
}
#if 1 /* Should we? */
TAILQ_FOREACH(lun2, &lun->l_target->t_luns, l_next) {
if (lun == lun2)
continue;
if (lun->l_path != NULL && lun2->l_path != NULL &&
strcmp(lun->l_path, lun2->l_path) == 0)
log_debugx("WARNING: duplicate path for lun %d, "
"target \"%s\"", lun->l_lun, lun->l_target->t_iqn);
}
#endif
if (lun->l_blocksize == 0) {
lun_set_blocksize(lun, DEFAULT_BLOCKSIZE);
} else if (lun->l_blocksize < 0) {
@ -924,6 +915,20 @@ conf_verify_lun(struct lun *lun)
lun->l_target->t_iqn);
return (1);
}
TAILQ_FOREACH(targ2, &lun->l_target->t_conf->conf_targets, t_next) {
TAILQ_FOREACH(lun2, &targ2->t_luns, l_next) {
if (lun == lun2)
continue;
if (lun->l_path != NULL && lun2->l_path != NULL &&
strcmp(lun->l_path, lun2->l_path) == 0) {
log_debugx("WARNING: path \"%s\" duplicated "
"between lun %d, target \"%s\", and "
"lun %d, target \"%s\"", lun->l_path,
lun->l_lun, lun->l_target->t_iqn,
lun2->l_lun, lun2->l_target->t_iqn);
}
}
}
return (0);
}