From 137af025f687dd19994666a6c7d38661c209f0c9 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Thu, 2 Oct 2014 12:47:09 -0400 Subject: [PATCH] Remove set_fs_pwd() configure check This function has never been exported by any mainline and was only briefly available under RHEL5. Therefore this check is being removed and the code update to always use the wrapper function. The next step will be to eliminate all this code. If ZFS were updated not to assume that it's pwd was / there would be no need for this. Signed-off-by: Brian Behlendorf --- config/spl-build.m4 | 19 ------------------- module/spl/spl-vnode.c | 22 ++++++++++------------ 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/config/spl-build.m4 b/config/spl-build.m4 index 264989d5c..dfa22aa85 100644 --- a/config/spl-build.m4 +++ b/config/spl-build.m4 @@ -28,7 +28,6 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [ SPL_AC_PDE_DATA SPL_AC_MUTEX_OWNER SPL_AC_MUTEX_OWNER_TASK_STRUCT - SPL_AC_SET_FS_PWD SPL_AC_SET_FS_PWD_WITH_CONST SPL_AC_2ARGS_VFS_UNLINK SPL_AC_4ARGS_VFS_RENAME @@ -972,24 +971,6 @@ AC_DEFUN([SPL_AC_PDE_DATA], [ ]) ]) -dnl # -dnl # Symbol available in RHEL kernels not in stock kernels. -dnl # -AC_DEFUN([SPL_AC_SET_FS_PWD], - [AC_MSG_CHECKING([whether set_fs_pwd() is available]) - SPL_LINUX_TRY_COMPILE_SYMBOL([ - #include - #include - ], [ - (void) set_fs_pwd; - ], [set_fs_pwd], [], [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SET_FS_PWD, 1, [set_fs_pwd() is available]) - ], [ - AC_MSG_RESULT(no) - ]) -]) - dnl # dnl # 3.9 API change dnl # set_fs_pwd takes const struct path * diff --git a/module/spl/spl-vnode.c b/module/spl/spl-vnode.c index 5b0dd4235..63e5a39ef 100644 --- a/module/spl/spl-vnode.c +++ b/module/spl/spl-vnode.c @@ -766,34 +766,32 @@ vn_releasef(int fd) } /* releasef() */ EXPORT_SYMBOL(releasef); -#ifndef HAVE_SET_FS_PWD -void -# ifdef HAVE_SET_FS_PWD_WITH_CONST -set_fs_pwd(struct fs_struct *fs, const struct path *path) -# else -set_fs_pwd(struct fs_struct *fs, struct path *path) -# endif +static void +#ifdef HAVE_SET_FS_PWD_WITH_CONST +vn_set_fs_pwd(struct fs_struct *fs, const struct path *path) +#else +vn_set_fs_pwd(struct fs_struct *fs, struct path *path) +#endif /* HAVE_SET_FS_PWD_WITH_CONST */ { struct path old_pwd; -# ifdef HAVE_FS_STRUCT_SPINLOCK +#ifdef HAVE_FS_STRUCT_SPINLOCK spin_lock(&fs->lock); old_pwd = fs->pwd; fs->pwd = *path; path_get(path); spin_unlock(&fs->lock); -# else +#else write_lock(&fs->lock); old_pwd = fs->pwd; fs->pwd = *path; path_get(path); write_unlock(&fs->lock); -# endif /* HAVE_FS_STRUCT_SPINLOCK */ +#endif /* HAVE_FS_STRUCT_SPINLOCK */ if (old_pwd.dentry) path_put(&old_pwd); } -#endif /* HAVE_SET_FS_PWD */ int vn_set_pwd(const char *filename) @@ -819,7 +817,7 @@ vn_set_pwd(const char *filename) if (rc) SGOTO(dput_and_out, rc); - set_fs_pwd(current->fs, &path); + vn_set_fs_pwd(current->fs, &path); dput_and_out: path_put(&path);