diff options
Diffstat (limited to 'drivers/md/raid10.c')
| -rw-r--r-- | drivers/md/raid10.c | 20 | 
1 files changed, 13 insertions, 7 deletions
| diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index d047e9dfdb85..2411399a7352 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -3247,7 +3247,8 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,  			}  			conf->fullsync = 0;  		} -		mddev->bitmap_ops->close_sync(mddev); +		if (md_bitmap_enabled(mddev, false)) +			mddev->bitmap_ops->close_sync(mddev);  		close_sync(conf);  		*skipped = 1;  		return sectors_skipped; @@ -3566,7 +3567,8 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,  		 * safety reason, which ensures curr_resync_completed is  		 * updated in bitmap_cond_end_sync.  		 */ -		mddev->bitmap_ops->cond_end_sync(mddev, sector_nr, +		if (md_bitmap_enabled(mddev, false)) +			mddev->bitmap_ops->cond_end_sync(mddev, sector_nr,  					mddev_is_clustered(mddev) &&  					(sector_nr + 2 * RESYNC_SECTORS > conf->cluster_sync_high)); @@ -4220,7 +4222,6 @@ static int raid10_resize(struct mddev *mddev, sector_t sectors)  	 */  	struct r10conf *conf = mddev->private;  	sector_t oldsize, size; -	int ret;  	if (mddev->reshape_position != MaxSector)  		return -EBUSY; @@ -4234,9 +4235,12 @@ static int raid10_resize(struct mddev *mddev, sector_t sectors)  	    mddev->array_sectors > size)  		return -EINVAL; -	ret = mddev->bitmap_ops->resize(mddev, size, 0); -	if (ret) -		return ret; +	if (md_bitmap_enabled(mddev, false)) { +		int ret = mddev->bitmap_ops->resize(mddev, size, 0); + +		if (ret) +			return ret; +	}  	md_set_array_sectors(mddev, size);  	if (sectors > mddev->dev_sectors && @@ -4502,7 +4506,8 @@ static int raid10_start_reshape(struct mddev *mddev)  		oldsize = raid10_size(mddev, 0, 0);  		newsize = raid10_size(mddev, 0, conf->geo.raid_disks); -		if (!mddev_is_clustered(mddev)) { +		if (!mddev_is_clustered(mddev) && +		    md_bitmap_enabled(mddev, false)) {  			ret = mddev->bitmap_ops->resize(mddev, newsize, 0);  			if (ret)  				goto abort; @@ -4525,6 +4530,7 @@ static int raid10_start_reshape(struct mddev *mddev)  			    MD_FEATURE_RESHAPE_ACTIVE)) || (oldsize == newsize))  			goto out; +		/* cluster can't be setup without bitmap */  		ret = mddev->bitmap_ops->resize(mddev, newsize, 0);  		if (ret)  			goto abort; | 
