Commit 77c09640 authored by Yu Kuai's avatar Yu Kuai Committed by Song Liu
Browse files

md/md-bitmap: merge md_bitmap_resize() into bitmap_operations



So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.

Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20240826074452.1490072-36-yukuai1@huaweicloud.com


Signed-off-by: default avatarSong Liu <song@kernel.org>
parent e1791dae
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -4068,7 +4068,8 @@ static int raid_preresume(struct dm_target *ti)
	       mddev->bitmap_info.chunksize != to_bytes(rs->requested_bitmap_chunk_sectors)))) {
		int chunksize = to_bytes(rs->requested_bitmap_chunk_sectors) ?: mddev->bitmap_info.chunksize;

		r = md_bitmap_resize(mddev, mddev->dev_sectors, chunksize, false);
		r = mddev->bitmap_ops->resize(mddev, mddev->dev_sectors,
					      chunksize, false);
		if (r)
			DMERR("Failed to resize bitmap");
	}
+3 −3
Original line number Diff line number Diff line
@@ -2374,7 +2374,7 @@ static int __bitmap_resize(struct bitmap *bitmap, sector_t blocks,
	return ret;
}

int md_bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,
static int bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,
			 bool init)
{
	struct bitmap *bitmap = mddev->bitmap;
@@ -2384,7 +2384,6 @@ int md_bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,

	return __bitmap_resize(bitmap, blocks, chunksize, init);
}
EXPORT_SYMBOL_GPL(md_bitmap_resize);

static ssize_t
location_show(struct mddev *mddev, char *page)
@@ -2763,6 +2762,7 @@ const struct attribute_group md_bitmap_group = {

static struct bitmap_operations bitmap_ops = {
	.create			= bitmap_create,
	.resize			= bitmap_resize,
	.load			= bitmap_load,
	.destroy		= bitmap_destroy,
	.flush			= bitmap_flush,
+3 −2
Original line number Diff line number Diff line
@@ -248,6 +248,9 @@ struct md_bitmap_stats {

struct bitmap_operations {
	int (*create)(struct mddev *mddev, int slot);
	int (*resize)(struct mddev *mddev, sector_t blocks, int chunksize,
		      bool init);

	int (*load)(struct mddev *mddev);
	void (*destroy)(struct mddev *mddev);
	void (*flush)(struct mddev *mddev);
@@ -280,8 +283,6 @@ void mddev_set_bitmap_ops(struct mddev *mddev);

/* these are exported */

int md_bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,
		     bool init);
struct bitmap *get_bitmap_from_slot(struct mddev *mddev, int slot);
int md_bitmap_copy_from_slot(struct mddev *mddev, int slot,
			     sector_t *lo, sector_t *hi, bool clear_bits);
+3 −2
Original line number Diff line number Diff line
@@ -628,8 +628,9 @@ static int process_recvd_msg(struct mddev *mddev, struct cluster_msg *msg)
		break;
	case BITMAP_RESIZE:
		if (le64_to_cpu(msg->high) != mddev->pers->size(mddev, 0, 0))
			ret = md_bitmap_resize(mddev, le64_to_cpu(msg->high), 0,
					       false);
			ret = mddev->bitmap_ops->resize(mddev,
							le64_to_cpu(msg->high),
							0, false);
		break;
	default:
		ret = -1;
+1 −1
Original line number Diff line number Diff line
@@ -3303,7 +3303,7 @@ static int raid1_resize(struct mddev *mddev, sector_t sectors)
	    mddev->array_sectors > newsize)
		return -EINVAL;

	ret = md_bitmap_resize(mddev, newsize, 0, false);
	ret = mddev->bitmap_ops->resize(mddev, newsize, 0, false);
	if (ret)
		return ret;

Loading