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) { |
