From: Greg Kroah-Hartman Date: Mon, 13 Jun 2022 09:15:40 +0000 (+0200) Subject: 5.18-stable patches X-Git-Tag: v4.9.318~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e4b0d6186dd78b8901f23935eba5305ce184be0a;p=thirdparty%2Fkernel%2Fstable-queue.git 5.18-stable patches added patches: md-raid0-ignore-raid0-layout-if-the-second-zone-has-only-one-device.patch --- diff --git a/queue-5.18/md-raid0-ignore-raid0-layout-if-the-second-zone-has-only-one-device.patch b/queue-5.18/md-raid0-ignore-raid0-layout-if-the-second-zone-has-only-one-device.patch new file mode 100644 index 00000000000..dff003be169 --- /dev/null +++ b/queue-5.18/md-raid0-ignore-raid0-layout-if-the-second-zone-has-only-one-device.patch @@ -0,0 +1,72 @@ +From ea23994edc4169bd90d7a9b5908c6ccefd82fa40 Mon Sep 17 00:00:00 2001 +From: Pascal Hambourg +Date: Wed, 13 Apr 2022 08:53:56 +0200 +Subject: md/raid0: Ignore RAID0 layout if the second zone has only one device + +From: Pascal Hambourg + +commit ea23994edc4169bd90d7a9b5908c6ccefd82fa40 upstream. + +The RAID0 layout is irrelevant if all members have the same size so the +array has only one zone. It is *also* irrelevant if the array has two +zones and the second zone has only one device, for example if the array +has two members of different sizes. + +So in that case it makes sense to allow assembly even when the layout is +undefined, like what is done when the array has only one zone. + +Reviewed-by: NeilBrown +Signed-off-by: Pascal Hambourg +Signed-off-by: Song Liu +Signed-off-by: Greg Kroah-Hartman +--- + drivers/md/raid0.c | 31 ++++++++++++++++--------------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +--- a/drivers/md/raid0.c ++++ b/drivers/md/raid0.c +@@ -128,21 +128,6 @@ static int create_strip_zones(struct mdd + pr_debug("md/raid0:%s: FINAL %d zones\n", + mdname(mddev), conf->nr_strip_zones); + +- if (conf->nr_strip_zones == 1) { +- conf->layout = RAID0_ORIG_LAYOUT; +- } else if (mddev->layout == RAID0_ORIG_LAYOUT || +- mddev->layout == RAID0_ALT_MULTIZONE_LAYOUT) { +- conf->layout = mddev->layout; +- } else if (default_layout == RAID0_ORIG_LAYOUT || +- default_layout == RAID0_ALT_MULTIZONE_LAYOUT) { +- conf->layout = default_layout; +- } else { +- pr_err("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n", +- mdname(mddev)); +- pr_err("md/raid0: please set raid0.default_layout to 1 or 2\n"); +- err = -ENOTSUPP; +- goto abort; +- } + /* + * now since we have the hard sector sizes, we can make sure + * chunk size is a multiple of that sector size +@@ -273,6 +258,22 @@ static int create_strip_zones(struct mdd + (unsigned long long)smallest->sectors); + } + ++ if (conf->nr_strip_zones == 1 || conf->strip_zone[1].nb_dev == 1) { ++ conf->layout = RAID0_ORIG_LAYOUT; ++ } else if (mddev->layout == RAID0_ORIG_LAYOUT || ++ mddev->layout == RAID0_ALT_MULTIZONE_LAYOUT) { ++ conf->layout = mddev->layout; ++ } else if (default_layout == RAID0_ORIG_LAYOUT || ++ default_layout == RAID0_ALT_MULTIZONE_LAYOUT) { ++ conf->layout = default_layout; ++ } else { ++ pr_err("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n", ++ mdname(mddev)); ++ pr_err("md/raid0: please set raid0.default_layout to 1 or 2\n"); ++ err = -EOPNOTSUPP; ++ goto abort; ++ } ++ + pr_debug("md/raid0:%s: done.\n", mdname(mddev)); + *private_conf = conf; + diff --git a/queue-5.18/series b/queue-5.18/series index eb3945f7e14..a344adf4ab5 100644 --- a/queue-5.18/series +++ b/queue-5.18/series @@ -31,7 +31,6 @@ usb-typec-mux-check-dev_set_name-return-value.patch rpmsg-virtio-fix-possible-double-free-in-rpmsg_probe.patch rpmsg-virtio-fix-possible-double-free-in-rpmsg_virti.patch rpmsg-virtio-fix-the-unregistration-of-the-device-rp.patch -platform-finally-disallow-irq0-in-platform_get_irq-a.patch iio-adc-stmpe-adc-fix-wait_for_completion_timeout-re.patch iio-proximity-vl53l0x-fix-return-value-check-of-wait.patch iio-adc-sc27xx-fix-read-big-scale-voltage-not-right.patch @@ -336,3 +335,4 @@ powerpc-32-fix-overread-overwrite-of-thread_struct-via-ptrace.patch random-avoid-checking-crng_ready-twice-in-random_init.patch random-mark-bootloader-randomness-code-as-__init.patch random-account-for-arch-randomness-in-bits.patch +md-raid0-ignore-raid0-layout-if-the-second-zone-has-only-one-device.patch