diff options
Diffstat (limited to 'drivers/md/persistent-data/dm-space-map-common.c')
| -rw-r--r-- | drivers/md/persistent-data/dm-space-map-common.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/md/persistent-data/dm-space-map-common.c b/drivers/md/persistent-data/dm-space-map-common.c index 466a60bbd716..aacbe70c2c2e 100644 --- a/drivers/md/persistent-data/dm-space-map-common.c +++ b/drivers/md/persistent-data/dm-space-map-common.c @@ -245,6 +245,10 @@ int sm_ll_extend(struct ll_disk *ll, dm_block_t extra_blocks)  		return -EINVAL;  	} +	/* +	 * We need to set this before the dm_tm_new_block() call below. +	 */ +	ll->nr_blocks = nr_blocks;  	for (i = old_blocks; i < blocks; i++) {  		struct dm_block *b;  		struct disk_index_entry idx; @@ -252,6 +256,7 @@ int sm_ll_extend(struct ll_disk *ll, dm_block_t extra_blocks)  		r = dm_tm_new_block(ll->tm, &dm_sm_bitmap_validator, &b);  		if (r < 0)  			return r; +  		idx.blocknr = cpu_to_le64(dm_block_location(b));  		r = dm_tm_unlock(ll->tm, b); @@ -266,7 +271,6 @@ int sm_ll_extend(struct ll_disk *ll, dm_block_t extra_blocks)  			return r;  	} -	ll->nr_blocks = nr_blocks;  	return 0;  }  |