diff options
author | Jason Gunthorpe <jgunthorpe@obsidianresearch.com> | 2009-11-24 16:52:53 -0500 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2009-12-11 16:11:23 -0500 |
commit | 44a743f68705c681439f264deb05f8f38e9048d3 (patch) | |
tree | 3634e5e6599143f44e37e0964f61688ecf7af4a4 /fs/xfs | |
parent | 30ac0683dd452ba273c8db92a74d8cf7aef981d8 (diff) |
xfs: Fix error return for fallocate() on XFS
Noticed that through glibc fallocate would return 28 rather than -1
and errno = 28 for ENOSPC. The xfs routines uses XFS_ERROR format
positive return error codes while the syscalls use negative return
codes. Fixup the two cases in xfs_vn_fallocate syscall to convert to
negative.
Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_iops.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index cd42ef78f6b5..1f3b4b8f7dd4 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c | |||
@@ -573,8 +573,8 @@ xfs_vn_fallocate( | |||
573 | bf.l_len = len; | 573 | bf.l_len = len; |
574 | 574 | ||
575 | xfs_ilock(ip, XFS_IOLOCK_EXCL); | 575 | xfs_ilock(ip, XFS_IOLOCK_EXCL); |
576 | error = xfs_change_file_space(ip, XFS_IOC_RESVSP, &bf, | 576 | error = -xfs_change_file_space(ip, XFS_IOC_RESVSP, &bf, |
577 | 0, XFS_ATTR_NOLOCK); | 577 | 0, XFS_ATTR_NOLOCK); |
578 | if (!error && !(mode & FALLOC_FL_KEEP_SIZE) && | 578 | if (!error && !(mode & FALLOC_FL_KEEP_SIZE) && |
579 | offset + len > i_size_read(inode)) | 579 | offset + len > i_size_read(inode)) |
580 | new_size = offset + len; | 580 | new_size = offset + len; |
@@ -585,7 +585,7 @@ xfs_vn_fallocate( | |||
585 | 585 | ||
586 | iattr.ia_valid = ATTR_SIZE; | 586 | iattr.ia_valid = ATTR_SIZE; |
587 | iattr.ia_size = new_size; | 587 | iattr.ia_size = new_size; |
588 | error = xfs_setattr(ip, &iattr, XFS_ATTR_NOLOCK); | 588 | error = -xfs_setattr(ip, &iattr, XFS_ATTR_NOLOCK); |
589 | } | 589 | } |
590 | 590 | ||
591 | xfs_iunlock(ip, XFS_IOLOCK_EXCL); | 591 | xfs_iunlock(ip, XFS_IOLOCK_EXCL); |