]) # LC_HAVE_TRUNCATE_IPAGES_FINAL
#
+# LC_IOPS_RENAME_WITH_FLAGS
+#
+# 3.14 has inode_operations->rename with 5 args
+# commit 520c8b16505236fc82daa352e6c5e73cd9870cff
+#
+AC_DEFUN([LC_IOPS_RENAME_WITH_FLAGS], [
+LB_CHECK_COMPILE([if 'inode_operations->rename' taken flags as argument],
+iops_rename_with_flags, [
+ #include <linux/fs.h>
+],[
+ struct inode *i1 = NULL, *i2 = NULL;
+ struct dentry *d1 = NULL, *d2 = NULL;
+ int rc;
+ rc = ((struct inode_operations *)0)->rename(i1, d1, i2, d2, 0);
+], [
+ AC_DEFINE(HAVE_IOPS_RENAME_WITH_FLAGS, 1,
+ [inode_operations->rename need flags as argument])
+])
+]) # LC_IOPS_RENAME_WITH_FLAGS
+
+#
# LC_VFS_RENAME_6ARGS
#
# 3.15 has vfs_rename with 6 args
# 3.14
LC_HAVE_BVEC_ITER
LC_HAVE_TRUNCATE_IPAGES_FINAL
+ LC_IOPS_RENAME_WITH_FLAGS
# 3.15
LC_VFS_RENAME_6ARGS
}
static int ll_rename(struct inode *src, struct dentry *src_dchild,
- struct inode *tgt, struct dentry *tgt_dchild)
+ struct inode *tgt, struct dentry *tgt_dchild
+#ifdef HAVE_IOPS_RENAME_WITH_FLAGS
+ , unsigned int flags
+#endif
+ )
{
struct qstr *src_name = &src_dchild->d_name;
struct qstr *tgt_name = &tgt_dchild->d_name;
- struct ptlrpc_request *request = NULL;
- struct ll_sb_info *sbi = ll_i2sbi(src);
- struct md_op_data *op_data;
- int err;
- ENTRY;
+ struct ptlrpc_request *request = NULL;
+ struct ll_sb_info *sbi = ll_i2sbi(src);
+ struct md_op_data *op_data;
+ int err;
+ ENTRY;
+
+#ifdef HAVE_IOPS_RENAME_WITH_FLAGS
+ if (flags)
+ return -EINVAL;
+#endif
+
CDEBUG(D_VFSTRACE, "VFS Op:oldname=%.*s, src_dir="DFID
"(%p), newname=%.*s, tgt_dir="DFID"(%p)\n",
src_name->len, src_name->name,