diff options
-rw-r--r-- | drivers/staging/lustre/lustre/llite/namei.c | 8 | ||||
-rw-r--r-- | fs/9p/v9fs.h | 3 | ||||
-rw-r--r-- | fs/9p/vfs_inode.c | 10 | ||||
-rw-r--r-- | fs/9p/vfs_inode_dotl.c | 2 | ||||
-rw-r--r-- | fs/afs/dir.c | 11 | ||||
-rw-r--r-- | fs/ceph/dir.c | 10 | ||||
-rw-r--r-- | fs/coda/dir.c | 8 | ||||
-rw-r--r-- | fs/ecryptfs/inode.c | 8 | ||||
-rw-r--r-- | fs/kernfs/dir.c | 8 | ||||
-rw-r--r-- | fs/ncpfs/dir.c | 10 | ||||
-rw-r--r-- | fs/nfs/dir.c | 6 | ||||
-rw-r--r-- | fs/nfs/internal.h | 3 | ||||
-rw-r--r-- | fs/nfs/nfs3proc.c | 2 | ||||
-rw-r--r-- | fs/nfs/nfs4proc.c | 2 | ||||
-rw-r--r-- | fs/nfs/proc.c | 2 | ||||
-rw-r--r-- | fs/ocfs2/namei.c | 8 | ||||
-rw-r--r-- | fs/orangefs/namei.c | 8 |
17 files changed, 78 insertions, 31 deletions
diff --git a/drivers/staging/lustre/lustre/llite/namei.c b/drivers/staging/lustre/lustre/llite/namei.c index 2c4dc69731e8..ec824db2ad33 100644 --- a/drivers/staging/lustre/lustre/llite/namei.c +++ b/drivers/staging/lustre/lustre/llite/namei.c | |||
@@ -1050,13 +1050,17 @@ out: | |||
1050 | } | 1050 | } |
1051 | 1051 | ||
1052 | static int ll_rename(struct inode *src, struct dentry *src_dchild, | 1052 | static int ll_rename(struct inode *src, struct dentry *src_dchild, |
1053 | struct inode *tgt, struct dentry *tgt_dchild) | 1053 | struct inode *tgt, struct dentry *tgt_dchild, |
1054 | unsigned int flags) | ||
1054 | { | 1055 | { |
1055 | struct ptlrpc_request *request = NULL; | 1056 | struct ptlrpc_request *request = NULL; |
1056 | struct ll_sb_info *sbi = ll_i2sbi(src); | 1057 | struct ll_sb_info *sbi = ll_i2sbi(src); |
1057 | struct md_op_data *op_data; | 1058 | struct md_op_data *op_data; |
1058 | int err; | 1059 | int err; |
1059 | 1060 | ||
1061 | if (flags) | ||
1062 | return -EINVAL; | ||
1063 | |||
1060 | CDEBUG(D_VFSTRACE, | 1064 | CDEBUG(D_VFSTRACE, |
1061 | "VFS Op:oldname=%pd, src_dir="DFID"(%p), newname=%pd, tgt_dir="DFID"(%p)\n", | 1065 | "VFS Op:oldname=%pd, src_dir="DFID"(%p), newname=%pd, tgt_dir="DFID"(%p)\n", |
1062 | src_dchild, PFID(ll_inode2fid(src)), src, | 1066 | src_dchild, PFID(ll_inode2fid(src)), src, |
@@ -1102,7 +1106,7 @@ const struct inode_operations ll_dir_inode_operations = { | |||
1102 | .rmdir = ll_rmdir, | 1106 | .rmdir = ll_rmdir, |
1103 | .symlink = ll_symlink, | 1107 | .symlink = ll_symlink, |
1104 | .link = ll_link, | 1108 | .link = ll_link, |
1105 | .rename = ll_rename, | 1109 | .rename2 = ll_rename, |
1106 | .setattr = ll_setattr, | 1110 | .setattr = ll_setattr, |
1107 | .getattr = ll_getattr, | 1111 | .getattr = ll_getattr, |
1108 | .permission = ll_inode_permission, | 1112 | .permission = ll_inode_permission, |
diff --git a/fs/9p/v9fs.h b/fs/9p/v9fs.h index 6877050384a1..443d12e02043 100644 --- a/fs/9p/v9fs.h +++ b/fs/9p/v9fs.h | |||
@@ -148,7 +148,8 @@ extern struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, | |||
148 | extern int v9fs_vfs_unlink(struct inode *i, struct dentry *d); | 148 | extern int v9fs_vfs_unlink(struct inode *i, struct dentry *d); |
149 | extern int v9fs_vfs_rmdir(struct inode *i, struct dentry *d); | 149 | extern int v9fs_vfs_rmdir(struct inode *i, struct dentry *d); |
150 | extern int v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry, | 150 | extern int v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry, |
151 | struct inode *new_dir, struct dentry *new_dentry); | 151 | struct inode *new_dir, struct dentry *new_dentry, |
152 | unsigned int flags); | ||
152 | extern struct inode *v9fs_inode_from_fid(struct v9fs_session_info *v9ses, | 153 | extern struct inode *v9fs_inode_from_fid(struct v9fs_session_info *v9ses, |
153 | struct p9_fid *fid, | 154 | struct p9_fid *fid, |
154 | struct super_block *sb, int new); | 155 | struct super_block *sb, int new); |
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 8b1999b528e9..50ab1a615207 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c | |||
@@ -955,7 +955,8 @@ int v9fs_vfs_rmdir(struct inode *i, struct dentry *d) | |||
955 | 955 | ||
956 | int | 956 | int |
957 | v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry, | 957 | v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry, |
958 | struct inode *new_dir, struct dentry *new_dentry) | 958 | struct inode *new_dir, struct dentry *new_dentry, |
959 | unsigned int flags) | ||
959 | { | 960 | { |
960 | int retval; | 961 | int retval; |
961 | struct inode *old_inode; | 962 | struct inode *old_inode; |
@@ -966,6 +967,9 @@ v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
966 | struct p9_fid *newdirfid; | 967 | struct p9_fid *newdirfid; |
967 | struct p9_wstat wstat; | 968 | struct p9_wstat wstat; |
968 | 969 | ||
970 | if (flags) | ||
971 | return -EINVAL; | ||
972 | |||
969 | p9_debug(P9_DEBUG_VFS, "\n"); | 973 | p9_debug(P9_DEBUG_VFS, "\n"); |
970 | retval = 0; | 974 | retval = 0; |
971 | old_inode = d_inode(old_dentry); | 975 | old_inode = d_inode(old_dentry); |
@@ -1436,7 +1440,7 @@ static const struct inode_operations v9fs_dir_inode_operations_dotu = { | |||
1436 | .mkdir = v9fs_vfs_mkdir, | 1440 | .mkdir = v9fs_vfs_mkdir, |
1437 | .rmdir = v9fs_vfs_rmdir, | 1441 | .rmdir = v9fs_vfs_rmdir, |
1438 | .mknod = v9fs_vfs_mknod, | 1442 | .mknod = v9fs_vfs_mknod, |
1439 | .rename = v9fs_vfs_rename, | 1443 | .rename2 = v9fs_vfs_rename, |
1440 | .getattr = v9fs_vfs_getattr, | 1444 | .getattr = v9fs_vfs_getattr, |
1441 | .setattr = v9fs_vfs_setattr, | 1445 | .setattr = v9fs_vfs_setattr, |
1442 | }; | 1446 | }; |
@@ -1449,7 +1453,7 @@ static const struct inode_operations v9fs_dir_inode_operations = { | |||
1449 | .mkdir = v9fs_vfs_mkdir, | 1453 | .mkdir = v9fs_vfs_mkdir, |
1450 | .rmdir = v9fs_vfs_rmdir, | 1454 | .rmdir = v9fs_vfs_rmdir, |
1451 | .mknod = v9fs_vfs_mknod, | 1455 | .mknod = v9fs_vfs_mknod, |
1452 | .rename = v9fs_vfs_rename, | 1456 | .rename2 = v9fs_vfs_rename, |
1453 | .getattr = v9fs_vfs_getattr, | 1457 | .getattr = v9fs_vfs_getattr, |
1454 | .setattr = v9fs_vfs_setattr, | 1458 | .setattr = v9fs_vfs_setattr, |
1455 | }; | 1459 | }; |
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index eeabcb0bad12..8164be972b5c 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c | |||
@@ -964,7 +964,7 @@ const struct inode_operations v9fs_dir_inode_operations_dotl = { | |||
964 | .mkdir = v9fs_vfs_mkdir_dotl, | 964 | .mkdir = v9fs_vfs_mkdir_dotl, |
965 | .rmdir = v9fs_vfs_rmdir, | 965 | .rmdir = v9fs_vfs_rmdir, |
966 | .mknod = v9fs_vfs_mknod_dotl, | 966 | .mknod = v9fs_vfs_mknod_dotl, |
967 | .rename = v9fs_vfs_rename, | 967 | .rename2 = v9fs_vfs_rename, |
968 | .getattr = v9fs_vfs_getattr_dotl, | 968 | .getattr = v9fs_vfs_getattr_dotl, |
969 | .setattr = v9fs_vfs_setattr_dotl, | 969 | .setattr = v9fs_vfs_setattr_dotl, |
970 | .setxattr = generic_setxattr, | 970 | .setxattr = generic_setxattr, |
diff --git a/fs/afs/dir.c b/fs/afs/dir.c index eba541004d90..381b7d0b6751 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c | |||
@@ -38,7 +38,8 @@ static int afs_link(struct dentry *from, struct inode *dir, | |||
38 | static int afs_symlink(struct inode *dir, struct dentry *dentry, | 38 | static int afs_symlink(struct inode *dir, struct dentry *dentry, |
39 | const char *content); | 39 | const char *content); |
40 | static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, | 40 | static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, |
41 | struct inode *new_dir, struct dentry *new_dentry); | 41 | struct inode *new_dir, struct dentry *new_dentry, |
42 | unsigned int flags); | ||
42 | 43 | ||
43 | const struct file_operations afs_dir_file_operations = { | 44 | const struct file_operations afs_dir_file_operations = { |
44 | .open = afs_dir_open, | 45 | .open = afs_dir_open, |
@@ -56,7 +57,7 @@ const struct inode_operations afs_dir_inode_operations = { | |||
56 | .symlink = afs_symlink, | 57 | .symlink = afs_symlink, |
57 | .mkdir = afs_mkdir, | 58 | .mkdir = afs_mkdir, |
58 | .rmdir = afs_rmdir, | 59 | .rmdir = afs_rmdir, |
59 | .rename = afs_rename, | 60 | .rename2 = afs_rename, |
60 | .permission = afs_permission, | 61 | .permission = afs_permission, |
61 | .getattr = afs_getattr, | 62 | .getattr = afs_getattr, |
62 | .setattr = afs_setattr, | 63 | .setattr = afs_setattr, |
@@ -1083,12 +1084,16 @@ error: | |||
1083 | * rename a file in an AFS filesystem and/or move it between directories | 1084 | * rename a file in an AFS filesystem and/or move it between directories |
1084 | */ | 1085 | */ |
1085 | static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, | 1086 | static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, |
1086 | struct inode *new_dir, struct dentry *new_dentry) | 1087 | struct inode *new_dir, struct dentry *new_dentry, |
1088 | unsigned int flags) | ||
1087 | { | 1089 | { |
1088 | struct afs_vnode *orig_dvnode, *new_dvnode, *vnode; | 1090 | struct afs_vnode *orig_dvnode, *new_dvnode, *vnode; |
1089 | struct key *key; | 1091 | struct key *key; |
1090 | int ret; | 1092 | int ret; |
1091 | 1093 | ||
1094 | if (flags) | ||
1095 | return -EINVAL; | ||
1096 | |||
1092 | vnode = AFS_FS_I(d_inode(old_dentry)); | 1097 | vnode = AFS_FS_I(d_inode(old_dentry)); |
1093 | orig_dvnode = AFS_FS_I(old_dir); | 1098 | orig_dvnode = AFS_FS_I(old_dir); |
1094 | new_dvnode = AFS_FS_I(new_dir); | 1099 | new_dvnode = AFS_FS_I(new_dir); |
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index df4b3e6fa563..cef8252af38a 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c | |||
@@ -1061,7 +1061,8 @@ out: | |||
1061 | } | 1061 | } |
1062 | 1062 | ||
1063 | static int ceph_rename(struct inode *old_dir, struct dentry *old_dentry, | 1063 | static int ceph_rename(struct inode *old_dir, struct dentry *old_dentry, |
1064 | struct inode *new_dir, struct dentry *new_dentry) | 1064 | struct inode *new_dir, struct dentry *new_dentry, |
1065 | unsigned int flags) | ||
1065 | { | 1066 | { |
1066 | struct ceph_fs_client *fsc = ceph_sb_to_client(old_dir->i_sb); | 1067 | struct ceph_fs_client *fsc = ceph_sb_to_client(old_dir->i_sb); |
1067 | struct ceph_mds_client *mdsc = fsc->mdsc; | 1068 | struct ceph_mds_client *mdsc = fsc->mdsc; |
@@ -1069,6 +1070,9 @@ static int ceph_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
1069 | int op = CEPH_MDS_OP_RENAME; | 1070 | int op = CEPH_MDS_OP_RENAME; |
1070 | int err; | 1071 | int err; |
1071 | 1072 | ||
1073 | if (flags) | ||
1074 | return -EINVAL; | ||
1075 | |||
1072 | if (ceph_snap(old_dir) != ceph_snap(new_dir)) | 1076 | if (ceph_snap(old_dir) != ceph_snap(new_dir)) |
1073 | return -EXDEV; | 1077 | return -EXDEV; |
1074 | if (ceph_snap(old_dir) != CEPH_NOSNAP) { | 1078 | if (ceph_snap(old_dir) != CEPH_NOSNAP) { |
@@ -1498,7 +1502,7 @@ const struct inode_operations ceph_dir_iops = { | |||
1498 | .link = ceph_link, | 1502 | .link = ceph_link, |
1499 | .unlink = ceph_unlink, | 1503 | .unlink = ceph_unlink, |
1500 | .rmdir = ceph_unlink, | 1504 | .rmdir = ceph_unlink, |
1501 | .rename = ceph_rename, | 1505 | .rename2 = ceph_rename, |
1502 | .create = ceph_create, | 1506 | .create = ceph_create, |
1503 | .atomic_open = ceph_atomic_open, | 1507 | .atomic_open = ceph_atomic_open, |
1504 | }; | 1508 | }; |
@@ -1509,7 +1513,7 @@ const struct inode_operations ceph_snapdir_iops = { | |||
1509 | .getattr = ceph_getattr, | 1513 | .getattr = ceph_getattr, |
1510 | .mkdir = ceph_mkdir, | 1514 | .mkdir = ceph_mkdir, |
1511 | .rmdir = ceph_unlink, | 1515 | .rmdir = ceph_unlink, |
1512 | .rename = ceph_rename, | 1516 | .rename2 = ceph_rename, |
1513 | }; | 1517 | }; |
1514 | 1518 | ||
1515 | const struct dentry_operations ceph_dentry_ops = { | 1519 | const struct dentry_operations ceph_dentry_ops = { |
diff --git a/fs/coda/dir.c b/fs/coda/dir.c index 6fb8672c0892..5d79c26b0484 100644 --- a/fs/coda/dir.c +++ b/fs/coda/dir.c | |||
@@ -291,7 +291,8 @@ static int coda_rmdir(struct inode *dir, struct dentry *de) | |||
291 | 291 | ||
292 | /* rename */ | 292 | /* rename */ |
293 | static int coda_rename(struct inode *old_dir, struct dentry *old_dentry, | 293 | static int coda_rename(struct inode *old_dir, struct dentry *old_dentry, |
294 | struct inode *new_dir, struct dentry *new_dentry) | 294 | struct inode *new_dir, struct dentry *new_dentry, |
295 | unsigned int flags) | ||
295 | { | 296 | { |
296 | const char *old_name = old_dentry->d_name.name; | 297 | const char *old_name = old_dentry->d_name.name; |
297 | const char *new_name = new_dentry->d_name.name; | 298 | const char *new_name = new_dentry->d_name.name; |
@@ -299,6 +300,9 @@ static int coda_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
299 | int new_length = new_dentry->d_name.len; | 300 | int new_length = new_dentry->d_name.len; |
300 | int error; | 301 | int error; |
301 | 302 | ||
303 | if (flags) | ||
304 | return -EINVAL; | ||
305 | |||
302 | error = venus_rename(old_dir->i_sb, coda_i2f(old_dir), | 306 | error = venus_rename(old_dir->i_sb, coda_i2f(old_dir), |
303 | coda_i2f(new_dir), old_length, new_length, | 307 | coda_i2f(new_dir), old_length, new_length, |
304 | (const char *) old_name, (const char *)new_name); | 308 | (const char *) old_name, (const char *)new_name); |
@@ -569,7 +573,7 @@ const struct inode_operations coda_dir_inode_operations = { | |||
569 | .mkdir = coda_mkdir, | 573 | .mkdir = coda_mkdir, |
570 | .rmdir = coda_rmdir, | 574 | .rmdir = coda_rmdir, |
571 | .mknod = CODA_EIO_ERROR, | 575 | .mknod = CODA_EIO_ERROR, |
572 | .rename = coda_rename, | 576 | .rename2 = coda_rename, |
573 | .permission = coda_permission, | 577 | .permission = coda_permission, |
574 | .getattr = coda_getattr, | 578 | .getattr = coda_getattr, |
575 | .setattr = coda_setattr, | 579 | .setattr = coda_setattr, |
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 9d153b6a1d72..f3ff7c4d384c 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c | |||
@@ -577,7 +577,8 @@ out: | |||
577 | 577 | ||
578 | static int | 578 | static int |
579 | ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry, | 579 | ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry, |
580 | struct inode *new_dir, struct dentry *new_dentry) | 580 | struct inode *new_dir, struct dentry *new_dentry, |
581 | unsigned int flags) | ||
581 | { | 582 | { |
582 | int rc; | 583 | int rc; |
583 | struct dentry *lower_old_dentry; | 584 | struct dentry *lower_old_dentry; |
@@ -587,6 +588,9 @@ ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
587 | struct dentry *trap = NULL; | 588 | struct dentry *trap = NULL; |
588 | struct inode *target_inode; | 589 | struct inode *target_inode; |
589 | 590 | ||
591 | if (flags) | ||
592 | return -EINVAL; | ||
593 | |||
590 | lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); | 594 | lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); |
591 | lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); | 595 | lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); |
592 | dget(lower_old_dentry); | 596 | dget(lower_old_dentry); |
@@ -1104,7 +1108,7 @@ const struct inode_operations ecryptfs_dir_iops = { | |||
1104 | .mkdir = ecryptfs_mkdir, | 1108 | .mkdir = ecryptfs_mkdir, |
1105 | .rmdir = ecryptfs_rmdir, | 1109 | .rmdir = ecryptfs_rmdir, |
1106 | .mknod = ecryptfs_mknod, | 1110 | .mknod = ecryptfs_mknod, |
1107 | .rename = ecryptfs_rename, | 1111 | .rename2 = ecryptfs_rename, |
1108 | .permission = ecryptfs_permission, | 1112 | .permission = ecryptfs_permission, |
1109 | .setattr = ecryptfs_setattr, | 1113 | .setattr = ecryptfs_setattr, |
1110 | .setxattr = ecryptfs_setxattr, | 1114 | .setxattr = ecryptfs_setxattr, |
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c index e57174d43683..c7e23ca945ab 100644 --- a/fs/kernfs/dir.c +++ b/fs/kernfs/dir.c | |||
@@ -1096,13 +1096,17 @@ static int kernfs_iop_rmdir(struct inode *dir, struct dentry *dentry) | |||
1096 | } | 1096 | } |
1097 | 1097 | ||
1098 | static int kernfs_iop_rename(struct inode *old_dir, struct dentry *old_dentry, | 1098 | static int kernfs_iop_rename(struct inode *old_dir, struct dentry *old_dentry, |
1099 | struct inode *new_dir, struct dentry *new_dentry) | 1099 | struct inode *new_dir, struct dentry *new_dentry, |
1100 | unsigned int flags) | ||
1100 | { | 1101 | { |
1101 | struct kernfs_node *kn = old_dentry->d_fsdata; | 1102 | struct kernfs_node *kn = old_dentry->d_fsdata; |
1102 | struct kernfs_node *new_parent = new_dir->i_private; | 1103 | struct kernfs_node *new_parent = new_dir->i_private; |
1103 | struct kernfs_syscall_ops *scops = kernfs_root(kn)->syscall_ops; | 1104 | struct kernfs_syscall_ops *scops = kernfs_root(kn)->syscall_ops; |
1104 | int ret; | 1105 | int ret; |
1105 | 1106 | ||
1107 | if (flags) | ||
1108 | return -EINVAL; | ||
1109 | |||
1106 | if (!scops || !scops->rename) | 1110 | if (!scops || !scops->rename) |
1107 | return -EPERM; | 1111 | return -EPERM; |
1108 | 1112 | ||
@@ -1133,7 +1137,7 @@ const struct inode_operations kernfs_dir_iops = { | |||
1133 | 1137 | ||
1134 | .mkdir = kernfs_iop_mkdir, | 1138 | .mkdir = kernfs_iop_mkdir, |
1135 | .rmdir = kernfs_iop_rmdir, | 1139 | .rmdir = kernfs_iop_rmdir, |
1136 | .rename = kernfs_iop_rename, | 1140 | .rename2 = kernfs_iop_rename, |
1137 | }; | 1141 | }; |
1138 | 1142 | ||
1139 | static struct kernfs_node *kernfs_leftmost_descendant(struct kernfs_node *pos) | 1143 | static struct kernfs_node *kernfs_leftmost_descendant(struct kernfs_node *pos) |
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c index f5b594e2457c..a2d3738df4af 100644 --- a/fs/ncpfs/dir.c +++ b/fs/ncpfs/dir.c | |||
@@ -36,7 +36,7 @@ static int ncp_unlink(struct inode *, struct dentry *); | |||
36 | static int ncp_mkdir(struct inode *, struct dentry *, umode_t); | 36 | static int ncp_mkdir(struct inode *, struct dentry *, umode_t); |
37 | static int ncp_rmdir(struct inode *, struct dentry *); | 37 | static int ncp_rmdir(struct inode *, struct dentry *); |
38 | static int ncp_rename(struct inode *, struct dentry *, | 38 | static int ncp_rename(struct inode *, struct dentry *, |
39 | struct inode *, struct dentry *); | 39 | struct inode *, struct dentry *, unsigned int); |
40 | static int ncp_mknod(struct inode * dir, struct dentry *dentry, | 40 | static int ncp_mknod(struct inode * dir, struct dentry *dentry, |
41 | umode_t mode, dev_t rdev); | 41 | umode_t mode, dev_t rdev); |
42 | #if defined(CONFIG_NCPFS_EXTRAS) || defined(CONFIG_NCPFS_NFS_NS) | 42 | #if defined(CONFIG_NCPFS_EXTRAS) || defined(CONFIG_NCPFS_NFS_NS) |
@@ -65,7 +65,7 @@ const struct inode_operations ncp_dir_inode_operations = | |||
65 | .mkdir = ncp_mkdir, | 65 | .mkdir = ncp_mkdir, |
66 | .rmdir = ncp_rmdir, | 66 | .rmdir = ncp_rmdir, |
67 | .mknod = ncp_mknod, | 67 | .mknod = ncp_mknod, |
68 | .rename = ncp_rename, | 68 | .rename2 = ncp_rename, |
69 | .setattr = ncp_notify_change, | 69 | .setattr = ncp_notify_change, |
70 | }; | 70 | }; |
71 | 71 | ||
@@ -1105,13 +1105,17 @@ static int ncp_unlink(struct inode *dir, struct dentry *dentry) | |||
1105 | } | 1105 | } |
1106 | 1106 | ||
1107 | static int ncp_rename(struct inode *old_dir, struct dentry *old_dentry, | 1107 | static int ncp_rename(struct inode *old_dir, struct dentry *old_dentry, |
1108 | struct inode *new_dir, struct dentry *new_dentry) | 1108 | struct inode *new_dir, struct dentry *new_dentry, |
1109 | unsigned int flags) | ||
1109 | { | 1110 | { |
1110 | struct ncp_server *server = NCP_SERVER(old_dir); | 1111 | struct ncp_server *server = NCP_SERVER(old_dir); |
1111 | int error; | 1112 | int error; |
1112 | int old_len, new_len; | 1113 | int old_len, new_len; |
1113 | __u8 __old_name[NCP_MAXPATHLEN + 1], __new_name[NCP_MAXPATHLEN + 1]; | 1114 | __u8 __old_name[NCP_MAXPATHLEN + 1], __new_name[NCP_MAXPATHLEN + 1]; |
1114 | 1115 | ||
1116 | if (flags) | ||
1117 | return -EINVAL; | ||
1118 | |||
1115 | ncp_dbg(1, "%pd2 to %pd2\n", old_dentry, new_dentry); | 1119 | ncp_dbg(1, "%pd2 to %pd2\n", old_dentry, new_dentry); |
1116 | 1120 | ||
1117 | ncp_age_dentry(server, old_dentry); | 1121 | ncp_age_dentry(server, old_dentry); |
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 177fefb26c18..06e0bf092ba9 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c | |||
@@ -2013,7 +2013,8 @@ EXPORT_SYMBOL_GPL(nfs_link); | |||
2013 | * the rename. | 2013 | * the rename. |
2014 | */ | 2014 | */ |
2015 | int nfs_rename(struct inode *old_dir, struct dentry *old_dentry, | 2015 | int nfs_rename(struct inode *old_dir, struct dentry *old_dentry, |
2016 | struct inode *new_dir, struct dentry *new_dentry) | 2016 | struct inode *new_dir, struct dentry *new_dentry, |
2017 | unsigned int flags) | ||
2017 | { | 2018 | { |
2018 | struct inode *old_inode = d_inode(old_dentry); | 2019 | struct inode *old_inode = d_inode(old_dentry); |
2019 | struct inode *new_inode = d_inode(new_dentry); | 2020 | struct inode *new_inode = d_inode(new_dentry); |
@@ -2021,6 +2022,9 @@ int nfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
2021 | struct rpc_task *task; | 2022 | struct rpc_task *task; |
2022 | int error = -EBUSY; | 2023 | int error = -EBUSY; |
2023 | 2024 | ||
2025 | if (flags) | ||
2026 | return -EINVAL; | ||
2027 | |||
2024 | dfprintk(VFS, "NFS: rename(%pd2 -> %pd2, ct=%d)\n", | 2028 | dfprintk(VFS, "NFS: rename(%pd2 -> %pd2, ct=%d)\n", |
2025 | old_dentry, new_dentry, | 2029 | old_dentry, new_dentry, |
2026 | d_count(new_dentry)); | 2030 | d_count(new_dentry)); |
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index 74935a19e4bf..48d1adfe25d6 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h | |||
@@ -359,7 +359,8 @@ int nfs_unlink(struct inode *, struct dentry *); | |||
359 | int nfs_symlink(struct inode *, struct dentry *, const char *); | 359 | int nfs_symlink(struct inode *, struct dentry *, const char *); |
360 | int nfs_link(struct dentry *, struct inode *, struct dentry *); | 360 | int nfs_link(struct dentry *, struct inode *, struct dentry *); |
361 | int nfs_mknod(struct inode *, struct dentry *, umode_t, dev_t); | 361 | int nfs_mknod(struct inode *, struct dentry *, umode_t, dev_t); |
362 | int nfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); | 362 | int nfs_rename(struct inode *, struct dentry *, |
363 | struct inode *, struct dentry *, unsigned int); | ||
363 | 364 | ||
364 | /* file.c */ | 365 | /* file.c */ |
365 | int nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync); | 366 | int nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync); |
diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c index 698be9361280..a85fdae4a51f 100644 --- a/fs/nfs/nfs3proc.c +++ b/fs/nfs/nfs3proc.c | |||
@@ -893,7 +893,7 @@ static const struct inode_operations nfs3_dir_inode_operations = { | |||
893 | .mkdir = nfs_mkdir, | 893 | .mkdir = nfs_mkdir, |
894 | .rmdir = nfs_rmdir, | 894 | .rmdir = nfs_rmdir, |
895 | .mknod = nfs_mknod, | 895 | .mknod = nfs_mknod, |
896 | .rename = nfs_rename, | 896 | .rename2 = nfs_rename, |
897 | .permission = nfs_permission, | 897 | .permission = nfs_permission, |
898 | .getattr = nfs_getattr, | 898 | .getattr = nfs_getattr, |
899 | .setattr = nfs_setattr, | 899 | .setattr = nfs_setattr, |
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index a9dec32ba9ba..14956da3cf38 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -8937,7 +8937,7 @@ static const struct inode_operations nfs4_dir_inode_operations = { | |||
8937 | .mkdir = nfs_mkdir, | 8937 | .mkdir = nfs_mkdir, |
8938 | .rmdir = nfs_rmdir, | 8938 | .rmdir = nfs_rmdir, |
8939 | .mknod = nfs_mknod, | 8939 | .mknod = nfs_mknod, |
8940 | .rename = nfs_rename, | 8940 | .rename2 = nfs_rename, |
8941 | .permission = nfs_permission, | 8941 | .permission = nfs_permission, |
8942 | .getattr = nfs_getattr, | 8942 | .getattr = nfs_getattr, |
8943 | .setattr = nfs_setattr, | 8943 | .setattr = nfs_setattr, |
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index b7bca8303989..380d0b787983 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c | |||
@@ -685,7 +685,7 @@ static const struct inode_operations nfs_dir_inode_operations = { | |||
685 | .mkdir = nfs_mkdir, | 685 | .mkdir = nfs_mkdir, |
686 | .rmdir = nfs_rmdir, | 686 | .rmdir = nfs_rmdir, |
687 | .mknod = nfs_mknod, | 687 | .mknod = nfs_mknod, |
688 | .rename = nfs_rename, | 688 | .rename2 = nfs_rename, |
689 | .permission = nfs_permission, | 689 | .permission = nfs_permission, |
690 | .getattr = nfs_getattr, | 690 | .getattr = nfs_getattr, |
691 | .setattr = nfs_setattr, | 691 | .setattr = nfs_setattr, |
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c index a8f1225e6d9b..1040c10a9493 100644 --- a/fs/ocfs2/namei.c +++ b/fs/ocfs2/namei.c | |||
@@ -1203,7 +1203,8 @@ static void ocfs2_double_unlock(struct inode *inode1, struct inode *inode2) | |||
1203 | static int ocfs2_rename(struct inode *old_dir, | 1203 | static int ocfs2_rename(struct inode *old_dir, |
1204 | struct dentry *old_dentry, | 1204 | struct dentry *old_dentry, |
1205 | struct inode *new_dir, | 1205 | struct inode *new_dir, |
1206 | struct dentry *new_dentry) | 1206 | struct dentry *new_dentry, |
1207 | unsigned int flags) | ||
1207 | { | 1208 | { |
1208 | int status = 0, rename_lock = 0, parents_locked = 0, target_exists = 0; | 1209 | int status = 0, rename_lock = 0, parents_locked = 0, target_exists = 0; |
1209 | int old_child_locked = 0, new_child_locked = 0, update_dot_dot = 0; | 1210 | int old_child_locked = 0, new_child_locked = 0, update_dot_dot = 0; |
@@ -1228,6 +1229,9 @@ static int ocfs2_rename(struct inode *old_dir, | |||
1228 | struct ocfs2_dir_lookup_result target_insert = { NULL, }; | 1229 | struct ocfs2_dir_lookup_result target_insert = { NULL, }; |
1229 | bool should_add_orphan = false; | 1230 | bool should_add_orphan = false; |
1230 | 1231 | ||
1232 | if (flags) | ||
1233 | return -EINVAL; | ||
1234 | |||
1231 | /* At some point it might be nice to break this function up a | 1235 | /* At some point it might be nice to break this function up a |
1232 | * bit. */ | 1236 | * bit. */ |
1233 | 1237 | ||
@@ -2909,7 +2913,7 @@ const struct inode_operations ocfs2_dir_iops = { | |||
2909 | .symlink = ocfs2_symlink, | 2913 | .symlink = ocfs2_symlink, |
2910 | .mkdir = ocfs2_mkdir, | 2914 | .mkdir = ocfs2_mkdir, |
2911 | .mknod = ocfs2_mknod, | 2915 | .mknod = ocfs2_mknod, |
2912 | .rename = ocfs2_rename, | 2916 | .rename2 = ocfs2_rename, |
2913 | .setattr = ocfs2_setattr, | 2917 | .setattr = ocfs2_setattr, |
2914 | .getattr = ocfs2_getattr, | 2918 | .getattr = ocfs2_getattr, |
2915 | .permission = ocfs2_permission, | 2919 | .permission = ocfs2_permission, |
diff --git a/fs/orangefs/namei.c b/fs/orangefs/namei.c index 62c525936ee8..810d43635dfb 100644 --- a/fs/orangefs/namei.c +++ b/fs/orangefs/namei.c | |||
@@ -409,11 +409,15 @@ out: | |||
409 | static int orangefs_rename(struct inode *old_dir, | 409 | static int orangefs_rename(struct inode *old_dir, |
410 | struct dentry *old_dentry, | 410 | struct dentry *old_dentry, |
411 | struct inode *new_dir, | 411 | struct inode *new_dir, |
412 | struct dentry *new_dentry) | 412 | struct dentry *new_dentry, |
413 | unsigned int flags) | ||
413 | { | 414 | { |
414 | struct orangefs_kernel_op_s *new_op; | 415 | struct orangefs_kernel_op_s *new_op; |
415 | int ret; | 416 | int ret; |
416 | 417 | ||
418 | if (flags) | ||
419 | return -EINVAL; | ||
420 | |||
417 | gossip_debug(GOSSIP_NAME_DEBUG, | 421 | gossip_debug(GOSSIP_NAME_DEBUG, |
418 | "orangefs_rename: called (%pd2 => %pd2) ct=%d\n", | 422 | "orangefs_rename: called (%pd2 => %pd2) ct=%d\n", |
419 | old_dentry, new_dentry, d_count(new_dentry)); | 423 | old_dentry, new_dentry, d_count(new_dentry)); |
@@ -459,7 +463,7 @@ const struct inode_operations orangefs_dir_inode_operations = { | |||
459 | .symlink = orangefs_symlink, | 463 | .symlink = orangefs_symlink, |
460 | .mkdir = orangefs_mkdir, | 464 | .mkdir = orangefs_mkdir, |
461 | .rmdir = orangefs_unlink, | 465 | .rmdir = orangefs_unlink, |
462 | .rename = orangefs_rename, | 466 | .rename2 = orangefs_rename, |
463 | .setattr = orangefs_setattr, | 467 | .setattr = orangefs_setattr, |
464 | .getattr = orangefs_getattr, | 468 | .getattr = orangefs_getattr, |
465 | .setxattr = generic_setxattr, | 469 | .setxattr = generic_setxattr, |