-
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
ZTS with reference_tracking_enable makes the magic smoke come out #12589
Comments
Ah yes, that VM was running a dirty build too. I wish I'd finished that PR to tag such builds visibly. Oh well. One round of building on a vanilla clone later, it'll repro on ce2bdce too, I shouldn't wonder... |
Yup repros fine on ce2bdce, gets to:
|
That's troubling. After resolving this issue it would be nice to enable reference counting by default in the CI to catch this kind of thing early (assuming the overhead isn't cost prohibitive). |
I have a simple fix for the panic (whoever wrote the dmu_zfetch code to use refcount seems to have assumed what I would have, that "refcount_add_many" adds N references, not one reference with magic number N which you cannot decrement with refcount_remove...if reference_tracking is enabled), but then one set of tests still won't run. Notably, pool_checkpoint's setup hits the 45m timeout and dies outright, presumably because the overhead of pool nesting updating all the references sucks. So I guess you could make a runfile that just excluded pool_checkpoint and run that with reference_tracking_enabled=1 after I submit that fix. I'll even go try cutting a PR for a Github Action to do it... |
That's great, and what I would have assumed as well... I'm looking forward to seeing the fix. Alternately, it looks like it would be safe to disable it in |
refcount_add_many(foo,N) is not the same as for (i=0; i < N; i++) { refcount_add(foo); } Unfortunately, this is only actually true with debug kernels and reference_tracking_enable=1. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rich Ercolani <rincebrain@gmail.com> Closes openzfs#12589 Closes openzfs#12602
System information
Describe the problem you're observing
I recently had occasion to want to try reference_tracking_enable on sparc64, so I flipped it on, and the magic smoke came out.
Thinking it might have been one of my local changes (my reason for flipping it on was to print state when an error condition happened, and I had added code to do that, not that it got reached yet...), I tested on vanilla git master and an x86_64 VM, and yup, still boom.
(Sorry the dump isn't from x86_64, kdump is still not the most reliable thing on the planet...)
Describe how to reproduce the problem
Include any warning/errors/backtraces from the system logs
The text was updated successfully, but these errors were encountered: