[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