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 <behlendorf1@llnl.gov>
This commit is contained in:
parent
3c49a16989
commit
137af025f6
|
@ -28,7 +28,6 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
|
||||||
SPL_AC_PDE_DATA
|
SPL_AC_PDE_DATA
|
||||||
SPL_AC_MUTEX_OWNER
|
SPL_AC_MUTEX_OWNER
|
||||||
SPL_AC_MUTEX_OWNER_TASK_STRUCT
|
SPL_AC_MUTEX_OWNER_TASK_STRUCT
|
||||||
SPL_AC_SET_FS_PWD
|
|
||||||
SPL_AC_SET_FS_PWD_WITH_CONST
|
SPL_AC_SET_FS_PWD_WITH_CONST
|
||||||
SPL_AC_2ARGS_VFS_UNLINK
|
SPL_AC_2ARGS_VFS_UNLINK
|
||||||
SPL_AC_4ARGS_VFS_RENAME
|
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 <linux/spinlock.h>
|
|
||||||
#include <linux/fs_struct.h>
|
|
||||||
], [
|
|
||||||
(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 #
|
||||||
dnl # 3.9 API change
|
dnl # 3.9 API change
|
||||||
dnl # set_fs_pwd takes const struct path *
|
dnl # set_fs_pwd takes const struct path *
|
||||||
|
|
|
@ -766,34 +766,32 @@ vn_releasef(int fd)
|
||||||
} /* releasef() */
|
} /* releasef() */
|
||||||
EXPORT_SYMBOL(releasef);
|
EXPORT_SYMBOL(releasef);
|
||||||
|
|
||||||
#ifndef HAVE_SET_FS_PWD
|
static void
|
||||||
void
|
#ifdef HAVE_SET_FS_PWD_WITH_CONST
|
||||||
# ifdef HAVE_SET_FS_PWD_WITH_CONST
|
vn_set_fs_pwd(struct fs_struct *fs, const struct path *path)
|
||||||
set_fs_pwd(struct fs_struct *fs, const struct path *path)
|
#else
|
||||||
# else
|
vn_set_fs_pwd(struct fs_struct *fs, struct path *path)
|
||||||
set_fs_pwd(struct fs_struct *fs, struct path *path)
|
#endif /* HAVE_SET_FS_PWD_WITH_CONST */
|
||||||
# endif
|
|
||||||
{
|
{
|
||||||
struct path old_pwd;
|
struct path old_pwd;
|
||||||
|
|
||||||
# ifdef HAVE_FS_STRUCT_SPINLOCK
|
#ifdef HAVE_FS_STRUCT_SPINLOCK
|
||||||
spin_lock(&fs->lock);
|
spin_lock(&fs->lock);
|
||||||
old_pwd = fs->pwd;
|
old_pwd = fs->pwd;
|
||||||
fs->pwd = *path;
|
fs->pwd = *path;
|
||||||
path_get(path);
|
path_get(path);
|
||||||
spin_unlock(&fs->lock);
|
spin_unlock(&fs->lock);
|
||||||
# else
|
#else
|
||||||
write_lock(&fs->lock);
|
write_lock(&fs->lock);
|
||||||
old_pwd = fs->pwd;
|
old_pwd = fs->pwd;
|
||||||
fs->pwd = *path;
|
fs->pwd = *path;
|
||||||
path_get(path);
|
path_get(path);
|
||||||
write_unlock(&fs->lock);
|
write_unlock(&fs->lock);
|
||||||
# endif /* HAVE_FS_STRUCT_SPINLOCK */
|
#endif /* HAVE_FS_STRUCT_SPINLOCK */
|
||||||
|
|
||||||
if (old_pwd.dentry)
|
if (old_pwd.dentry)
|
||||||
path_put(&old_pwd);
|
path_put(&old_pwd);
|
||||||
}
|
}
|
||||||
#endif /* HAVE_SET_FS_PWD */
|
|
||||||
|
|
||||||
int
|
int
|
||||||
vn_set_pwd(const char *filename)
|
vn_set_pwd(const char *filename)
|
||||||
|
@ -819,7 +817,7 @@ vn_set_pwd(const char *filename)
|
||||||
if (rc)
|
if (rc)
|
||||||
SGOTO(dput_and_out, rc);
|
SGOTO(dput_and_out, rc);
|
||||||
|
|
||||||
set_fs_pwd(current->fs, &path);
|
vn_set_fs_pwd(current->fs, &path);
|
||||||
|
|
||||||
dput_and_out:
|
dput_and_out:
|
||||||
path_put(&path);
|
path_put(&path);
|
||||||
|
|
Loading…
Reference in New Issue