Extending zfsboot.c to allow selecting filesystem from boot.config

Florian Wagner florian at wagner-flo.net
Fri Nov 25 21:47:27 UTC 2011


On Thu, 24 Nov 2011 23:55:16 +0200
Andriy Gapon <avg at FreeBSD.org> wrote:

> Or another idea is to use valgrind ... which I have actually done
> myself and found the problem.
> While I am working on a proper solution, please try this quick patch:
> http://people.freebsd.org/~avg/zfsboot.read_mos.patch

Thanks!

For the record: All systems I'm working on are of amd64 architecture.
My test VM as well es the fileserver I initial ran into the problem.


No more memory corruptions with the patch, but booting now stops with
"ZFS: zfs_alloc()/zfs_free() mismatch".

If I comment out lines 145-148 in the zfsboottest.c you linked, I can
successfully read files from the pool by doing ./zfsboottest <FILENAME>
<LIST-OF-VDEVS>. This also works correctly when omitting up to two
vdevs of my RAID-Z2 pool:

  # ./zfsboottest /boot/zfsloader /dev/da{0,1,2}p2 2>/dev/null | md5
  336c56a04c8d6d432df999b35ce459f7
  # md5 /boot/zfsloader
  MD5 (/boot/zfsloader) = 336c56a04c8d6d432df999b35ce459f7


After applying the patch from [1] (the thread references the same
output I get, even if the conclusion doesn't fit) I can sometimes
boot my VM. This seems to correlate with how much is written to the
pool. Quickly rebooting after the system comes up works, but waiting a
few minutes always results in getting the mismatch error on the reboot.
After that only booting with unpatched gptzfsboot works (whereafter the
patched one works again for one reboot or so).


Regards
Florian

[1]
http://lists.freebsd.org/pipermail/freebsd-current/2011-August/026338.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20111125/e9625296/signature.pgp


More information about the freebsd-fs mailing list