Update from zfs-0.6.2-1.el6.x86_64 to zfs-0.6.3-1.el6.x86_64 has made by zpool unreadable

84104 asked:

After running # yum update zfs and restarting my CentOS 6 ZFS on Linux system can no longer see or interact with it’s zpools.

# zpool status
no pools available
# zpool import
zpool: ../../lib/libzfs/libzfs_import.c:356: Assertion `nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0' failed.
Aborted
# dmesg | grep -i spl 
SPL: Loaded module v0.6.2-1 
SPL: using hostid 0x43a4c8a0

This is a canary system, so I’m not worried about its contents, but I have other machines that I would eventually like to upgrade safely. What did I do wrong, and more importantly how can I do it right for the important systems?

My answer:


That looks like…a bug. In fact, it is a bug. The ZFS userland is updated, but the kernel modules aren’t being updated by DKMS. This assertion is caused by the version mismatch.

You can work around it by a process given in a comment to the bug, by removing the old kernel modules and then reinstalling everything.

$ find /lib/modules/$(uname -r)/extra -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f
$ find /lib/modules/$(uname -r)/weak-updates -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f
$ yum reinstall zfs-release
$ yum reinstall $(rpm -qa | egrep "zfs|spl")

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.