Commit 864466c3 authored by Li Nan's avatar Li Nan Committed by Yu Kuai
Browse files

md: Fix logical_block_size configuration being overwritten



In super_1_validate(), mddev->logical_block_size is directly overwritten
with the value from metadata. This causes the previously configured lbs
to be lost, making the configuration ineffective. Fix it.

Fixes: 62ed1b58 ("md: allow configuring logical block size")
Signed-off-by: default avatarLi Nan <linan122@huawei.com>
Reviewed-by: default avatarYu Kuai <yukuai@fnnas.com>
Reviewed-by: default avatarXiao Ni <xni@redhat.com>
Link: https://lore.kernel.org/linux-raid/20251226024221.724201-1-linan666@huaweicloud.com


Signed-off-by: default avatarYu Kuai <yukuai@fnnas.com>
parent 2cc58365
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1999,7 +1999,6 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *freshest, struc
		mddev->layout = le32_to_cpu(sb->layout);
		mddev->raid_disks = le32_to_cpu(sb->raid_disks);
		mddev->dev_sectors = le64_to_cpu(sb->size);
		mddev->logical_block_size = le32_to_cpu(sb->logical_block_size);
		mddev->events = ev1;
		mddev->bitmap_info.offset = 0;
		mddev->bitmap_info.space = 0;
@@ -2015,6 +2014,9 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *freshest, struc

		mddev->max_disks =  (4096-256)/2;

		if (!mddev->logical_block_size)
			mddev->logical_block_size = le32_to_cpu(sb->logical_block_size);

		if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_BITMAP_OFFSET) &&
		    mddev->bitmap_info.file == NULL) {
			mddev->bitmap_info.offset =