diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 13:27:28 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 13:27:28 -0500 |
commit | b2034d474b7e1e8578bd5c2977024b51693269d9 (patch) | |
tree | e43969bf7c2ba89884c2580f56978826f1014520 /fs/namei.c | |
parent | 27d189c02ba25851973c8582e419c0bded9f7e5b (diff) | |
parent | 924241575a85249b9d410e38f5b2fcad9035e45c (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (41 commits)
fs: add documentation on fallocate hole punching
Gfs2: fail if we try to use hole punch
Btrfs: fail if we try to use hole punch
Ext4: fail if we try to use hole punch
Ocfs2: handle hole punching via fallocate properly
XFS: handle hole punching via fallocate properly
fs: add hole punching to fallocate
vfs: pass struct file to do_truncate on O_TRUNC opens (try #2)
fix signedness mess in rw_verify_area() on 64bit architectures
fs: fix kernel-doc for dcache::prepend_path
fs: fix kernel-doc for dcache::d_validate
sanitize ecryptfs ->mount()
switch afs
move internal-only parts of ncpfs headers to fs/ncpfs
switch ncpfs
switch 9p
pass default dentry_operations to mount_pseudo()
switch hostfs
switch affs
switch configfs
...
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/namei.c b/fs/namei.c index 24ece10470b6..0b14f6910fc6 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -1950,8 +1950,9 @@ int may_open(struct path *path, int acc_mode, int flag) | |||
1950 | return break_lease(inode, flag); | 1950 | return break_lease(inode, flag); |
1951 | } | 1951 | } |
1952 | 1952 | ||
1953 | static int handle_truncate(struct path *path) | 1953 | static int handle_truncate(struct file *filp) |
1954 | { | 1954 | { |
1955 | struct path *path = &filp->f_path; | ||
1955 | struct inode *inode = path->dentry->d_inode; | 1956 | struct inode *inode = path->dentry->d_inode; |
1956 | int error = get_write_access(inode); | 1957 | int error = get_write_access(inode); |
1957 | if (error) | 1958 | if (error) |
@@ -1965,7 +1966,7 @@ static int handle_truncate(struct path *path) | |||
1965 | if (!error) { | 1966 | if (!error) { |
1966 | error = do_truncate(path->dentry, 0, | 1967 | error = do_truncate(path->dentry, 0, |
1967 | ATTR_MTIME|ATTR_CTIME|ATTR_OPEN, | 1968 | ATTR_MTIME|ATTR_CTIME|ATTR_OPEN, |
1968 | NULL); | 1969 | filp); |
1969 | } | 1970 | } |
1970 | put_write_access(inode); | 1971 | put_write_access(inode); |
1971 | return error; | 1972 | return error; |
@@ -2063,7 +2064,7 @@ static struct file *finish_open(struct nameidata *nd, | |||
2063 | } | 2064 | } |
2064 | if (!IS_ERR(filp)) { | 2065 | if (!IS_ERR(filp)) { |
2065 | if (will_truncate) { | 2066 | if (will_truncate) { |
2066 | error = handle_truncate(&nd->path); | 2067 | error = handle_truncate(filp); |
2067 | if (error) { | 2068 | if (error) { |
2068 | fput(filp); | 2069 | fput(filp); |
2069 | filp = ERR_PTR(error); | 2070 | filp = ERR_PTR(error); |