diff options
| author | Miklos Szeredi <mszeredi@suse.cz> | 2014-07-23 09:15:32 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-08-07 14:40:09 -0400 |
| commit | 80ace85c915d0f41016f82917218997b72431258 (patch) | |
| tree | 59fa51e5968e831c5079a148f21f58b099fdb13b | |
| parent | a0dbc56610b3e157f19241404e738744b7e7877e (diff) | |
btrfs: add RENAME_NOREPLACE
RENAME_NOREPLACE is trivial to implement for most filesystems: switch over
to ->rename2() and check for the supported flags. The rest is done by the
VFS.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Cc: Chris Mason <clm@fb.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | fs/btrfs/inode.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 3668048e16f8..3183742d6f0d 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
| @@ -8476,6 +8476,16 @@ out_notrans: | |||
| 8476 | return ret; | 8476 | return ret; |
| 8477 | } | 8477 | } |
| 8478 | 8478 | ||
| 8479 | static int btrfs_rename2(struct inode *old_dir, struct dentry *old_dentry, | ||
| 8480 | struct inode *new_dir, struct dentry *new_dentry, | ||
| 8481 | unsigned int flags) | ||
| 8482 | { | ||
| 8483 | if (flags & ~RENAME_NOREPLACE) | ||
| 8484 | return -EINVAL; | ||
| 8485 | |||
| 8486 | return btrfs_rename(old_dir, old_dentry, new_dir, new_dentry); | ||
| 8487 | } | ||
| 8488 | |||
| 8479 | static void btrfs_run_delalloc_work(struct btrfs_work *work) | 8489 | static void btrfs_run_delalloc_work(struct btrfs_work *work) |
| 8480 | { | 8490 | { |
| 8481 | struct btrfs_delalloc_work *delalloc_work; | 8491 | struct btrfs_delalloc_work *delalloc_work; |
| @@ -9019,7 +9029,7 @@ static const struct inode_operations btrfs_dir_inode_operations = { | |||
| 9019 | .link = btrfs_link, | 9029 | .link = btrfs_link, |
| 9020 | .mkdir = btrfs_mkdir, | 9030 | .mkdir = btrfs_mkdir, |
| 9021 | .rmdir = btrfs_rmdir, | 9031 | .rmdir = btrfs_rmdir, |
| 9022 | .rename = btrfs_rename, | 9032 | .rename2 = btrfs_rename2, |
| 9023 | .symlink = btrfs_symlink, | 9033 | .symlink = btrfs_symlink, |
| 9024 | .setattr = btrfs_setattr, | 9034 | .setattr = btrfs_setattr, |
| 9025 | .mknod = btrfs_mknod, | 9035 | .mknod = btrfs_mknod, |
