This repository has been archived by the owner on Feb 16, 2020. It is now read-only.
Proposed fix for KP on mount in maczfs_78: conditionallly atache vnode ... #8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
... in zfs_zget_internal().
This patch changes zfs_zget_internal() such that it follows its interface
definition also in case of a pre-allocated znode.
As detailed in my mail from just now (2012-09-17 23:00 CEST), I think this is the right fix for the KP on mount.
In short:
The current implementation of zfs_zget_internal() violates its interface contract:
If called on an object with a prerecorded znode, then it ignores the value of "skipvnode", which it is not allowed to do.
Conclusion:
I think the right fix is to check in line 1011 of zfs_znode.c if vp is valid, and if not and skipvnode is false, then attach a vnode, else return the znode w/o trying to lock the vnode which we are not supposed to have.