diff options
author | Rui Xiang <rui.xiang@huawei.com> | 2013-11-12 18:06:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-12 22:09:00 -0500 |
commit | 7391a294b861bf2c3b762dfdcf61b9c5f1bffa1f (patch) | |
tree | 4c34e441b90db49696fe8dffb9599753c2e26db3 /fs/ocfs2/aops.c | |
parent | f0cb0f0bca233935ac70707d47f5885419a7fd31 (diff) |
ocfs2: return ENOMEM when sb_getblk() fails
The only reason for sb_getblk() failing is if it can't allocate the
buffer_head. So return ENOMEM instead when it fails.
[joseph.qi@huawei.com: ocfs2_symlink_get_block() and ocfs2_read_blocks_sync() and ocfs2_read_blocks() need the same change]
Signed-off-by: Rui Xiang <rui.xiang@huawei.com>
Reviewed-by: Jie Liu <jeff.liu@oracle.com>
Reviewed-by: Mark Fasheh <mfasheh@suse.de>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Joseph Qi <joseph.qi@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ocfs2/aops.c')
-rw-r--r-- | fs/ocfs2/aops.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index c0d4797618ef..c20360002f29 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c | |||
@@ -80,6 +80,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, | |||
80 | 80 | ||
81 | if ((u64)iblock >= ocfs2_clusters_to_blocks(inode->i_sb, | 81 | if ((u64)iblock >= ocfs2_clusters_to_blocks(inode->i_sb, |
82 | le32_to_cpu(fe->i_clusters))) { | 82 | le32_to_cpu(fe->i_clusters))) { |
83 | err = -ENOMEM; | ||
83 | mlog(ML_ERROR, "block offset is outside the allocated size: " | 84 | mlog(ML_ERROR, "block offset is outside the allocated size: " |
84 | "%llu\n", (unsigned long long)iblock); | 85 | "%llu\n", (unsigned long long)iblock); |
85 | goto bail; | 86 | goto bail; |
@@ -92,6 +93,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, | |||
92 | iblock; | 93 | iblock; |
93 | buffer_cache_bh = sb_getblk(osb->sb, blkno); | 94 | buffer_cache_bh = sb_getblk(osb->sb, blkno); |
94 | if (!buffer_cache_bh) { | 95 | if (!buffer_cache_bh) { |
96 | err = -ENOMEM; | ||
95 | mlog(ML_ERROR, "couldn't getblock for symlink!\n"); | 97 | mlog(ML_ERROR, "couldn't getblock for symlink!\n"); |
96 | goto bail; | 98 | goto bail; |
97 | } | 99 | } |