[zfs-discuss] HostID not being added to a pools data, have to force import everytime, what is happening??
mcaerwyn at pioneerpress.com
mcaerwyn at pioneerpress.com
Mon Sep 30 14:22:58 EDT 2013
I have Fedora 19 using ZFSonLinux 0.61 compiled using DKMS, so the
_KERNEL flag is set. I have a single pool mirrored across two drives. My
root drive is on ZFS, and I have a grub that is patched -- gentoo patches
-- to boot from ZFS. I have rebuilt my INITRD and it does have all the ZFS
modules needed and is trying to import the pool correctly, but the pool
always has to be forced.
The error I get it from zpool is: "cannot import 'poolname': pool may be
in use from other system." This is found in zpool_main.c at line 1857 and
is the else clause from the hostid check.
I figure this is happening because during shutdown the pool is never
exported, and the pool has no HOSTID to check.
My INITRD has a hostid file with the correct numbers. When I run zdb -CC
-e poolname and get the MOS Configuration I see the host name but not the
hostid. In the proc system the hostid -- /proc/sys/kernel/spl/hostid --
matches, but the /proc/sys/kernel/spl/hw_serial is set to <none>. When I
set the hostid in /proc/sys/kernel/spl/hostid it does set the hw_serial,
but that does not seem to have the hostid placed in the MOS Configuration
when I tried to export and import the pool again. The hw_serial is cleared
to <none> when the system moves from the INITRD to the main system.
There is no cache file, and the code to set the hostid seems to be
zone_get_hostid from spl-generic.c and seems to depend on hw_serial being
set. The kernel notice during boot says that spl_hostid is being correctly
set. My guess is that the hostid_read function succeeds so the hostid_exec
function is never called and the hw_serial never gets set. I believe that I
have no hostid because hw_serial is always <NONE> when I export/import a
pool, which should write the hostid back to the disks so I can change it if
I needed to. Somehow the hostid value is not being placed into the
I would like to not force my pool in everytime, yes I know there are
various tickets and work is in progress, and I do not want to export my
pool during shutdown.
How can I see what is in the configuration tree to see if the hostid is
even being placed in there or am I going to have to patch the code to give
me more feed back?
How can I force a hostid into my MOS configuration to see if that is my
Why is zone_get_hostid looking at the hw_serial value to set the hostid
instead of the spl_hostid value which hostid_read works so hard to set?
Any suggestions for my next steps?
Thank you to everyone who helped create this great software for all their
hard work, and to everyone who might have suggestions/answers.
- Michael Caerwyn
To unsubscribe from this group and stop receiving emails from it, send an email to zfs-discuss+unsubscribe at zfsonlinux.org.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the zfs-discuss