diff options
author | Jeff Liu <jeff.liu@oracle.com> | 2012-02-09 01:25:50 -0500 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2012-02-15 10:40:23 -0500 |
commit | 6af021d8fc3bcce790e7fbb391e39c5920fa3f71 (patch) | |
tree | 9b3e3f49627aed11fa3105c469b1719c71a39636 /fs | |
parent | 8f24b49688281a77e8331894ed407f0cfe732303 (diff) |
Btrfs: return the internal error unchanged if btrfs_get_extent_fiemap() call failed for SEEK_DATA/SEEK_HOLE inquiry
Given that ENXIO only means "offset beyond EOF" for either SEEK_DATA or SEEK_HOLE inquiry
in a desired file range, so we should return the internal error unchanged if btrfs_get_extent_fiemap()
call failed, rather than ENXIO.
Cc: Dave Chinner <david@fromorbit.com>
Signed-off-by: Jie Liu <jeff.liu@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/file.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 0621a3a7d5d1..3a520899b024 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -1755,7 +1755,7 @@ static int find_desired_extent(struct inode *inode, loff_t *offset, int origin) | |||
1755 | start - root->sectorsize, | 1755 | start - root->sectorsize, |
1756 | root->sectorsize, 0); | 1756 | root->sectorsize, 0); |
1757 | if (IS_ERR(em)) { | 1757 | if (IS_ERR(em)) { |
1758 | ret = -ENXIO; | 1758 | ret = PTR_ERR(em); |
1759 | goto out; | 1759 | goto out; |
1760 | } | 1760 | } |
1761 | last_end = em->start + em->len; | 1761 | last_end = em->start + em->len; |
@@ -1767,7 +1767,7 @@ static int find_desired_extent(struct inode *inode, loff_t *offset, int origin) | |||
1767 | while (1) { | 1767 | while (1) { |
1768 | em = btrfs_get_extent_fiemap(inode, NULL, 0, start, len, 0); | 1768 | em = btrfs_get_extent_fiemap(inode, NULL, 0, start, len, 0); |
1769 | if (IS_ERR(em)) { | 1769 | if (IS_ERR(em)) { |
1770 | ret = -ENXIO; | 1770 | ret = PTR_ERR(em); |
1771 | break; | 1771 | break; |
1772 | } | 1772 | } |
1773 | 1773 | ||