Booting off raidz *mostly* work
Stefan Bethke
stb at lassitu.de
Sat Sep 26 11:49:34 UTC 2009
Am 26.09.2009 um 09:21 schrieb Doug Rabson:
> On 25 Sep 2009, at 22:49, Artem Belevich wrote:
>
>> Our bootloader implementation does not know how to read gang blocks.
>> Compare the code from OpenSolaris' variant of grub with what we have
>> and find the differences:
>>
>> Search for zio_read_data here:
>> http://bitbucket.org/osunix/osunix-gate/src/1cca4617b3a8/usr/src/grub/grub-0.97/stage2/fsys_zfs.c
>>
>> And compare with our zio_read here:
>> http://fxr.watson.org/fxr/source/boot/zfs/zfsimpl.c?im=excerpts#L900
>>
>> We seem to be missing gang block check. That would explain why
>> zfsboot
>> works only sometimes. If all the files are written using regular
>> blocks, then we're OK. However, some time later (i.e. during upgrade
>> or after an edit), some data can end up written to disk in a gang
>> block and that would make zfsboot choke.
>
> This sounds plausible - I never managed to see a gang block while I
> was working on this.
I'm afraid something else is wrong. I added if (DVA_GET_GANG(dva)) to
zio_read, with a printf and return(EIO). Booting results in "no block
copies available", but my code addition does not seem to be
triggered. This is with a freshly created zpool, set up with make
installworld.
Stefan
--
Stefan Bethke <stb at lassitu.de> Fon +49 151 14070811
More information about the freebsd-current
mailing list