In newer kernels the vfs_rename api changed to take
more arguments. This patch creates a wrapper to let us adapt
to the different versions of vfs_rename in old and new kernels.
Signed-off-by: Bob Glossman <bob.glossman@intel.com>
Change-Id: Ia5dafe64570fc404cd8a037fd442ca12e687ffc1
Reviewed-on: http://review.whamcloud.com/9537
Tested-by: Jenkins
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
+# 3.13 has vfs_renane with 5 args
+AC_DEFUN([LC_VFS_RENAME_5ARGS],
+[AC_MSG_CHECKING([if kernel has vfs_rename with 5 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ vfs_rename(NULL, NULL, NULL, NULL, NULL);
+], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_VFS_RENAME_5ARGS, 1,
+ [kernel has vfs_rename with 5 args])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
LC_OLDSIZE_TRUNCATE_PAGECACHE
LC_KIOCB_KI_LEFT
LC_OLDSIZE_TRUNCATE_PAGECACHE
LC_KIOCB_KI_LEFT
+ # 3.13
+ LC_VFS_RENAME_5ARGS
+
#
if test x$enable_server != xno ; then
LC_FUNC_DEV_SET_RDONLY
#
if test x$enable_server != xno ; then
LC_FUNC_DEV_SET_RDONLY
#define ll_truncate_pagecache(inode, size) truncate_pagecache(inode, size)
#endif
#define ll_truncate_pagecache(inode, size) truncate_pagecache(inode, size)
#endif
+#ifdef HAVE_VFS_RENAME_5ARGS
+#define ll_vfs_rename(a, b, c, d) vfs_rename(a, b, c, d, NULL)
+#else
+#define ll_vfs_rename(a, b, c, d) vfs_rename(a, b, c, d)
+#endif
+
if (IS_ERR(dchild_new))
GOTO(put_old, err = PTR_ERR(dchild_new));
if (IS_ERR(dchild_new))
GOTO(put_old, err = PTR_ERR(dchild_new));
- err = vfs_rename(dir->d_inode, dchild_old, dir->d_inode, dchild_new);
+ err = ll_vfs_rename(dir->d_inode, dchild_old, dir->d_inode, dchild_new);
dput(dchild_new);
put_old:
dput(dchild_new);
put_old: