[BSD] 10.1 update (kernel) hiba?

Gabor HALASZ halasz.g at freemail.hu
2015. Jan. 22., Cs, 22:52:03 CET


On 1/22/2015 10:53 AM, Akos Tamasi wrote:
> Sziasztok!
>
> Tegnap volt egy kis időm foglalkozni a géppel és sajnos nem lettem okosabb.

Most olyan okos leszel, hogy meg is bánod :-D

> Csináltam egy zpool import export párost, a cache file-t frissítettem, de továbbra sem boot-ol.
> A boot logokat felraktam ide, hogy a nálam sokkal tapasztaltabb emberek is rá tudjanak nézni :)
> https://dl.dropboxusercontent.com/u/6115297/rossz_boot.txt
> https://dl.dropboxusercontent.com/u/6115297/jo_boot.txt

Szóval ezek a hibaüzenetek:

guid mismatch for provider /dev/ada0
guid mismatch for provider /dev/ada1
guid mismatch for provider /dev/ada2
guid mismatch for provider /dev/ada3

Ez csinálja:

sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c:

static struct g_consumer *
vdev_geom_open_by_path(vdev_t *vd, int check_guid)
{
	struct g_provider *pp;
	struct g_consumer *cp;
	uint64_t guid;

	g_topology_assert();

	cp = NULL;
	pp = g_provider_by_name(vd->vdev_path + sizeof("/dev/") - 1);
	if (pp != NULL) {
		ZFS_LOG(1, "Found provider by name %s.", vd->vdev_path);
		cp = vdev_geom_attach(pp);
		if (cp != NULL && check_guid && ISP2(pp->sectorsize) &&
		    pp->sectorsize <= VDEV_PAD_SIZE) {
			g_topology_unlock();
			guid = vdev_geom_read_guid(cp);
			g_topology_lock();
			if (guid != vd->vdev_guid) {
				vdev_geom_detach(cp, 0);
				cp = NULL;
				ZFS_LOG(1, "guid mismatch for provider %s: "
				    "%ju != %ju.", vd->vdev_path,
				    (uintmax_t)vd->vdev_guid, (uintmax_t)guid);
			} else {
				ZFS_LOG(1, "guid match for provider %s.",
				    vd->vdev_path);
			}
		}
	}

	return (cp);
}

Kezdjél vele valamit :-D De még rugok rajtad egyet: a hiba itt 
jelentkezik, de nem itt keletkezik, mert a fenti kód egyforma 10.0 és 
10.1 esetén :-D Meg kellene nézni a vdev_geom_attach és 
vdev_geom_read_guid környékét is, no meg a vdev_geom_attach-ot is, és ha 
az sem segít, akkor még a g_topology_assert-et is.

Ha meg olyan tökös gyerek vagy, mint Torrente felügyelő Marbellán a 
kaszinóban, akkor szimplán írsz /* -t a vdev_geom_detach(cp, 0); elé és 
*/-t a cp = NULL; mögé és újrafordítod a kernelt...

>
> A rossz boot végén a pendrive-ról elindult a rendszer és a zpool FAULTED állapotban volt és az összes diszk hiányzik a raidz1-0-ból.
> https://dl.dropboxusercontent.com/u/6115297/missing.gif
>
> Este megnéztem, hogy az zpool import -d /dev/gpt zroot helyett a zpool import -d /dev/ zroot mit mutat majd…
>

Nézzél egy strings /boot/zfs/zpool.cache-t nagyjából látszik, milyen 
deviceok vannak benne. Ez is legacy boot-os? Mintha lenne valami sötét 
emlékem, hogy van valahol egy legacy boot-os gépem, ami roppantul nem 
akart bootolni 10.1 upgrade után, de nem sokat foglalkoztam vele, azóta 
is 10.0.




További információk a(z) BSD levelezőlistáról