Compare commits
No commits in common. "c8" and "c8-beta" have entirely different histories.
@ -1,151 +0,0 @@
|
||||
From 476b00bdeeb6c004b3a758bd842b0fa9e4164508 Mon Sep 17 00:00:00 2001
|
||||
From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
Date: Mon, 5 Feb 2024 15:50:29 +0100
|
||||
Subject: [PATCH 1/1] Revert "mdadm: remove container_enough logic"
|
||||
|
||||
Mentioned patch changes way of IMSM member arrays assembling, they are
|
||||
updated by every new drive incremental processes. Previously, member
|
||||
arrays were created and filled once, by last drive incremental process.
|
||||
|
||||
We determined regressions with various impact. Unfortunately, initial
|
||||
testing didn't show them.
|
||||
|
||||
Regressions are connected to drive appearance order and may not be
|
||||
reproducible on every configuration, there are at least two know
|
||||
issues for now:
|
||||
|
||||
- sysfs attributes are filled using old metadata if there is
|
||||
outdated drive and it is enumerated first.
|
||||
|
||||
- rebuild may be aborted and started from beginning after reboot,
|
||||
if drive under rebuild is enumerated as the last one.
|
||||
|
||||
This reverts commit 4dde420fc3e24077ab926f79674eaae1b71de10b. It fixes
|
||||
checkpatch issues and reworks logic to remove empty "if" branch in
|
||||
Incremental.
|
||||
|
||||
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
---
|
||||
Incremental.c | 9 +++++++++
|
||||
mdadm.h | 7 +++++++
|
||||
super-ddf.c | 1 +
|
||||
super-intel.c | 32 +++++++++++++++++++++++++++++++-
|
||||
4 files changed, 48 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Incremental.c b/Incremental.c
|
||||
index 6cbc164a27b9..30c07c037028 100644
|
||||
--- a/Incremental.c
|
||||
+++ b/Incremental.c
|
||||
@@ -1467,6 +1467,15 @@ static int Incremental_container(struct supertype *st, char *devname,
|
||||
|
||||
st->ss->getinfo_super(st, &info, NULL);
|
||||
|
||||
+ if (info.container_enough < 0 || (info.container_enough == 0 && c->runstop < 1)) {
|
||||
+ if (c->export)
|
||||
+ printf("MD_STARTED=no\n");
|
||||
+ else if (c->verbose)
|
||||
+ pr_err("Not enough devices to start the container.\n");
|
||||
+
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
match = conf_match(st, &info, devname, c->verbose, &rv);
|
||||
if (match == NULL && rv == 2)
|
||||
return rv;
|
||||
diff --git a/mdadm.h b/mdadm.h
|
||||
index 709b6104c401..1f28b3e754be 100644
|
||||
--- a/mdadm.h
|
||||
+++ b/mdadm.h
|
||||
@@ -377,6 +377,13 @@ struct mdinfo {
|
||||
int container_member; /* for assembling external-metatdata arrays
|
||||
* This is to be used internally by metadata
|
||||
* handler only */
|
||||
+ /**
|
||||
+ * flag external handlers can set to indicate that subarrays have:
|
||||
+ * - not enough disks to start (-1),
|
||||
+ * - enough disks to start (0),
|
||||
+ * - all expected disks (1).
|
||||
+ */
|
||||
+ int container_enough;
|
||||
char sys_name[32];
|
||||
struct mdinfo *devs;
|
||||
struct mdinfo *next;
|
||||
diff --git a/super-ddf.c b/super-ddf.c
|
||||
index a87e3169d325..7571e3b740c6 100644
|
||||
--- a/super-ddf.c
|
||||
+++ b/super-ddf.c
|
||||
@@ -1975,6 +1975,7 @@ static void getinfo_super_ddf(struct supertype *st, struct mdinfo *info, char *m
|
||||
info->array.ctime = DECADE + __be32_to_cpu(*cptr);
|
||||
|
||||
info->array.chunk_size = 0;
|
||||
+ info->container_enough = 1;
|
||||
|
||||
info->disk.major = 0;
|
||||
info->disk.minor = 0;
|
||||
diff --git a/super-intel.c b/super-intel.c
|
||||
index 6a664a2e58d3..dbea235dd4bd 100644
|
||||
--- a/super-intel.c
|
||||
+++ b/super-intel.c
|
||||
@@ -3778,6 +3778,7 @@ static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info, char *
|
||||
struct intel_super *super = st->sb;
|
||||
struct imsm_disk *disk;
|
||||
int map_disks = info->array.raid_disks;
|
||||
+ int max_enough = -1;
|
||||
int i;
|
||||
struct imsm_super *mpb;
|
||||
|
||||
@@ -3819,9 +3820,12 @@ static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info, char *
|
||||
|
||||
for (i = 0; i < mpb->num_raid_devs; i++) {
|
||||
struct imsm_dev *dev = get_imsm_dev(super, i);
|
||||
- int j = 0;
|
||||
+ int failed, enough, j, missing = 0;
|
||||
struct imsm_map *map;
|
||||
+ __u8 state;
|
||||
|
||||
+ failed = imsm_count_failed(super, dev, MAP_0);
|
||||
+ state = imsm_check_degraded(super, dev, failed, MAP_0);
|
||||
map = get_imsm_map(dev, MAP_0);
|
||||
|
||||
/* any newly missing disks?
|
||||
@@ -3836,11 +3840,37 @@ static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info, char *
|
||||
|
||||
if (!(ord & IMSM_ORD_REBUILD) &&
|
||||
get_imsm_missing(super, idx)) {
|
||||
+ missing = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (state == IMSM_T_STATE_FAILED)
|
||||
+ enough = -1;
|
||||
+ else if (state == IMSM_T_STATE_DEGRADED &&
|
||||
+ (state != map->map_state || missing))
|
||||
+ enough = 0;
|
||||
+ else /* we're normal, or already degraded */
|
||||
+ enough = 1;
|
||||
+ if (is_gen_migration(dev) && missing) {
|
||||
+ /* during general migration we need all disks
|
||||
+ * that process is running on.
|
||||
+ * No new missing disk is allowed.
|
||||
+ */
|
||||
+ max_enough = -1;
|
||||
+ enough = -1;
|
||||
+ /* no more checks necessary
|
||||
+ */
|
||||
+ break;
|
||||
+ }
|
||||
+ /* in the missing/failed disk case check to see
|
||||
+ * if at least one array is runnable
|
||||
+ */
|
||||
+ max_enough = max(max_enough, enough);
|
||||
}
|
||||
|
||||
+ info->container_enough = max_enough;
|
||||
+
|
||||
if (super->disks) {
|
||||
__u32 reserved = imsm_reserved_sectors(super, super->disks);
|
||||
|
||||
--
|
||||
2.32.0 (Apple Git-132)
|
||||
|
@ -1,42 +0,0 @@
|
||||
From 582945c2d3bbead4a71de521a392e292a4a84e24 Mon Sep 17 00:00:00 2001
|
||||
From: Pawel Piatkowski <pawel.piatkowski@intel.com>
|
||||
Date: Wed, 20 Dec 2023 10:32:49 +0100
|
||||
Subject: [PATCH 1/1] manage: adjust checking subarray state in update_subarray
|
||||
|
||||
Only changing bitmap related consistency_policy requires
|
||||
subarray to be inactive.
|
||||
consistency_policy with PPL or NO_PPL value can be changed on
|
||||
active subarray.
|
||||
It fixes regression introduced in commit
|
||||
db10eab68e652f141169 ("Fix --update-subarray on active volume")
|
||||
|
||||
Signed-off-by: Pawel Piatkowski <pawel.piatkowski@intel.com>
|
||||
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
---
|
||||
Manage.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Manage.c b/Manage.c
|
||||
index f0d4cb01..91532266 100644
|
||||
--- a/Manage.c
|
||||
+++ b/Manage.c
|
||||
@@ -1749,6 +1749,7 @@ int Update_subarray(char *dev, char *subarray, enum update_opt update,
|
||||
int fd, rv = 2;
|
||||
struct mdinfo *info = NULL;
|
||||
char *update_verb = map_num(update_options, update);
|
||||
+ bool allow_active = update == UOPT_PPL || update == UOPT_NO_PPL;
|
||||
|
||||
memset(st, 0, sizeof(*st));
|
||||
|
||||
@@ -1763,7 +1764,7 @@ int Update_subarray(char *dev, char *subarray, enum update_opt update,
|
||||
goto free_super;
|
||||
}
|
||||
|
||||
- if (is_subarray_active(subarray, st->devnm)) {
|
||||
+ if (!allow_active && is_subarray_active(subarray, st->devnm)) {
|
||||
if (verbose >= 0)
|
||||
pr_err("Subarray %s in %s is active, cannot update %s\n",
|
||||
subarray, dev, update_verb);
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,267 +0,0 @@
|
||||
From dcc22ae74a864358b812327a423435b541789a36 Mon Sep 17 00:00:00 2001
|
||||
From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
Date: Thu, 1 Feb 2024 12:32:41 +0100
|
||||
Subject: [PATCH 1/1] super1: remove support for name= in config
|
||||
|
||||
Only super1 provides "name=" to config. It is recoreded in metadata
|
||||
so there is no need to duplicate same information.
|
||||
UUID is our main key.
|
||||
|
||||
It is not used by Incremental and Assemble handles empty name well
|
||||
because other supertypes don't set it in conf.
|
||||
|
||||
Expectation that the name in config is same as in metadata is bug prone.
|
||||
Config should be the place where use can define customized settings.
|
||||
|
||||
Remove printing "name=" from mdadm config creation commands. Ignore
|
||||
the name in config file to keep backward compatibility. Remove
|
||||
description from man mdadm.conf.
|
||||
|
||||
Update 00conftest because "name" is no longer accepted.
|
||||
As the name is ignored, error for mdadm --detail is not printed.
|
||||
|
||||
Reported-by: Stefan Fleischmann <sfle@kth.se>
|
||||
Fixes: e2eb503bd797 ("mdadm: Follow POSIX Portable Character Set")
|
||||
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
---
|
||||
config.c | 12 ++----
|
||||
mdadm.conf.5.in | 7 ---
|
||||
super1.c | 8 ----
|
||||
tests/00confnames | 79 ++++++----------------------------
|
||||
tests/templates/names_template | 7 +--
|
||||
5 files changed, 19 insertions(+), 94 deletions(-)
|
||||
|
||||
diff --git a/config.c b/config.c
|
||||
index 9a04cae8..44f7dd2f 100644
|
||||
--- a/config.c
|
||||
+++ b/config.c
|
||||
@@ -262,6 +262,7 @@ pass:
|
||||
* @cmdline: context dependent actions.
|
||||
*
|
||||
* If criteria passed, set name in @ident.
|
||||
+ * Note: name is not used by config file, it for cmdline only.
|
||||
*
|
||||
* Return: %MDADM_STATUS_SUCCESS or %MDADM_STATUS_ERROR.
|
||||
*/
|
||||
@@ -571,7 +572,8 @@ void arrayline(char *line)
|
||||
mis.super_minor = minor;
|
||||
}
|
||||
} else if (strncasecmp(w, "name=", 5) == 0) {
|
||||
- _ident_set_name(&mis, w + 5, false);
|
||||
+ /* Ignore name in confile */
|
||||
+ continue;
|
||||
} else if (strncasecmp(w, "bitmap=", 7) == 0) {
|
||||
if (mis.bitmap_file)
|
||||
pr_err("only specify bitmap file once. %s ignored\n",
|
||||
@@ -1279,13 +1281,7 @@ struct mddev_ident *conf_match(struct supertype *st,
|
||||
array_list->devname);
|
||||
continue;
|
||||
}
|
||||
- if (array_list->name[0] &&
|
||||
- strcasecmp(array_list->name, info->name) != 0) {
|
||||
- if (verbose >= 2 && array_list->devname)
|
||||
- pr_err("Name differs from %s.\n",
|
||||
- array_list->devname);
|
||||
- continue;
|
||||
- }
|
||||
+
|
||||
if (array_list->devices && devname &&
|
||||
!match_oneof(array_list->devices, devname)) {
|
||||
if (verbose >= 2 && array_list->devname)
|
||||
diff --git a/mdadm.conf.5.in b/mdadm.conf.5.in
|
||||
index 94e23dd0..787e51e9 100644
|
||||
--- a/mdadm.conf.5.in
|
||||
+++ b/mdadm.conf.5.in
|
||||
@@ -133,13 +133,6 @@ The value should be a 128 bit uuid in hexadecimal, with punctuation
|
||||
interspersed if desired. This must match the uuid stored in the
|
||||
superblock.
|
||||
.TP
|
||||
-.B name=
|
||||
-The value should be a simple textual name as was given to
|
||||
-.I mdadm
|
||||
-when the array was created. This must match the name stored in the
|
||||
-superblock on a device for that device to be included in the array.
|
||||
-Not all superblock formats support names.
|
||||
-.TP
|
||||
.B super\-minor=
|
||||
The value is an integer which indicates the minor number that was
|
||||
stored in the superblock when the array was created. When an array is
|
||||
diff --git a/super1.c b/super1.c
|
||||
index dfde4629..5fd2228e 100644
|
||||
--- a/super1.c
|
||||
+++ b/super1.c
|
||||
@@ -645,10 +645,6 @@ static void brief_examine_super1(struct supertype *st, int verbose)
|
||||
printf(":");
|
||||
printf("%02x", sb->set_uuid[i]);
|
||||
}
|
||||
- if (sb->set_name[0]) {
|
||||
- printf(" name=");
|
||||
- print_quoted(sb->set_name);
|
||||
- }
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
@@ -875,10 +871,6 @@ static void brief_detail_super1(struct supertype *st, char *subarray)
|
||||
struct mdp_superblock_1 *sb = st->sb;
|
||||
int i;
|
||||
|
||||
- if (sb->set_name[0]) {
|
||||
- printf(" name=");
|
||||
- print_quoted(sb->set_name);
|
||||
- }
|
||||
printf(" UUID=");
|
||||
for (i = 0; i < 16; i++) {
|
||||
if ((i & 3) == 0 && i != 0)
|
||||
diff --git a/tests/00confnames b/tests/00confnames
|
||||
index 10823f01..191a905f 100644
|
||||
--- a/tests/00confnames
|
||||
+++ b/tests/00confnames
|
||||
@@ -1,10 +1,8 @@
|
||||
set -x -e
|
||||
. tests/templates/names_template
|
||||
|
||||
-# Test how <devname> and <name> from config are handled during Incremental assemblation.
|
||||
-# 1-6 <devnode> only tests (no <name> in config).
|
||||
-# 6-10 <devname> and <name> combinations are tested.
|
||||
-# 11-13 corner cases.
|
||||
+# Test how <devname> is handled during Incremental assemblation with
|
||||
+# config file and ARRAYLINE specified.
|
||||
|
||||
names_create "/dev/md/name"
|
||||
local _UUID="$(mdadm -D --export /dev/md127 | grep MD_UUID | cut -d'=' -f2)"
|
||||
@@ -12,96 +10,47 @@ local _UUID="$(mdadm -D --export /dev/md127 | grep MD_UUID | cut -d'=' -f2)"
|
||||
|
||||
|
||||
# 1. <devname> definition consistent with metadata name.
|
||||
-names_make_conf $_UUID "/dev/md/name" "empty" $config
|
||||
+names_make_conf $_UUID "/dev/md/name" $config
|
||||
mdadm -S "/dev/md127"
|
||||
mdadm -I $dev0 --config=$config
|
||||
names_verify "/dev/md127" "name" "name"
|
||||
mdadm -S "/dev/md127"
|
||||
|
||||
# 2. Same as 1, but use short name form of <devname>.
|
||||
-names_make_conf $_UUID "name" "empty" $config
|
||||
+names_make_conf $_UUID "name" $config
|
||||
mdadm -I $dev0 --config=$config
|
||||
names_verify "/dev/md127" "name" "name"
|
||||
mdadm -S "/dev/md127"
|
||||
|
||||
# 3. Same as 1, but use different <devname> than metadata provides.
|
||||
-names_make_conf $_UUID "/dev/md/other" "empty" $config
|
||||
+names_make_conf $_UUID "/dev/md/other" $config
|
||||
mdadm -I $dev0 --config=$config
|
||||
names_verify "/dev/md127" "other" "name"
|
||||
mdadm -S "/dev/md127"
|
||||
|
||||
# 4. Same as 3, but use short name form of <devname>.
|
||||
-names_make_conf $_UUID "other" "empty" $config
|
||||
+names_make_conf $_UUID "other" $config
|
||||
mdadm -I $dev0 --config=$config
|
||||
names_verify "/dev/md127" "other" "name"
|
||||
mdadm -S "/dev/md127"
|
||||
|
||||
-# 5. Force particular node creation by setting <devname> to /dev/mdX. Link is not created in this
|
||||
-# case.
|
||||
-names_make_conf $_UUID "/dev/md4" "empty" $config
|
||||
+# 5. Force particular node creation by setting <devname> to /dev/mdX.
|
||||
+# Link is not created in this case.
|
||||
+names_make_conf $_UUID "/dev/md4" $config
|
||||
mdadm -I $dev0 --config=$config
|
||||
names_verify "/dev/md4" "empty" "name"
|
||||
mdadm -S "/dev/md4"
|
||||
|
||||
-# 6. <devname> set to /dev/mdX, <name> same as in metadata.
|
||||
-# Metadata name and default node used - controversial. Current behavior documented.
|
||||
-names_make_conf $_UUID "/dev/md22" "name" $config
|
||||
-mdadm -I $dev0 --config=$config
|
||||
-names_verify "/dev/md127" "name" "name"
|
||||
-mdadm -S "/dev/md127"
|
||||
-
|
||||
-# 7. <devname> set to /dev/mdX, <name> different than in metadata.
|
||||
-# Metadata name and default node used - controversial. Current behavior documented.
|
||||
-names_make_conf $_UUID "/dev/md8" "other" $config
|
||||
-mdadm -I $dev0 --config=$config
|
||||
-names_verify "/dev/md127" "name" "name"
|
||||
-mdadm -S "/dev/md127"
|
||||
-
|
||||
-# 8. Both <devname> and <name> different than in metadata.
|
||||
-# Metadata name and default node used - controversial. Current behavior documented.
|
||||
-names_make_conf $_UUID "devnode" "other_name" $config
|
||||
-mdadm -I $dev0 --config=$config
|
||||
-names_verify "/dev/md127" "name" "name"
|
||||
-mdadm -S "/dev/md127"
|
||||
-
|
||||
-# 9. <devname> set to metadata name, <name> different than in metadata.
|
||||
-# Metadata name and default node used - controversial. Current behavior documented.
|
||||
-names_make_conf $_UUID "name" "other_name" $config
|
||||
-mdadm -I $dev0 --config=$config
|
||||
-names_verify "/dev/md127" "name" "name"
|
||||
-mdadm -S "/dev/md127"
|
||||
-
|
||||
-# 10. Bad <devname> set, no <name>.
|
||||
-# Metadata name and default node used - expected.
|
||||
-names_make_conf $_UUID "/im/bad/devname" "empty" $config
|
||||
-mdadm -I $dev0 --config=$config
|
||||
-names_verify "/dev/md127" "name" "name"
|
||||
-mdadm -S "/dev/md127"
|
||||
-
|
||||
-# 11. <devname> with some special symbols and locales, no <name>.
|
||||
+# 6. <devname> with some special symbols and locales.
|
||||
# <devname> should be ignored.
|
||||
-names_make_conf $_UUID "tźż-\.,<>st+-" "empty" $config
|
||||
-mdadm -I $dev0 --config=$config
|
||||
-names_verify "/dev/md127" "name" "name"
|
||||
-mdadm -S "/dev/md127"
|
||||
-
|
||||
-# 12. No <devname> and <name> set.
|
||||
-# Metadata name and default node used - expected.
|
||||
-names_make_conf $_UUID "empty" "empty" $config
|
||||
-mdadm -I $dev0 --config=$config
|
||||
-names_verify "/dev/md127" "name" "name"
|
||||
-mdadm -S "/dev/md127"
|
||||
-
|
||||
-# 13. No <devname>, <name> set to /dev/mdX.
|
||||
-# Entry should be ignored, it is not ignored but result is good anyway.
|
||||
-names_make_conf $_UUID "empty" "/dev/md12" $config
|
||||
+names_make_conf $_UUID "tźż-\.,<>st+-" $config
|
||||
mdadm -I $dev0 --config=$config
|
||||
names_verify "/dev/md127" "name" "name"
|
||||
mdadm -S "/dev/md127"
|
||||
|
||||
-# 13. No <devname>, <name> with special symbols and locales.
|
||||
-# Entry should be ignored, it is not ignored but result is good anyway.
|
||||
-names_make_conf $_UUID "empty" "./\śćń#&" $config
|
||||
+# 7. No <devname> set.
|
||||
+# Metadata name and default node used.
|
||||
+names_make_conf $_UUID "empty" $config
|
||||
mdadm -I $dev0 --config=$config
|
||||
names_verify "/dev/md127" "name" "name"
|
||||
mdadm -S "/dev/md127"
|
||||
diff --git a/tests/templates/names_template b/tests/templates/names_template
|
||||
index 6181bfaa..1b6cd14b 100644
|
||||
--- a/tests/templates/names_template
|
||||
+++ b/tests/templates/names_template
|
||||
@@ -63,8 +63,7 @@ function names_verify() {
|
||||
names_make_conf() {
|
||||
local UUID="$1"
|
||||
local WANTED_DEVNAME="$2"
|
||||
- local WANTED_NAME="$3"
|
||||
- local CONF="$4"
|
||||
+ local CONF="$3"
|
||||
|
||||
local LINE="ARRAY metadata=1.2 UUID=$UUID"
|
||||
|
||||
@@ -72,9 +71,5 @@ names_make_conf() {
|
||||
LINE="$LINE $WANTED_DEVNAME"
|
||||
fi
|
||||
|
||||
- if [[ "$WANTED_NAME" != "empty" ]]; then
|
||||
- LINE="$LINE name=$WANTED_NAME"
|
||||
- fi
|
||||
-
|
||||
echo $LINE > $CONF
|
||||
}
|
||||
--
|
||||
2.41.0
|
||||
|
@ -2,7 +2,7 @@ Summary: The mdadm program controls Linux md devices (software RAID arrays)
|
||||
Name: mdadm
|
||||
Version: 4.2
|
||||
# extraversion is used to define rhel internal version
|
||||
%define extraversion 16
|
||||
%define extraversion 13
|
||||
Release: %{extraversion}%{?dist}
|
||||
Source: http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}%{?subversion:-%{subversion}}.tar.xz
|
||||
Source1: mdmonitor.init
|
||||
@ -179,9 +179,6 @@ Patch161: 0162-mdadm-ddf-Abort-when-raid-disk-is-smaller-in-getinfo.patch
|
||||
Patch162: 0163-mdadm-super1-Add-MD_FEATURE_RAID0_LAYOUT-if-kernel-5.patch
|
||||
Patch163: 0164-mdadm-remove-container_enough-logic.patch
|
||||
Patch164: 0165-Fix-assembling-RAID-volume-by-using-incremental.patch
|
||||
Patch165: 0166-Revert-mdadm-remove-container_enough-logic.patch
|
||||
Patch166: 0167-manage-adjust-checking-subarray-state-in-update_suba.patch
|
||||
Patch167: 0168-super1-remove-support-for-name-in-config.patch
|
||||
|
||||
# RHEL customization patches
|
||||
Patch200: mdadm-udev.patch
|
||||
@ -276,18 +273,6 @@ rm -rf %{buildroot}
|
||||
/usr/share/mdadm/mdcheck
|
||||
|
||||
%changelog
|
||||
* Mon Oct 28 2024 Xiao Ni <xni@redhat.com> - 4.2-16
|
||||
- Remove name= support in config file
|
||||
- Resolves RHEL-45608
|
||||
|
||||
* Thu Mar 28 2024 Xiao Ni <xni@redhat.com> - 4.2-15
|
||||
- Fix update_subarray on active volume - missing patch
|
||||
- Resolves RHEL-20833
|
||||
|
||||
* Fri Mar 15 2024 Xiao Ni <xni@redhat.com> - 4.2-14
|
||||
- Revert "mdadm: remove container_enough logic"
|
||||
- Resolves RHEL-26274
|
||||
|
||||
* Fri Nov 10 2023 Xiao Ni <xni@redhat.com> - 4.2-13
|
||||
- Fix raid0 layout display problem
|
||||
- Resolves RHEL-8372
|
||||
|
Loading…
Reference in New Issue
Block a user