diff options
author | Younger Liu <younger.liucn@gmail.com> | 2014-04-10 23:03:43 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2014-04-10 23:03:43 -0400 |
commit | c57ab39b9658315a742b6e61fdc86bb4d20cf566 (patch) | |
tree | b59bef7025119de7c66a36cf9de27de503eaa8a4 /fs | |
parent | 1ce01c4a199c50b023802be25261c0c02b2f0214 (diff) |
ext4: return ENOMEM rather than EIO when find_###_page() fails
Return ENOMEM rather than EIO when find_get_page() fails in
ext4_mb_get_buddy_page_lock() and find_or_create_page() fails in
ext4_mb_load_buddy().
Signed-off-by: Younger Liu <younger.liucn@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ext4/mballoc.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index a888cac76e9c..73ccbb3b973b 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c | |||
@@ -989,7 +989,7 @@ static int ext4_mb_get_buddy_page_lock(struct super_block *sb, | |||
989 | poff = block % blocks_per_page; | 989 | poff = block % blocks_per_page; |
990 | page = find_or_create_page(inode->i_mapping, pnum, GFP_NOFS); | 990 | page = find_or_create_page(inode->i_mapping, pnum, GFP_NOFS); |
991 | if (!page) | 991 | if (!page) |
992 | return -EIO; | 992 | return -ENOMEM; |
993 | BUG_ON(page->mapping != inode->i_mapping); | 993 | BUG_ON(page->mapping != inode->i_mapping); |
994 | e4b->bd_bitmap_page = page; | 994 | e4b->bd_bitmap_page = page; |
995 | e4b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize); | 995 | e4b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize); |
@@ -1003,7 +1003,7 @@ static int ext4_mb_get_buddy_page_lock(struct super_block *sb, | |||
1003 | pnum = block / blocks_per_page; | 1003 | pnum = block / blocks_per_page; |
1004 | page = find_or_create_page(inode->i_mapping, pnum, GFP_NOFS); | 1004 | page = find_or_create_page(inode->i_mapping, pnum, GFP_NOFS); |
1005 | if (!page) | 1005 | if (!page) |
1006 | return -EIO; | 1006 | return -ENOMEM; |
1007 | BUG_ON(page->mapping != inode->i_mapping); | 1007 | BUG_ON(page->mapping != inode->i_mapping); |
1008 | e4b->bd_buddy_page = page; | 1008 | e4b->bd_buddy_page = page; |
1009 | return 0; | 1009 | return 0; |
@@ -1168,7 +1168,11 @@ ext4_mb_load_buddy(struct super_block *sb, ext4_group_t group, | |||
1168 | unlock_page(page); | 1168 | unlock_page(page); |
1169 | } | 1169 | } |
1170 | } | 1170 | } |
1171 | if (page == NULL || !PageUptodate(page)) { | 1171 | if (page == NULL) { |
1172 | ret = -ENOMEM; | ||
1173 | goto err; | ||
1174 | } | ||
1175 | if (!PageUptodate(page)) { | ||
1172 | ret = -EIO; | 1176 | ret = -EIO; |
1173 | goto err; | 1177 | goto err; |
1174 | } | 1178 | } |
@@ -1197,7 +1201,11 @@ ext4_mb_load_buddy(struct super_block *sb, ext4_group_t group, | |||
1197 | unlock_page(page); | 1201 | unlock_page(page); |
1198 | } | 1202 | } |
1199 | } | 1203 | } |
1200 | if (page == NULL || !PageUptodate(page)) { | 1204 | if (page == NULL) { |
1205 | ret = -ENOMEM; | ||
1206 | goto err; | ||
1207 | } | ||
1208 | if (!PageUptodate(page)) { | ||
1201 | ret = -EIO; | 1209 | ret = -EIO; |
1202 | goto err; | 1210 | goto err; |
1203 | } | 1211 | } |