diff options
-rw-r--r-- | fs/ext4/inode.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index d4b634ae06bd..0ac31a06422b 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -2297,6 +2297,10 @@ static int ext4_da_get_block_prep(struct inode *inode, sector_t iblock, | |||
2297 | struct buffer_head *bh_result, int create) | 2297 | struct buffer_head *bh_result, int create) |
2298 | { | 2298 | { |
2299 | int ret = 0; | 2299 | int ret = 0; |
2300 | sector_t invalid_block = ~((sector_t) 0xffff); | ||
2301 | |||
2302 | if (invalid_block < ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es)) | ||
2303 | invalid_block = ~0; | ||
2300 | 2304 | ||
2301 | BUG_ON(create == 0); | 2305 | BUG_ON(create == 0); |
2302 | BUG_ON(bh_result->b_size != inode->i_sb->s_blocksize); | 2306 | BUG_ON(bh_result->b_size != inode->i_sb->s_blocksize); |
@@ -2318,7 +2322,7 @@ static int ext4_da_get_block_prep(struct inode *inode, sector_t iblock, | |||
2318 | /* not enough space to reserve */ | 2322 | /* not enough space to reserve */ |
2319 | return ret; | 2323 | return ret; |
2320 | 2324 | ||
2321 | map_bh(bh_result, inode->i_sb, 0); | 2325 | map_bh(bh_result, inode->i_sb, invalid_block); |
2322 | set_buffer_new(bh_result); | 2326 | set_buffer_new(bh_result); |
2323 | set_buffer_delay(bh_result); | 2327 | set_buffer_delay(bh_result); |
2324 | } else if (ret > 0) { | 2328 | } else if (ret > 0) { |