aboutsummaryrefslogtreecommitdiffstats
path: root/module/zfs/zpl_inode.c
diff options
context:
space:
mode:
authorChunwei Chen <[email protected]>2016-10-19 11:19:01 -0700
committerBrian Behlendorf <[email protected]>2016-10-20 09:39:09 -0700
commitb8d9e26440ade0edebfa98af8cb9371810c1aeaf (patch)
treedd7131c9a6ed12367a4109568c7070ab8ebe89e2 /module/zfs/zpl_inode.c
parent8ba3f2bf6a66378b36acd70e5616a78396030984 (diff)
Linux 4.9 compat: iops->rename() wants flags
In Linux 4.9, torvalds/linux@2773bf0, iops->rename() and iops->rename2() are merged together into iops->rename(), it now wants flags. Signed-off-by: Chunwei Chen <[email protected]>
Diffstat (limited to 'module/zfs/zpl_inode.c')
-rw-r--r--module/zfs/zpl_inode.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/module/zfs/zpl_inode.c b/module/zfs/zpl_inode.c
index d26193ffa..113885ead 100644
--- a/module/zfs/zpl_inode.c
+++ b/module/zfs/zpl_inode.c
@@ -356,13 +356,17 @@ zpl_setattr(struct dentry *dentry, struct iattr *ia)
}
static int
-zpl_rename(struct inode *sdip, struct dentry *sdentry,
- struct inode *tdip, struct dentry *tdentry)
+zpl_rename2(struct inode *sdip, struct dentry *sdentry,
+ struct inode *tdip, struct dentry *tdentry, unsigned int flags)
{
cred_t *cr = CRED();
int error;
fstrans_cookie_t cookie;
+ /* We don't have renameat2(2) support */
+ if (flags)
+ return (-EINVAL);
+
crhold(cr);
cookie = spl_fstrans_mark();
error = -zfs_rename(sdip, dname(sdentry), tdip, dname(tdentry), cr, 0);
@@ -373,6 +377,15 @@ zpl_rename(struct inode *sdip, struct dentry *sdentry,
return (error);
}
+#ifndef HAVE_RENAME_WANTS_FLAGS
+static int
+zpl_rename(struct inode *sdip, struct dentry *sdentry,
+ struct inode *tdip, struct dentry *tdentry)
+{
+ return (zpl_rename2(sdip, sdentry, tdip, tdentry, 0));
+}
+#endif
+
static int
zpl_symlink(struct inode *dir, struct dentry *dentry, const char *name)
{
@@ -681,7 +694,11 @@ const struct inode_operations zpl_dir_inode_operations = {
.mkdir = zpl_mkdir,
.rmdir = zpl_rmdir,
.mknod = zpl_mknod,
+#ifdef HAVE_RENAME_WANTS_FLAGS
+ .rename = zpl_rename2,
+#else
.rename = zpl_rename,
+#endif
.setattr = zpl_setattr,
.getattr = zpl_getattr,
.setxattr = generic_setxattr,