diff options
51 files changed, 62 insertions, 64 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 33f2c8f1db81..e0cce2a5f820 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
| @@ -37,7 +37,7 @@ d_manage: no no yes (ref-walk) maybe | |||
| 37 | 37 | ||
| 38 | --------------------------- inode_operations --------------------------- | 38 | --------------------------- inode_operations --------------------------- |
| 39 | prototypes: | 39 | prototypes: |
| 40 | int (*create) (struct inode *,struct dentry *,umode_t, struct nameidata *); | 40 | int (*create) (struct inode *,struct dentry *,umode_t, bool); |
| 41 | struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); | 41 | struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); |
| 42 | int (*link) (struct dentry *,struct inode *,struct dentry *); | 42 | int (*link) (struct dentry *,struct inode *,struct dentry *); |
| 43 | int (*unlink) (struct inode *,struct dentry *); | 43 | int (*unlink) (struct inode *,struct dentry *); |
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 690f573928b9..2bef2b3843d1 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
| @@ -436,3 +436,9 @@ d_make_root() drops the reference to inode if dentry allocation fails. | |||
| 436 | [mandatory] | 436 | [mandatory] |
| 437 | The witch is dead! Well, 2/3 of it, anyway. ->d_revalidate() and | 437 | The witch is dead! Well, 2/3 of it, anyway. ->d_revalidate() and |
| 438 | ->lookup() do *not* take struct nameidata anymore; just the flags. | 438 | ->lookup() do *not* take struct nameidata anymore; just the flags. |
| 439 | -- | ||
| 440 | [mandatory] | ||
| 441 | ->create() doesn't take struct nameidata *; unlike the previous | ||
| 442 | two, it gets "is it an O_EXCL or equivalent?" boolean argument. Note that | ||
| 443 | local filesystems can ignore tha argument - they are guaranteed that the | ||
| 444 | object doesn't exist. It's remote/distributed ones that might care... | ||
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index ee786354946c..aa754e01464e 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
| @@ -341,7 +341,7 @@ This describes how the VFS can manipulate an inode in your | |||
| 341 | filesystem. As of kernel 2.6.22, the following members are defined: | 341 | filesystem. As of kernel 2.6.22, the following members are defined: |
| 342 | 342 | ||
| 343 | struct inode_operations { | 343 | struct inode_operations { |
| 344 | int (*create) (struct inode *,struct dentry *, umode_t, struct nameidata *); | 344 | int (*create) (struct inode *,struct dentry *, umode_t, bool); |
| 345 | struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); | 345 | struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); |
| 346 | int (*link) (struct dentry *,struct inode *,struct dentry *); | 346 | int (*link) (struct dentry *,struct inode *,struct dentry *); |
| 347 | int (*unlink) (struct inode *,struct dentry *); | 347 | int (*unlink) (struct inode *,struct dentry *); |
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index bb0d7627f95b..cbf9dbb1b2a2 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c | |||
| @@ -725,7 +725,7 @@ error: | |||
| 725 | 725 | ||
| 726 | static int | 726 | static int |
| 727 | v9fs_vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, | 727 | v9fs_vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, |
| 728 | struct nameidata *nd) | 728 | bool excl) |
| 729 | { | 729 | { |
| 730 | struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dir); | 730 | struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dir); |
| 731 | u32 perm = unixmode2p9mode(v9ses, mode); | 731 | u32 perm = unixmode2p9mode(v9ses, mode); |
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index b97619fed196..40895546e103 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c | |||
| @@ -235,7 +235,7 @@ int v9fs_open_to_dotl_flags(int flags) | |||
| 235 | 235 | ||
| 236 | static int | 236 | static int |
| 237 | v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, umode_t omode, | 237 | v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, umode_t omode, |
| 238 | struct nameidata *nd) | 238 | bool excl) |
| 239 | { | 239 | { |
| 240 | return v9fs_vfs_mknod_dotl(dir, dentry, omode, 0); | 240 | return v9fs_vfs_mknod_dotl(dir, dentry, omode, 0); |
| 241 | } | 241 | } |
diff --git a/fs/affs/affs.h b/fs/affs/affs.h index 49e4e3457bfd..6e216419f340 100644 --- a/fs/affs/affs.h +++ b/fs/affs/affs.h | |||
| @@ -155,7 +155,7 @@ extern void affs_free_bitmap(struct super_block *sb); | |||
| 155 | extern int affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len); | 155 | extern int affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len); |
| 156 | extern struct dentry *affs_lookup(struct inode *dir, struct dentry *dentry, unsigned int); | 156 | extern struct dentry *affs_lookup(struct inode *dir, struct dentry *dentry, unsigned int); |
| 157 | extern int affs_unlink(struct inode *dir, struct dentry *dentry); | 157 | extern int affs_unlink(struct inode *dir, struct dentry *dentry); |
| 158 | extern int affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, struct nameidata *); | 158 | extern int affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool); |
| 159 | extern int affs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); | 159 | extern int affs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); |
| 160 | extern int affs_rmdir(struct inode *dir, struct dentry *dentry); | 160 | extern int affs_rmdir(struct inode *dir, struct dentry *dentry); |
| 161 | extern int affs_link(struct dentry *olddentry, struct inode *dir, | 161 | extern int affs_link(struct dentry *olddentry, struct inode *dir, |
diff --git a/fs/affs/namei.c b/fs/affs/namei.c index 7f9721be709f..ff65884a7839 100644 --- a/fs/affs/namei.c +++ b/fs/affs/namei.c | |||
| @@ -255,7 +255,7 @@ affs_unlink(struct inode *dir, struct dentry *dentry) | |||
| 255 | } | 255 | } |
| 256 | 256 | ||
| 257 | int | 257 | int |
| 258 | affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, struct nameidata *nd) | 258 | affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) |
| 259 | { | 259 | { |
| 260 | struct super_block *sb = dir->i_sb; | 260 | struct super_block *sb = dir->i_sb; |
| 261 | struct inode *inode; | 261 | struct inode *inode; |
diff --git a/fs/afs/dir.c b/fs/afs/dir.c index ffb33e36ea72..db477906ba4f 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c | |||
| @@ -29,7 +29,7 @@ static void afs_d_release(struct dentry *dentry); | |||
| 29 | static int afs_lookup_filldir(void *_cookie, const char *name, int nlen, | 29 | static int afs_lookup_filldir(void *_cookie, const char *name, int nlen, |
| 30 | loff_t fpos, u64 ino, unsigned dtype); | 30 | loff_t fpos, u64 ino, unsigned dtype); |
| 31 | static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, | 31 | static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, |
| 32 | struct nameidata *nd); | 32 | bool excl); |
| 33 | static int afs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); | 33 | static int afs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); |
| 34 | static int afs_rmdir(struct inode *dir, struct dentry *dentry); | 34 | static int afs_rmdir(struct inode *dir, struct dentry *dentry); |
| 35 | static int afs_unlink(struct inode *dir, struct dentry *dentry); | 35 | static int afs_unlink(struct inode *dir, struct dentry *dentry); |
| @@ -949,7 +949,7 @@ error: | |||
| 949 | * create a regular file on an AFS filesystem | 949 | * create a regular file on an AFS filesystem |
| 950 | */ | 950 | */ |
| 951 | static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, | 951 | static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, |
| 952 | struct nameidata *nd) | 952 | bool excl) |
| 953 | { | 953 | { |
| 954 | struct afs_file_status status; | 954 | struct afs_file_status status; |
| 955 | struct afs_callback cb; | 955 | struct afs_callback cb; |
