-
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
ASSERT(zio->io_vd == NULL && zio->io_bp != NULL); #602
Comments
How did you enable "full ZFS debugging"? Is it more involved than passing --debug to ./configure? |
Passing --enable-debug to configure gets you to bulk of the debugging. Several other debug checks can be enabled by setting specific zfs_flags in module/zfs/zfs_debug.c. Although I wouldn't recommend it from anything other than a debug build. The debugging is fairly heavy weight in areas and I'm sure it will impact performance. |
I am comparing this issue to issue #604 and things don't quite make sense to me. If I understand ./include/sys/zio.h and /usr/src/linux/include/asm-generic/errno.h correctly, io_error = 52 indicates a checksum error. It could be set in any of the following locations, assuming that I did not miss any: /# grep -rn " = ECKSUM" ./module/ What doesn't make sense is how a checksum failure would occur with a 6-device mirrored vdev like I have in issue #604 and fail to be healed automatically. There is no history of any checksum failures in my pool and a scrub failed to find anything wrong. Furthermore, I perused the FreeBSD code. They have had this assertion in their code for more than 3 years and it doesn't appear that they have done anything to trigger it. What did you do to get a dump of the zio struct contents? I am not certain if this issue is the same as issue #604. I would like to get a look at zio->io_error to be certain. |
Checksum failures are not particularly uncommon at import time if the pool was not exported cleanly. They're somewhat expected as ZFS attempt to located the correct vdev label. As for why this issue isn't observed under FreeBSD it's my understanding the FreeBSD, Solaris, and Illumos all ship their kernels with assertions disabled, just like the default ZoL build. Unless you go out of your way to rebuild their kernel you'll never see this. |
This patch was slightly flawed and allowed for zio->io_logical to potentially not be reinitialized for a new zio. This could lead to assertion failures in specific cases when debugging is enabled (--enable-debug) and I/O errors are encountered. It may also have caused problems when issues logical I/Os. Since we want to make sure this workaround can be easily removed in the future (when we have the real fix). I'm reverting this change and applying a new version of the patch which includes the zio->io_logical fix. This reverts commit 2c6d0b1. Signed-off-by: Brian Behlendorf <[email protected]> Issue openzfs#602 Issue openzfs#604
Closing issue, I'm convinced this failure is explained and fixed by the zio->io_logical fix. |
Observed under RHEL6.2 during module load with full zfs debugging enabled. The assertion may be incorrect, it's not clear why zio->io_vd must be NULL here.
The text was updated successfully, but these errors were encountered: