Linux 3.6 compat, kern_path_locked() added #179

Closed
wants to merge 1 commit into
from

Conversation

Projects
None yet
4 participants
@behlendorf
Owner

behlendorf commented Oct 13, 2012

The kern_path_parent() function was removed from Linux 3.6 because
it was observed that all the callers just want the parent dentry.
The simpler kern_path_locked() function replaces kern_path_parent()
and does the lookup while holding the ->i_mutex lock.

This is good news for the vn implementation because it removes the
need for us to handle the locking. However, it makes it harder to
implement a single readable vn_remove()/vn_rename() function which
is usually what we prefer.

Therefore, we implement a new version of vn_remove()/vn_rename()
for Linux 3.6 and newer kernels. This allows us to leave the
existing working implementation untouched, and to add a simpler
version for newer kernels.

Long term I would very much like to see all of the vn code removed
since what this code enabled is generally frowned upon in the kernel.
But that can't happen util we either abondon the zpool.cache file
or implement alternate infrastructure to update is correctly in
user space.

Signed-off-by: Yuxuan Shui yshuiv7@gmail.com
Signed-off-by: Richard Yao ryao@cs.stonybrook.edu
Signed-off-by: Brian Behlendorf behlendorf1@llnl.gov
Issue #154

Linux 3.6 compat, kern_path_locked() added
The kern_path_parent() function was removed from Linux 3.6 because
it was observed that all the callers just want the parent dentry.
The simpler kern_path_locked() function replaces kern_path_parent()
and does the lookup while holding the ->i_mutex lock.

This is good news for the vn implementation because it removes the
need for us to handle the locking.  However, it makes it harder to
implement a single readable vn_remove()/vn_rename() function which
is usually what we prefer.

Therefore, we implement a new version of vn_remove()/vn_rename()
for Linux 3.6 and newer kernels.  This allows us to leave the
existing working implementation untouched, and to add a simpler
version for newer kernels.

Long term I would very much like to see all of the vn code removed
since what this code enabled is generally frowned upon in the kernel.
But that can't happen util we either abondon the zpool.cache file
or implement alternate infrastructure to update is correctly in
user space.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #154
@yshui

This comment has been minimized.

Show comment Hide comment
@yshui

yshui Oct 13, 2012

Contributor

Looks fine to me.

Contributor

yshui commented Oct 13, 2012

Looks fine to me.

@behlendorf

This comment has been minimized.

Show comment Hide comment
@behlendorf

behlendorf Oct 13, 2012

Owner

@yshui Great, did you verify the patches on a system with the 3.6 kernel. I still need to get a VM installed.

Owner

behlendorf commented Oct 13, 2012

@yshui Great, did you verify the patches on a system with the 3.6 kernel. I still need to get a VM installed.

@ryao

This comment has been minimized.

Show comment Hide comment
@ryao

ryao Oct 14, 2012

Member

@behlendorf I am now using this patch on my desktop in conjunction with zfsonlinux/zfs#1039. So far, I have detected no problems.

Member

ryao commented Oct 14, 2012

@behlendorf I am now using this patch on my desktop in conjunction with zfsonlinux/zfs#1039. So far, I have detected no problems.

@behlendorf

This comment has been minimized.

Show comment Hide comment
@behlendorf

behlendorf Oct 15, 2012

Owner

bcb1589 merged

Owner

behlendorf commented Oct 15, 2012

bcb1589 merged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment