]> git.proxmox.com Git - mirror_spl-debian.git/commitdiff
Linux 3.9 compat: set_fs_root takes const struct path *
authorRichard Yao <ryao@cs.stonybrook.edu>
Mon, 4 Mar 2013 05:24:04 +0000 (00:24 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 14 Mar 2013 17:43:29 +0000 (10:43 -0700)
torvalds/linux@dcf787f39162ce32ca325b3e784aba2d2444619a enforces
const-correctness in passing struct path *.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
config/spl-build.m4
module/spl/spl-vnode.c

index 83cefabd422ffcf42bcc688b18c1c97f7cea2b99..6a8e658a2006e6f0da2516b2e53d675dfaef026f 100644 (file)
@@ -64,6 +64,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
        SPL_AC_USER_PATH_DIR
        SPL_AC_SET_FS_PWD
        SPL_AC_2ARGS_SET_FS_PWD
+       SPL_AC_SET_FS_PWD_WITH_CONST
        SPL_AC_2ARGS_VFS_UNLINK
        SPL_AC_4ARGS_VFS_RENAME
        SPL_AC_VFS_FSYNC
@@ -1686,11 +1687,54 @@ AC_DEFUN([SPL_AC_2ARGS_SET_FS_PWD],
                AC_MSG_RESULT(yes)
                AC_DEFINE(HAVE_2ARGS_SET_FS_PWD, 1,
                          [set_fs_pwd() wants 2 args])
+               HAVE_2ARGS_SET_FS_PWD=yes
        ],[
                AC_MSG_RESULT(no)
        ])
 ])
 
+dnl #
+dnl # 3.9 API change
+dnl # set_fs_pwd takes const struct path *
+dnl #
+AC_DEFUN([SPL_AC_SET_FS_PWD_WITH_CONST],
+if test "x$HAVE_2ARGS_SET_FS_PWD" = xyes; then
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
+       [AC_MSG_CHECKING([whether set_fs_pwd() requires const struct path *])
+       SPL_LINUX_TRY_COMPILE([
+               #include <linux/spinlock.h>
+               #include <linux/fs_struct.h>
+               #include <linux/path.h>
+               void (*const set_fs_pwd_func)
+                       (struct fs_struct *, const struct path *)
+                       = set_fs_pwd;
+       ],[
+               return 0;
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SET_FS_PWD_WITH_CONST, 1,
+                       [set_fs_pwd() needs const path *])
+       ],[
+               SPL_LINUX_TRY_COMPILE([
+                       #include <linux/spinlock.h>
+                       #include <linux/fs_struct.h>
+                       #include <linux/path.h>
+                       void (*const set_fs_pwd_func)
+                               (struct fs_struct *, struct path *)
+                               = set_fs_pwd;
+               ],[
+                       return 0;
+               ],[
+                       AC_MSG_RESULT(no)
+               ],[
+                       AC_MSG_ERROR(unknown)
+               ])
+       ])
+       EXTRA_KCFLAGS="$tmp_flags"
+fi
+])
+
 dnl #
 dnl # SLES API change, never adopted in mainline,
 dnl # Third 'struct vfsmount *' argument removed.
index e264fba050e924431324cc8fecdae459e73b36cc..dac452c10ec464f79bc9a460353e8df125a37ff5 100644 (file)
@@ -840,7 +840,11 @@ EXPORT_SYMBOL(releasef);
 # ifdef HAVE_2ARGS_SET_FS_PWD
 /* Used from 2.6.25 - 2.6.31+ */
 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
 {
        struct path old_pwd;