-
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
SPLError: 3043:0:(list.h:126:list_remove()) ASSERTION(!list_is_empty(list)) failed #282
Comments
Nice job. This looks right to me on first inspection but let me chew on it a little more before merging it. |
Issue #252 looks like a likely duplicate. |
Reopening... for now. The commit comment closed it even though it wasn't committed to master. I'll need to keep that in mind in the future. |
Is this closed in the master now or not? Just curious because its been almost 4 months...:) |
Yes, the fix was actually committed to master way back in June. Author: Gunnar Beutner [email protected] |
In the (unlikely) event that zfs_rmnode() fails zfs_inode_destroy() is called for a znode that is already in the process of being torn down. This leads to a double-free error. The exact chain of events (as tested with kernel 2.6.38) is:
At that point an assertion in list_remove() fails (in my case anyway, as this happened while cleaning up deleted inodes at mount time and there are no other znodes in zsb->z_all_znodes). Looks like those zfs_inode_destroy() calls are left-overs from the Solaris code (e.g. zfs_zinactive has a zfs_znode_free call in Solaris where the Linux version does not).
The text was updated successfully, but these errors were encountered: