ext4: return ENOMEM rather than EIO when find_###_page() fails
PATCH 1/1 ext4: return ENOMEM rather than EIO when find_###_page() fails
Return ENOMEM rather than EIO when find_get_page() fails inext4_mb_get_buddy_page_lock() and find_or_create_page() fails in ext4_mb_load_buddy().
Signed-off-by Younger Liu <[email protected]>
--- fs/ext4/mballoc.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
fs/ext4/mballoc.c +12 -4
@@ -989,7 +989,7 @@ static int ext4_mb_get_buddy_page_lock(struct super_block *sb, poff = block % blocks_per_page; page =find_or_create_page (inode->i_mapping, pnum,GFP_NOFS );if (!page) -return -EIO ; +return -ENOMEM ;BUG_ON (page->mapping != inode->i_mapping); e4b->bd_bitmap_page = page; 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, pnum = block / blocks_per_page; page =find_or_create_page (inode->i_mapping, pnum,GFP_NOFS );if (!page) -return -EIO ; +return -ENOMEM ;BUG_ON (page->mapping != inode->i_mapping); e4b->bd_buddy_page = page;return 0 ;
@@ -1168,7 +1168,11 @@ ext4_mb_load_buddy(struct super_block *sb, ext4_group_t group,unlock_page (page); } } -if (page ==NULL || !PageUptodate (page)) { +if (page ==NULL ) { + ret = -ENOMEM ; + goto err; + } +if (!PageUptodate (page)) { ret = -EIO ; goto err; }
@@ -1197,7 +1201,11 @@ ext4_mb_load_buddy(struct super_block *sb, ext4_group_t group,unlock_page (page); } } -if (page ==NULL || !PageUptodate (page)) { +if (page ==NULL ) { + ret = -ENOMEM ; + goto err; + } +if (!PageUptodate (page)) { ret = -EIO ; goto err; }
Signature · 1 line
1.7.9.5
Quoted 6 lines · Younger Liu
Return ENOMEM rather than EIO when
find_get_page()fails inext4_mb_get_buddy_page_lock()andfind_or_create_page()fails inext4_mb_load_buddy().Signed-off-by Younger Liu <[email protected]>
Thanks, applied.
- Ted