-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ZIL fails to claim when switching machine endianness #5256
Comments
@tcaputi |
The pool will import fine because the end of the ZIL is simply defined as "the block where the checksum stops matching." However, any records that are in the ZIL (and therefore that ZFS promised were synced) will be lost. If you add some debugging of |
@tcaputi |
I apologize. This was a mistake on my part. I found this while I was working through byteswap problems in my encryption patch. I thought I had tested it on upstream as well and found the same issue but it seems I did not. Sorry for the noise. |
On the bright side we now have a big endian pool easily available for testing. |
The following output was obtained by running the first half of
ziltest.sh
(everything before the pool is reimported) on a big endian machine and then transferring the pool files to a little endian machine for import. The debugging was added to zil_read_log_block() just before the checksum comparison.It seems that the stored checksum is actually correct, but it has not been byteswapped to match the calculated checksum. The fix here should be fairly simply (just adding the byteswap), but this kind of error might be present in more places after the claim is finished.
The text was updated successfully, but these errors were encountered: