|
@@ -50,7 +50,7 @@ prototypes:
|
|
int (*mkdir) (struct inode *,struct dentry *,umode_t);
|
|
int (*mkdir) (struct inode *,struct dentry *,umode_t);
|
|
int (*rmdir) (struct inode *,struct dentry *);
|
|
int (*rmdir) (struct inode *,struct dentry *);
|
|
int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
|
|
int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
|
|
- int (*rename2) (struct inode *, struct dentry *,
|
|
|
|
|
|
+ int (*rename) (struct inode *, struct dentry *,
|
|
struct inode *, struct dentry *, unsigned int);
|
|
struct inode *, struct dentry *, unsigned int);
|
|
int (*readlink) (struct dentry *, char __user *,int);
|
|
int (*readlink) (struct dentry *, char __user *,int);
|
|
const char *(*get_link) (struct dentry *, struct inode *, void **);
|
|
const char *(*get_link) (struct dentry *, struct inode *, void **);
|
|
@@ -81,7 +81,7 @@ symlink: yes
|
|
mkdir: yes
|
|
mkdir: yes
|
|
unlink: yes (both)
|
|
unlink: yes (both)
|
|
rmdir: yes (both) (see below)
|
|
rmdir: yes (both) (see below)
|
|
-rename2: yes (all) (see below)
|
|
|
|
|
|
+rename: yes (all) (see below)
|
|
readlink: no
|
|
readlink: no
|
|
get_link: no
|
|
get_link: no
|
|
setattr: yes
|
|
setattr: yes
|
|
@@ -99,7 +99,7 @@ tmpfile: no
|
|
|
|
|
|
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
|
|
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
|
|
victim.
|
|
victim.
|
|
- cross-directory ->rename2() has (per-superblock) ->s_vfs_rename_sem.
|
|
|
|
|
|
+ cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
|
|
|
|
|
|
See Documentation/filesystems/directory-locking for more detailed discussion
|
|
See Documentation/filesystems/directory-locking for more detailed discussion
|
|
of the locking scheme for directory operations.
|
|
of the locking scheme for directory operations.
|