aboutsummaryrefslogtreecommitdiffstats
path: root/fs/reiserfs
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2016-09-27 05:03:57 -0400
committerMiklos Szeredi <mszeredi@redhat.com>2016-09-27 05:03:57 -0400
commitf03b8ad8d38634d13e802165cc15917481b47835 (patch)
tree4dc9c060684f242d1e6c07d28d1ff625db63fd6c /fs/reiserfs
parent9a232de4999666b2e8ea6775b2b0e3e4feb09b7a (diff)
fs: support RENAME_NOREPLACE for local filesystems
This is trivial to do: - add flags argument to foo_rename() - check if flags doesn't have any other than RENAME_NOREPLACE - assign foo_rename() to .rename2 instead of .rename Filesystems converted: affs, bfs, exofs, ext2, hfs, hfsplus, jffs2, jfs, logfs, minix, msdos, nilfs2, omfs, reiserfs, sysvfs, ubifs, udf, ufs, vfat. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> Acked-by: Boaz Harrosh <ooo@electrozaur.com> Acked-by: Richard Weinberger <richard@nod.at> Acked-by: Bob Copeland <me@bobcopeland.com> Acked-by: Jan Kara <jack@suse.cz> Cc: Theodore Ts'o <tytso@mit.edu> Cc: Jaegeuk Kim <jaegeuk@kernel.org> Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Cc: Mikulas Patocka <mpatocka@redhat.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Dave Kleikamp <shaggy@kernel.org> Cc: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> Cc: Christoph Hellwig <hch@infradead.org>
Diffstat (limited to 'fs/reiserfs')
-rw-r--r--fs/reiserfs/namei.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
index 8a36696d6df9..21b4b7138985 100644
--- a/fs/reiserfs/namei.c
+++ b/fs/reiserfs/namei.c
@@ -1306,7 +1306,8 @@ static void set_ino_in_dir_entry(struct reiserfs_dir_entry *de,
1306 * get_empty_nodes or its clones 1306 * get_empty_nodes or its clones
1307 */ 1307 */
1308static int reiserfs_rename(struct inode *old_dir, struct dentry *old_dentry, 1308static int reiserfs_rename(struct inode *old_dir, struct dentry *old_dentry,
1309 struct inode *new_dir, struct dentry *new_dentry) 1309 struct inode *new_dir, struct dentry *new_dentry,
1310 unsigned int flags)
1310{ 1311{
1311 int retval; 1312 int retval;
1312 INITIALIZE_PATH(old_entry_path); 1313 INITIALIZE_PATH(old_entry_path);
@@ -1321,6 +1322,9 @@ static int reiserfs_rename(struct inode *old_dir, struct dentry *old_dentry,
1321 unsigned long savelink = 1; 1322 unsigned long savelink = 1;
1322 struct timespec ctime; 1323 struct timespec ctime;
1323 1324
1325 if (flags & ~RENAME_NOREPLACE)
1326 return -EINVAL;
1327
1324 /* 1328 /*
1325 * three balancings: (1) old name removal, (2) new name insertion 1329 * three balancings: (1) old name removal, (2) new name insertion
1326 * and (3) maybe "save" link insertion 1330 * and (3) maybe "save" link insertion
@@ -1648,7 +1652,7 @@ const struct inode_operations reiserfs_dir_inode_operations = {
1648 .mkdir = reiserfs_mkdir, 1652 .mkdir = reiserfs_mkdir,
1649 .rmdir = reiserfs_rmdir, 1653 .rmdir = reiserfs_rmdir,
1650 .mknod = reiserfs_mknod, 1654 .mknod = reiserfs_mknod,
1651 .rename = reiserfs_rename, 1655 .rename2 = reiserfs_rename,
1652 .setattr = reiserfs_setattr, 1656 .setattr = reiserfs_setattr,
1653 .setxattr = generic_setxattr, 1657 .setxattr = generic_setxattr,
1654 .getxattr = generic_getxattr, 1658 .getxattr = generic_getxattr,