From: Jeff Liu Date: Thu, 9 Feb 2012 06:25:50 +0000 (+0800) Subject: Btrfs: return the internal error unchanged if btrfs_get_extent_fiemap() call failed... X-Git-Tag: v3.3-rc5~9^2~20 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=6af021d8fc3bcce790e7fbb391e39c5920fa3f71;p=~emulex%2Finfiniband.git 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 Signed-off-by: Jie Liu --- diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 0621a3a7d5d..3a520899b02 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) start - root->sectorsize, root->sectorsize, 0); if (IS_ERR(em)) { - ret = -ENXIO; + ret = PTR_ERR(em); goto out; } last_end = em->start + em->len; @@ -1767,7 +1767,7 @@ static int find_desired_extent(struct inode *inode, loff_t *offset, int origin) while (1) { em = btrfs_get_extent_fiemap(inode, NULL, 0, start, len, 0); if (IS_ERR(em)) { - ret = -ENXIO; + ret = PTR_ERR(em); break; }