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);