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/xfs | |
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/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_iops.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index 94d5fd6a2973..da54403633b6 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c | |||
@@ -516,6 +516,7 @@ xfs_vn_fallocate( | |||
516 | loff_t new_size = 0; | 516 | loff_t new_size = 0; |
517 | xfs_flock64_t bf; | 517 | xfs_flock64_t bf; |
518 | xfs_inode_t *ip = XFS_I(inode); | 518 | xfs_inode_t *ip = XFS_I(inode); |
519 | int cmd = XFS_IOC_RESVSP; | ||
519 | 520 | ||
520 | /* preallocation on directories not yet supported */ | 521 | /* preallocation on directories not yet supported */ |
521 | error = -ENODEV; | 522 | error = -ENODEV; |
@@ -528,6 +529,9 @@ xfs_vn_fallocate( | |||
528 | 529 | ||
529 | xfs_ilock(ip, XFS_IOLOCK_EXCL); | 530 | xfs_ilock(ip, XFS_IOLOCK_EXCL); |
530 | 531 | ||
532 | if (mode & FALLOC_FL_PUNCH_HOLE) | ||
533 | cmd = XFS_IOC_UNRESVSP; | ||
534 | |||
531 | /* check the new inode size is valid before allocating */ | 535 | /* check the new inode size is valid before allocating */ |
532 | if (!(mode & FALLOC_FL_KEEP_SIZE) && | 536 | if (!(mode & FALLOC_FL_KEEP_SIZE) && |
533 | offset + len > i_size_read(inode)) { | 537 | offset + len > i_size_read(inode)) { |
@@ -537,8 +541,7 @@ xfs_vn_fallocate( | |||
537 | goto out_unlock; | 541 | goto out_unlock; |
538 | } | 542 | } |
539 | 543 | ||
540 | error = -xfs_change_file_space(ip, XFS_IOC_RESVSP, &bf, | 544 | error = -xfs_change_file_space(ip, cmd, &bf, 0, XFS_ATTR_NOLOCK); |
541 | 0, XFS_ATTR_NOLOCK); | ||
542 | if (error) | 545 | if (error) |
543 | goto out_unlock; | 546 | goto out_unlock; |
544 | 547 | ||