Linux 3.15: vfs_rename() added a flags argument

Detect the updated vfs_rename() interface and call it with an
extra flags argument.

References:
  torvalds/linux@520c8b1

Signed-off-by: Chunwei Chen <tuxoko@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #355
This commit is contained in:
Chunwei Chen
2014-05-07 10:54:37 -07:00
committed by Brian Behlendorf
parent 1538f4b6e3
commit ad3412efd7
2 changed files with 34 additions and 7 deletions
+12 -6
View File
@@ -414,13 +414,16 @@ vn_rename(const char *oldname, const char *newname, int x1)
SGOTO(exit4, rc);
}
#ifdef HAVE_4ARGS_VFS_RENAME
#if defined(HAVE_4ARGS_VFS_RENAME)
rc = vfs_rename(old_dir->d_inode, old_dentry,
new_dir->d_inode, new_dentry);
#else
#elif defined(HAVE_5ARGS_VFS_RENAME)
rc = vfs_rename(old_dir->d_inode, old_dentry,
new_dir->d_inode, new_dentry, NULL);
#endif /* HAVE_4ARGS_VFS_RENAME */
#else
rc = vfs_rename(old_dir->d_inode, old_dentry,
new_dir->d_inode, new_dentry, NULL, 0);
#endif
exit4:
unlock_rename(new_dir, old_dir);
exit3:
@@ -574,13 +577,16 @@ vn_rename(const char *oldname, const char *newname, int x1)
if (new_dentry == trap)
SGOTO(exit5, rc);
#ifdef HAVE_4ARGS_VFS_RENAME
#if defined(HAVE_4ARGS_VFS_RENAME)
rc = vfs_rename(old_dir->d_inode, old_dentry,
new_dir->d_inode, new_dentry);
#else
#elif defined(HAVE_5ARGS_VFS_RENAME)
rc = vfs_rename(old_dir->d_inode, old_dentry,
new_dir->d_inode, new_dentry, NULL);
#endif /* HAVE_4ARGS_VFS_RENAME */
#else
rc = vfs_rename(old_dir->d_inode, old_dentry,
new_dir->d_inode, new_dentry, NULL, 0);
#endif
exit5:
dput(new_dentry);
exit4: