浏览代码

[PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent

This adds LOOKUP_RENAME_TARGET intent for lookup of rename destination.

LOOKUP_RENAME_TARGET is going to be used like LOOKUP_CREATE. But since
the destination of rename() can be existing directory entry, so it has a
difference. Although that difference doesn't matter in my usage, this
tells it to user of this intent.

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
OGAWA Hirofumi 16 年之前
父节点
当前提交
4e9ed2f85a
共有 2 个文件被更改,包括 2 次插入0 次删除
  1. 1 0
      fs/namei.c
  2. 1 0
      include/linux/namei.h

+ 1 - 0
fs/namei.c

@@ -2654,6 +2654,7 @@ asmlinkage long sys_renameat(int olddfd, const char __user *oldname,
 
 
 	oldnd.flags &= ~LOOKUP_PARENT;
 	oldnd.flags &= ~LOOKUP_PARENT;
 	newnd.flags &= ~LOOKUP_PARENT;
 	newnd.flags &= ~LOOKUP_PARENT;
+	newnd.flags |= LOOKUP_RENAME_TARGET;
 
 
 	trap = lock_rename(new_dir, old_dir);
 	trap = lock_rename(new_dir, old_dir);
 
 

+ 1 - 0
include/linux/namei.h

@@ -54,6 +54,7 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
 #define LOOKUP_OPEN		0x0100
 #define LOOKUP_OPEN		0x0100
 #define LOOKUP_CREATE		0x0200
 #define LOOKUP_CREATE		0x0200
 #define LOOKUP_EXCL		0x0400
 #define LOOKUP_EXCL		0x0400
+#define LOOKUP_RENAME_TARGET	0x0800
 
 
 extern int user_path_at(int, const char __user *, unsigned, struct path *);
 extern int user_path_at(int, const char __user *, unsigned, struct path *);