diff options
Diffstat (limited to 'fs/hpfs/file.c')
| -rw-r--r-- | fs/hpfs/file.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/hpfs/file.c b/fs/hpfs/file.c index 7ca28d604bf7..d3bcdd975700 100644 --- a/fs/hpfs/file.c +++ b/fs/hpfs/file.c @@ -83,6 +83,11 @@ static int hpfs_get_block(struct inode *inode, sector_t iblock, struct buffer_he  	if (s) {  		if (bh_result->b_size >> 9 < n_secs)  			n_secs = bh_result->b_size >> 9; +		n_secs = hpfs_search_hotfix_map_for_range(inode->i_sb, s, n_secs); +		if (unlikely(!n_secs)) { +			s = hpfs_search_hotfix_map(inode->i_sb, s); +			n_secs = 1; +		}  		map_bh(bh_result, inode->i_sb, s);  		bh_result->b_size = n_secs << 9;  		goto ret_0; @@ -101,7 +106,7 @@ static int hpfs_get_block(struct inode *inode, sector_t iblock, struct buffer_he  	inode->i_blocks++;  	hpfs_i(inode)->mmu_private += 512;  	set_buffer_new(bh_result); -	map_bh(bh_result, inode->i_sb, s); +	map_bh(bh_result, inode->i_sb, hpfs_search_hotfix_map(inode->i_sb, s));  	ret_0:  	r = 0;  	ret_r: @@ -181,7 +186,7 @@ static int hpfs_write_end(struct file *file, struct address_space *mapping,  static sector_t _hpfs_bmap(struct address_space *mapping, sector_t block)  { -	return generic_block_bmap(mapping,block,hpfs_get_block); +	return generic_block_bmap(mapping, block, hpfs_get_block);  }  const struct address_space_operations hpfs_aops = {  |