Auto sync2gitlab import of mdadm-4.2-6.el8.src.rpm
This commit is contained in:
parent
fbe4778694
commit
d64712486e
112
0053-super1-report-truncated-device.patch
Normal file
112
0053-super1-report-truncated-device.patch
Normal file
@ -0,0 +1,112 @@
|
||||
From 171e9743881edf2dfb163ddff483566fbf913ccd Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.de>
|
||||
Date: Fri, 26 Aug 2022 08:55:56 +1000
|
||||
Subject: [PATCH 53/63] super1: report truncated device
|
||||
|
||||
When the metadata is at the start of the device, it is possible that it
|
||||
describes a device large than the one it is actually stored on. When
|
||||
this happens, report it loudly in --examine.
|
||||
|
||||
....
|
||||
Unused Space : before=1968 sectors, after=-2047 sectors DEVICE TOO SMALL
|
||||
State : clean TRUNCATED DEVICE
|
||||
....
|
||||
|
||||
Also report in --assemble so that the failure which the kernel will
|
||||
report will be explained.
|
||||
|
||||
mdadm: Device /dev/sdb is not large enough for data described in superblock
|
||||
mdadm: no RAID superblock on /dev/sdb
|
||||
mdadm: /dev/sdb has no superblock - assembly aborted
|
||||
|
||||
Scenario can be demonstrated as follows:
|
||||
|
||||
mdadm: Note: this array has metadata at the start and
|
||||
may not be suitable as a boot device. If you plan to
|
||||
store '/boot' on this device please ensure that
|
||||
your boot-loader understands md/v1.x metadata, or use
|
||||
--metadata=0.90
|
||||
mdadm: Defaulting to version 1.2 metadata
|
||||
mdadm: array /dev/md/test started.
|
||||
mdadm: stopped /dev/md/test
|
||||
Unused Space : before=1968 sectors, after=-2047 sectors DEVICE TOO SMALL
|
||||
State : clean TRUNCATED DEVICE
|
||||
Unused Space : before=1968 sectors, after=-2047 sectors DEVICE TOO SMALL
|
||||
State : clean TRUNCATED DEVICE
|
||||
|
||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
super1.c | 35 ++++++++++++++++++++++++++++-------
|
||||
1 file changed, 28 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/super1.c b/super1.c
|
||||
index 71af860c..58345e68 100644
|
||||
--- a/super1.c
|
||||
+++ b/super1.c
|
||||
@@ -406,12 +406,18 @@ static void examine_super1(struct supertype *st, char *homehost)
|
||||
|
||||
st->ss->getinfo_super(st, &info, NULL);
|
||||
if (info.space_after != 1 &&
|
||||
- !(__le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET))
|
||||
- printf(" Unused Space : before=%llu sectors, after=%llu sectors\n",
|
||||
- info.space_before, info.space_after);
|
||||
-
|
||||
- printf(" State : %s\n",
|
||||
- (__le64_to_cpu(sb->resync_offset)+1)? "active":"clean");
|
||||
+ !(__le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET)) {
|
||||
+ printf(" Unused Space : before=%llu sectors, ",
|
||||
+ info.space_before);
|
||||
+ if (info.space_after < INT64_MAX)
|
||||
+ printf("after=%llu sectors\n", info.space_after);
|
||||
+ else
|
||||
+ printf("after=-%llu sectors DEVICE TOO SMALL\n",
|
||||
+ UINT64_MAX - info.space_after);
|
||||
+ }
|
||||
+ printf(" State : %s%s\n",
|
||||
+ (__le64_to_cpu(sb->resync_offset)+1) ? "active":"clean",
|
||||
+ (info.space_after > INT64_MAX) ? " TRUNCATED DEVICE" : "");
|
||||
printf(" Device UUID : ");
|
||||
for (i=0; i<16; i++) {
|
||||
if ((i&3)==0 && i != 0)
|
||||
@@ -2206,6 +2212,7 @@ static int load_super1(struct supertype *st, int fd, char *devname)
|
||||
tst.ss = &super1;
|
||||
for (tst.minor_version = 0; tst.minor_version <= 2;
|
||||
tst.minor_version++) {
|
||||
+ tst.ignore_hw_compat = st->ignore_hw_compat;
|
||||
switch(load_super1(&tst, fd, devname)) {
|
||||
case 0: super = tst.sb;
|
||||
if (bestvers == -1 ||
|
||||
@@ -2312,7 +2319,6 @@ static int load_super1(struct supertype *st, int fd, char *devname)
|
||||
free(super);
|
||||
return 2;
|
||||
}
|
||||
- st->sb = super;
|
||||
|
||||
bsb = (struct bitmap_super_s *)(((char*)super)+MAX_SB_SIZE);
|
||||
|
||||
@@ -2322,6 +2328,21 @@ static int load_super1(struct supertype *st, int fd, char *devname)
|
||||
if (st->data_offset == INVALID_SECTORS)
|
||||
st->data_offset = __le64_to_cpu(super->data_offset);
|
||||
|
||||
+ if (st->minor_version >= 1 &&
|
||||
+ st->ignore_hw_compat == 0 &&
|
||||
+ (dsize < (__le64_to_cpu(super->data_offset) +
|
||||
+ __le64_to_cpu(super->size))
|
||||
+ ||
|
||||
+ dsize < (__le64_to_cpu(super->data_offset) +
|
||||
+ __le64_to_cpu(super->data_size)))) {
|
||||
+ if (devname)
|
||||
+ pr_err("Device %s is not large enough for data described in superblock\n",
|
||||
+ devname);
|
||||
+ free(super);
|
||||
+ return 2;
|
||||
+ }
|
||||
+ st->sb = super;
|
||||
+
|
||||
/* Now check on the bitmap superblock */
|
||||
if ((__le32_to_cpu(super->feature_map)&MD_FEATURE_BITMAP_OFFSET) == 0)
|
||||
return 0;
|
||||
--
|
||||
2.38.1
|
||||
|
616
0054-mdadm-Correct-typos-punctuation-and-grammar-in-man.patch
Normal file
616
0054-mdadm-Correct-typos-punctuation-and-grammar-in-man.patch
Normal file
@ -0,0 +1,616 @@
|
||||
From 1a386f804d8392b849b3362da6b0157b0db83091 Mon Sep 17 00:00:00 2001
|
||||
From: Mateusz Grzonka <mateusz.grzonka@intel.com>
|
||||
Date: Fri, 12 Aug 2022 16:52:12 +0200
|
||||
Subject: [PATCH 54/63] mdadm: Correct typos, punctuation and grammar in man
|
||||
|
||||
Signed-off-by: Mateusz Grzonka <mateusz.grzonka@intel.com>
|
||||
Reviewed-by: Wol <anthony@youngman.org.uk>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
mdadm.8.in | 178 ++++++++++++++++++++++++++---------------------------
|
||||
1 file changed, 88 insertions(+), 90 deletions(-)
|
||||
|
||||
diff --git a/mdadm.8.in b/mdadm.8.in
|
||||
index f2736226..70c79d1e 100644
|
||||
--- a/mdadm.8.in
|
||||
+++ b/mdadm.8.in
|
||||
@@ -158,7 +158,7 @@ adding new spares and removing faulty devices.
|
||||
.B Misc
|
||||
This is an 'everything else' mode that supports operations on active
|
||||
arrays, operations on component devices such as erasing old superblocks, and
|
||||
-information gathering operations.
|
||||
+information-gathering operations.
|
||||
.\"This mode allows operations on independent devices such as examine MD
|
||||
.\"superblocks, erasing old superblocks and stopping active arrays.
|
||||
|
||||
@@ -231,12 +231,12 @@ mode to be assumed.
|
||||
|
||||
.TP
|
||||
.BR \-h ", " \-\-help
|
||||
-Display general help message or, after one of the above options, a
|
||||
+Display a general help message or, after one of the above options, a
|
||||
mode-specific help message.
|
||||
|
||||
.TP
|
||||
.B \-\-help\-options
|
||||
-Display more detailed help about command line parsing and some commonly
|
||||
+Display more detailed help about command-line parsing and some commonly
|
||||
used options.
|
||||
|
||||
.TP
|
||||
@@ -266,7 +266,7 @@ the exact meaning of this option in different contexts.
|
||||
|
||||
.TP
|
||||
.BR \-c ", " \-\-config=
|
||||
-Specify the config file or directory. If not specified, default config file
|
||||
+Specify the config file or directory. If not specified, the default config file
|
||||
and default conf.d directory will be used. See
|
||||
.BR mdadm.conf (5)
|
||||
for more details.
|
||||
@@ -379,7 +379,7 @@ When creating an array, the
|
||||
.B homehost
|
||||
will be recorded in the metadata. For version-1 superblocks, it will
|
||||
be prefixed to the array name. For version-0.90 superblocks, part of
|
||||
-the SHA1 hash of the hostname will be stored in the later half of the
|
||||
+the SHA1 hash of the hostname will be stored in the latter half of the
|
||||
UUID.
|
||||
|
||||
When reporting information about an array, any array which is tagged
|
||||
@@ -388,7 +388,7 @@ for the given homehost will be reported as such.
|
||||
When using Auto-Assemble, only arrays tagged for the given homehost
|
||||
will be allowed to use 'local' names (i.e. not ending in '_' followed
|
||||
by a digit string). See below under
|
||||
-.BR "Auto Assembly" .
|
||||
+.BR "Auto-Assembly" .
|
||||
|
||||
The special name "\fBany\fP" can be used as a wild card. If an array
|
||||
is created with
|
||||
@@ -403,7 +403,7 @@ When
|
||||
.I mdadm
|
||||
needs to print the name for a device it normally finds the name in
|
||||
.B /dev
|
||||
-which refers to the device and is shortest. When a path component is
|
||||
+which refers to the device and is the shortest. When a path component is
|
||||
given with
|
||||
.B \-\-prefer
|
||||
.I mdadm
|
||||
@@ -478,9 +478,9 @@ still be larger than any replacement.
|
||||
|
||||
This option can be used with
|
||||
.B \-\-create
|
||||
-for determining initial size of an array. For external metadata,
|
||||
+for determining the initial size of an array. For external metadata,
|
||||
it can be used on a volume, but not on a container itself.
|
||||
-Setting initial size of
|
||||
+Setting the initial size of
|
||||
.B RAID 0
|
||||
array is only valid for external metadata.
|
||||
|
||||
@@ -545,20 +545,20 @@ Clustered arrays do not support this parameter yet.
|
||||
|
||||
.TP
|
||||
.BR \-c ", " \-\-chunk=
|
||||
-Specify chunk size of kilobytes. The default when creating an
|
||||
+Specify chunk size in kilobytes. The default when creating an
|
||||
array is 512KB. To ensure compatibility with earlier versions, the
|
||||
default when building an array with no persistent metadata is 64KB.
|
||||
This is only meaningful for RAID0, RAID4, RAID5, RAID6, and RAID10.
|
||||
|
||||
RAID4, RAID5, RAID6, and RAID10 require the chunk size to be a power
|
||||
-of 2. In any case it must be a multiple of 4KB.
|
||||
+of 2, with minimal chunk size being 4KB.
|
||||
|
||||
A suffix of 'K', 'M', 'G' or 'T' can be given to indicate Kilobytes,
|
||||
Megabytes, Gigabytes or Terabytes respectively.
|
||||
|
||||
.TP
|
||||
.BR \-\-rounding=
|
||||
-Specify rounding factor for a Linear array. The size of each
|
||||
+Specify the rounding factor for a Linear array. The size of each
|
||||
component will be rounded down to a multiple of this size.
|
||||
This is a synonym for
|
||||
.B \-\-chunk
|
||||
@@ -655,7 +655,8 @@ option to set subsequent failure modes.
|
||||
and "flush" will clear any persistent faults.
|
||||
|
||||
The layout options for RAID10 are one of 'n', 'o' or 'f' followed
|
||||
-by a small number. The default is 'n2'. The supported options are:
|
||||
+by a small number signifying the number of copies of each datablock.
|
||||
+The default is 'n2'. The supported options are:
|
||||
|
||||
.I 'n'
|
||||
signals 'near' copies. Multiple copies of one data block are at
|
||||
@@ -673,7 +674,7 @@ signals 'far' copies
|
||||
(multiple copies have very different offsets).
|
||||
See md(4) for more detail about 'near', 'offset', and 'far'.
|
||||
|
||||
-The number is the number of copies of each datablock. 2 is normal, 3
|
||||
+As for the number of copies of each data block, 2 is normal, 3
|
||||
can be useful. This number can be at most equal to the number of
|
||||
devices in the array. It does not need to divide evenly into that
|
||||
number (e.g. it is perfectly legal to have an 'n2' layout for an array
|
||||
@@ -684,7 +685,7 @@ A bug introduced in Linux 3.14 means that RAID0 arrays
|
||||
started using a different layout. This could lead to
|
||||
data corruption. Since Linux 5.4 (and various stable releases that received
|
||||
backports), the kernel will not accept such an array unless
|
||||
-a layout is explictly set. It can be set to
|
||||
+a layout is explicitly set. It can be set to
|
||||
.RB ' original '
|
||||
or
|
||||
.RB ' alternate '.
|
||||
@@ -760,13 +761,13 @@ or by selecting a different consistency policy with
|
||||
|
||||
.TP
|
||||
.BR \-\-bitmap\-chunk=
|
||||
-Set the chunksize of the bitmap. Each bit corresponds to that many
|
||||
+Set the chunk size of the bitmap. Each bit corresponds to that many
|
||||
Kilobytes of storage.
|
||||
-When using a file based bitmap, the default is to use the smallest
|
||||
-size that is at-least 4 and requires no more than 2^21 chunks.
|
||||
+When using a file-based bitmap, the default is to use the smallest
|
||||
+size that is at least 4 and requires no more than 2^21 chunks.
|
||||
When using an
|
||||
.B internal
|
||||
-bitmap, the chunksize defaults to 64Meg, or larger if necessary to
|
||||
+bitmap, the chunk size defaults to 64Meg, or larger if necessary to
|
||||
fit the bitmap into the available space.
|
||||
|
||||
A suffix of 'K', 'M', 'G' or 'T' can be given to indicate Kilobytes,
|
||||
@@ -840,7 +841,7 @@ can be used with that command to avoid the automatic resync.
|
||||
.BR \-\-backup\-file=
|
||||
This is needed when
|
||||
.B \-\-grow
|
||||
-is used to increase the number of raid-devices in a RAID5 or RAID6 if
|
||||
+is used to increase the number of raid devices in a RAID5 or RAID6 if
|
||||
there are no spare devices available, or to shrink, change RAID level
|
||||
or layout. See the GROW MODE section below on RAID\-DEVICES CHANGES.
|
||||
The file must be stored on a separate device, not on the RAID array
|
||||
@@ -879,7 +880,7 @@ When creating an array,
|
||||
.B \-\-data\-offset
|
||||
can be specified as
|
||||
.BR variable .
|
||||
-In the case each member device is expected to have a offset appended
|
||||
+In the case each member device is expected to have an offset appended
|
||||
to the name, separated by a colon. This makes it possible to recreate
|
||||
exactly an array which has varying data offsets (as can happen when
|
||||
different versions of
|
||||
@@ -943,7 +944,7 @@ Insist that
|
||||
.I mdadm
|
||||
accept the geometry and layout specified without question. Normally
|
||||
.I mdadm
|
||||
-will not allow creation of an array with only one device, and will try
|
||||
+will not allow the creation of an array with only one device, and will try
|
||||
to create a RAID5 array with one missing drive (as this makes the
|
||||
initial resync work faster). With
|
||||
.BR \-\-force ,
|
||||
@@ -1004,7 +1005,7 @@ number added, e.g.
|
||||
If the md device name is in a 'standard' format as described in DEVICE
|
||||
NAMES, then it will be created, if necessary, with the appropriate
|
||||
device number based on that name. If the device name is not in one of these
|
||||
-formats, then a unused device number will be allocated. The device
|
||||
+formats, then an unused device number will be allocated. The device
|
||||
number will be considered unused if there is no active array for that
|
||||
number, and there is no entry in /dev for that number and with a
|
||||
non-standard name. Names that are not in 'standard' format are only
|
||||
@@ -1032,25 +1033,25 @@ then
|
||||
.B \-\-add
|
||||
can be used to add some extra devices to be included in the array.
|
||||
In most cases this is not needed as the extra devices can be added as
|
||||
-spares first, and then the number of raid-disks can be changed.
|
||||
-However for RAID0, it is not possible to add spares. So to increase
|
||||
+spares first, and then the number of raid disks can be changed.
|
||||
+However, for RAID0 it is not possible to add spares. So to increase
|
||||
the number of devices in a RAID0, it is necessary to set the new
|
||||
number of devices, and to add the new devices, in the same command.
|
||||
|
||||
.TP
|
||||
.BR \-\-nodes
|
||||
-Only works when the array is for clustered environment. It specifies
|
||||
+Only works when the array is created for a clustered environment. It specifies
|
||||
the maximum number of nodes in the cluster that will use this device
|
||||
simultaneously. If not specified, this defaults to 4.
|
||||
|
||||
.TP
|
||||
.BR \-\-write-journal
|
||||
Specify journal device for the RAID-4/5/6 array. The journal device
|
||||
-should be a SSD with reasonable lifetime.
|
||||
+should be an SSD with a reasonable lifetime.
|
||||
|
||||
.TP
|
||||
.BR \-k ", " \-\-consistency\-policy=
|
||||
-Specify how the array maintains consistency in case of unexpected shutdown.
|
||||
+Specify how the array maintains consistency in the case of an unexpected shutdown.
|
||||
Only relevant for RAID levels with redundancy.
|
||||
Currently supported options are:
|
||||
.RS
|
||||
@@ -1058,7 +1059,7 @@ Currently supported options are:
|
||||
.TP
|
||||
.B resync
|
||||
Full resync is performed and all redundancy is regenerated when the array is
|
||||
-started after unclean shutdown.
|
||||
+started after an unclean shutdown.
|
||||
|
||||
.TP
|
||||
.B bitmap
|
||||
@@ -1067,8 +1068,8 @@ Resync assisted by a write-intent bitmap. Implicitly selected when using
|
||||
|
||||
.TP
|
||||
.B journal
|
||||
-For RAID levels 4/5/6, journal device is used to log transactions and replay
|
||||
-after unclean shutdown. Implicitly selected when using
|
||||
+For RAID levels 4/5/6, the journal device is used to log transactions and replay
|
||||
+after an unclean shutdown. Implicitly selected when using
|
||||
.BR \-\-write\-journal .
|
||||
|
||||
.TP
|
||||
@@ -1237,7 +1238,7 @@ This can be useful if
|
||||
reports a different "Preferred Minor" to
|
||||
.BR \-\-detail .
|
||||
In some cases this update will be performed automatically
|
||||
-by the kernel driver. In particular the update happens automatically
|
||||
+by the kernel driver. In particular, the update happens automatically
|
||||
at the first write to an array with redundancy (RAID level 1 or
|
||||
greater) on a 2.6 (or later) kernel.
|
||||
|
||||
@@ -1277,7 +1278,7 @@ For version-1 superblocks, this involves updating the name.
|
||||
The
|
||||
.B home\-cluster
|
||||
option will change the cluster name as recorded in the superblock and
|
||||
-bitmap. This option only works for clustered environment.
|
||||
+bitmap. This option only works for a clustered environment.
|
||||
|
||||
The
|
||||
.B resync
|
||||
@@ -1390,10 +1391,10 @@ This option should be used with great caution.
|
||||
|
||||
.TP
|
||||
.BR \-\-freeze\-reshape
|
||||
-Option is intended to be used in start-up scripts during initrd boot phase.
|
||||
-When array under reshape is assembled during initrd phase, this option
|
||||
-stops reshape after reshape critical section is being restored. This happens
|
||||
-before file system pivot operation and avoids loss of file system context.
|
||||
+This option is intended to be used in start-up scripts during the initrd boot phase.
|
||||
+When the array under reshape is assembled during the initrd phase, this option
|
||||
+stops the reshape after the reshape-critical section has been restored. This happens
|
||||
+before the file system pivot operation and avoids loss of filesystem context.
|
||||
Losing file system context would cause reshape to be broken.
|
||||
|
||||
Reshape can be continued later using the
|
||||
@@ -1437,9 +1438,9 @@ re\-add a device that was previously removed from an array.
|
||||
If the metadata on the device reports that it is a member of the
|
||||
array, and the slot that it used is still vacant, then the device will
|
||||
be added back to the array in the same position. This will normally
|
||||
-cause the data for that device to be recovered. However based on the
|
||||
+cause the data for that device to be recovered. However, based on the
|
||||
event count on the device, the recovery may only require sections that
|
||||
-are flagged a write-intent bitmap to be recovered or may not require
|
||||
+are flagged by a write-intent bitmap to be recovered or may not require
|
||||
any recovery at all.
|
||||
|
||||
When used on an array that has no metadata (i.e. it was built with
|
||||
@@ -1447,13 +1448,12 @@ When used on an array that has no metadata (i.e. it was built with
|
||||
it will be assumed that bitmap-based recovery is enough to make the
|
||||
device fully consistent with the array.
|
||||
|
||||
-When used with v1.x metadata,
|
||||
.B \-\-re\-add
|
||||
-can be accompanied by
|
||||
+can also be accompanied by
|
||||
.BR \-\-update=devicesize ,
|
||||
.BR \-\-update=bbl ", or"
|
||||
.BR \-\-update=no\-bbl .
|
||||
-See the description of these option when used in Assemble mode for an
|
||||
+See descriptions of these options when used in Assemble mode for an
|
||||
explanation of their use.
|
||||
|
||||
If the device name given is
|
||||
@@ -1480,7 +1480,7 @@ Add a device as a spare. This is similar to
|
||||
except that it does not attempt
|
||||
.B \-\-re\-add
|
||||
first. The device will be added as a spare even if it looks like it
|
||||
-could be an recent member of the array.
|
||||
+could be a recent member of the array.
|
||||
|
||||
.TP
|
||||
.BR \-r ", " \-\-remove
|
||||
@@ -1497,12 +1497,12 @@ and names like
|
||||
.B set-A
|
||||
can be given to
|
||||
.BR \-\-remove .
|
||||
-The first causes all failed device to be removed. The second causes
|
||||
+The first causes all failed devices to be removed. The second causes
|
||||
any device which is no longer connected to the system (i.e an 'open'
|
||||
returns
|
||||
.BR ENXIO )
|
||||
to be removed.
|
||||
-The third will remove a set as describe below under
|
||||
+The third will remove a set as described below under
|
||||
.BR \-\-fail .
|
||||
|
||||
.TP
|
||||
@@ -1519,7 +1519,7 @@ For RAID10 arrays where the number of copies evenly divides the number
|
||||
of devices, the devices can be conceptually divided into sets where
|
||||
each set contains a single complete copy of the data on the array.
|
||||
Sometimes a RAID10 array will be configured so that these sets are on
|
||||
-separate controllers. In this case all the devices in one set can be
|
||||
+separate controllers. In this case, all the devices in one set can be
|
||||
failed by giving a name like
|
||||
.B set\-A
|
||||
or
|
||||
@@ -1549,9 +1549,9 @@ This can follow a list of
|
||||
.B \-\-replace
|
||||
devices. The devices listed after
|
||||
.B \-\-with
|
||||
-will be preferentially used to replace the devices listed after
|
||||
+will preferentially be used to replace the devices listed after
|
||||
.BR \-\-replace .
|
||||
-These device must already be spare devices in the array.
|
||||
+These devices must already be spare devices in the array.
|
||||
|
||||
.TP
|
||||
.BR \-\-write\-mostly
|
||||
@@ -1574,8 +1574,8 @@ the device is found or <slot>:missing in case the device is not found.
|
||||
|
||||
.TP
|
||||
.BR \-\-add-journal
|
||||
-Add journal to an existing array, or recreate journal for RAID-4/5/6 array
|
||||
-that lost a journal device. To avoid interrupting on-going write opertions,
|
||||
+Add a journal to an existing array, or recreate journal for a RAID-4/5/6 array
|
||||
+that lost a journal device. To avoid interrupting ongoing write operations,
|
||||
.B \-\-add-journal
|
||||
only works for array in Read-Only state.
|
||||
|
||||
@@ -1631,9 +1631,9 @@ Print details of one or more md devices.
|
||||
.TP
|
||||
.BR \-\-detail\-platform
|
||||
Print details of the platform's RAID capabilities (firmware / hardware
|
||||
-topology) for a given metadata format. If used without argument, mdadm
|
||||
+topology) for a given metadata format. If used without an argument, mdadm
|
||||
will scan all controllers looking for their capabilities. Otherwise, mdadm
|
||||
-will only look at the controller specified by the argument in form of an
|
||||
+will only look at the controller specified by the argument in the form of an
|
||||
absolute filepath or a link, e.g.
|
||||
.IR /sys/devices/pci0000:00/0000:00:1f.2 .
|
||||
|
||||
@@ -1742,8 +1742,8 @@ the block where the superblock would be is overwritten even if it
|
||||
doesn't appear to be valid.
|
||||
|
||||
.B Note:
|
||||
-Be careful to call \-\-zero\-superblock with clustered raid, make sure
|
||||
-array isn't used or assembled in other cluster node before execute it.
|
||||
+Be careful when calling \-\-zero\-superblock with clustered raid. Make sure
|
||||
+the array isn't used or assembled in another cluster node before executing it.
|
||||
|
||||
.TP
|
||||
.B \-\-kill\-subarray=
|
||||
@@ -1790,7 +1790,7 @@ For each md device given, or each device in /proc/mdstat if
|
||||
is given, arrange for the array to be marked clean as soon as possible.
|
||||
.I mdadm
|
||||
will return with success if the array uses external metadata and we
|
||||
-successfully waited. For native arrays this returns immediately as the
|
||||
+successfully waited. For native arrays, this returns immediately as the
|
||||
kernel handles dirty-clean transitions at shutdown. No action is taken
|
||||
if safe-mode handling is disabled.
|
||||
|
||||
@@ -1830,7 +1830,7 @@ uses to help track which arrays are currently being assembled.
|
||||
|
||||
.TP
|
||||
.BR \-\-run ", " \-R
|
||||
-Run any array assembled as soon as a minimal number of devices are
|
||||
+Run any array assembled as soon as a minimal number of devices is
|
||||
available, rather than waiting until all expected devices are present.
|
||||
|
||||
.TP
|
||||
@@ -1860,7 +1860,7 @@ Only used with \-\-fail. The 'path' given will be recorded so that if
|
||||
a new device appears at the same location it can be automatically
|
||||
added to the same array. This allows the failed device to be
|
||||
automatically replaced by a new device without metadata if it appears
|
||||
-at specified path. This option is normally only set by a
|
||||
+at specified path. This option is normally only set by an
|
||||
.I udev
|
||||
script.
|
||||
|
||||
@@ -1961,7 +1961,7 @@ Usage:
|
||||
.PP
|
||||
This usage assembles one or more RAID arrays from pre-existing components.
|
||||
For each array, mdadm needs to know the md device, the identity of the
|
||||
-array, and a number of component-devices. These can be found in a number of ways.
|
||||
+array, and the number of component devices. These can be found in a number of ways.
|
||||
|
||||
In the first usage example (without the
|
||||
.BR \-\-scan )
|
||||
@@ -2001,7 +2001,7 @@ The config file is only used if explicitly named with
|
||||
.B \-\-config
|
||||
or requested with (a possibly implicit)
|
||||
.BR \-\-scan .
|
||||
-In the later case, default config file is used. See
|
||||
+In the latter case, the default config file is used. See
|
||||
.BR mdadm.conf (5)
|
||||
for more details.
|
||||
|
||||
@@ -2039,14 +2039,14 @@ detects that udev is not configured, it will create the devices in
|
||||
.B /dev
|
||||
itself.
|
||||
|
||||
-In Linux kernels prior to version 2.6.28 there were two distinctly
|
||||
-different types of md devices that could be created: one that could be
|
||||
+In Linux kernels prior to version 2.6.28 there were two distinct
|
||||
+types of md devices that could be created: one that could be
|
||||
partitioned using standard partitioning tools and one that could not.
|
||||
-Since 2.6.28 that distinction is no longer relevant as both type of
|
||||
+Since 2.6.28 that distinction is no longer relevant as both types of
|
||||
devices can be partitioned.
|
||||
.I mdadm
|
||||
will normally create the type that originally could not be partitioned
|
||||
-as it has a well defined major number (9).
|
||||
+as it has a well-defined major number (9).
|
||||
|
||||
Prior to 2.6.28, it is important that mdadm chooses the correct type
|
||||
of array device to use. This can be controlled with the
|
||||
@@ -2066,7 +2066,7 @@ can also be given in the configuration file as a word starting
|
||||
.B auto=
|
||||
on the ARRAY line for the relevant array.
|
||||
|
||||
-.SS Auto Assembly
|
||||
+.SS Auto-Assembly
|
||||
When
|
||||
.B \-\-assemble
|
||||
is used with
|
||||
@@ -2122,11 +2122,11 @@ See
|
||||
.IR mdadm.conf (5)
|
||||
for further details.
|
||||
|
||||
-Note: Auto assembly cannot be used for assembling and activating some
|
||||
+Note: Auto-assembly cannot be used for assembling and activating some
|
||||
arrays which are undergoing reshape. In particular as the
|
||||
.B backup\-file
|
||||
-cannot be given, any reshape which requires a backup-file to continue
|
||||
-cannot be started by auto assembly. An array which is growing to more
|
||||
+cannot be given, any reshape which requires a backup file to continue
|
||||
+cannot be started by auto-assembly. An array which is growing to more
|
||||
devices and has passed the critical section can be assembled using
|
||||
auto-assembly.
|
||||
|
||||
@@ -2233,7 +2233,7 @@ When creating a partition based array, using
|
||||
.I mdadm
|
||||
with version-1.x metadata, the partition type should be set to
|
||||
.B 0xDA
|
||||
-(non fs-data). This type selection allows for greater precision since
|
||||
+(non fs-data). This type of selection allows for greater precision since
|
||||
using any other [RAID auto-detect (0xFD) or a GNU/Linux partition (0x83)],
|
||||
might create problems in the event of array recovery through a live cdrom.
|
||||
|
||||
@@ -2249,7 +2249,7 @@ when creating a v0.90 array will silently override any
|
||||
setting.
|
||||
.\"If the
|
||||
.\".B \-\-size
|
||||
-.\"option is given, it is not necessary to list any component-devices in this command.
|
||||
+.\"option is given, it is not necessary to list any component devices in this command.
|
||||
.\"They can be added later, before a
|
||||
.\".B \-\-run.
|
||||
.\"If no
|
||||
@@ -2263,7 +2263,7 @@ requested with the
|
||||
.B \-\-bitmap
|
||||
option or a different consistency policy is selected with the
|
||||
.B \-\-consistency\-policy
|
||||
-option. In any case space for a bitmap will be reserved so that one
|
||||
+option. In any case, space for a bitmap will be reserved so that one
|
||||
can be added later with
|
||||
.BR "\-\-grow \-\-bitmap=internal" .
|
||||
|
||||
@@ -2313,7 +2313,7 @@ will firstly mark
|
||||
as faulty in
|
||||
.B /dev/md0
|
||||
and will then remove it from the array and finally add it back
|
||||
-in as a spare. However only one md array can be affected by a single
|
||||
+in as a spare. However, only one md array can be affected by a single
|
||||
command.
|
||||
|
||||
When a device is added to an active array, mdadm checks to see if it
|
||||
@@ -2458,14 +2458,14 @@ config file to be examined.
|
||||
If the device contains RAID metadata, a file will be created in the
|
||||
.I directory
|
||||
and the metadata will be written to it. The file will be the same
|
||||
-size as the device and have the metadata written in the file at the
|
||||
-same locate that it exists in the device. However the file will be "sparse" so
|
||||
+size as the device and will have the metadata written at the
|
||||
+same location as it exists in the device. However, the file will be "sparse" so
|
||||
that only those blocks containing metadata will be allocated. The
|
||||
total space used will be small.
|
||||
|
||||
-The file name used in the
|
||||
+The filename used in the
|
||||
.I directory
|
||||
-will be the base name of the device. Further if any links appear in
|
||||
+will be the base name of the device. Further, if any links appear in
|
||||
.I /dev/disk/by-id
|
||||
which point to the device, then hard links to the file will be created
|
||||
in
|
||||
@@ -2567,7 +2567,7 @@ and if the destination array has a failed drive but no spares.
|
||||
|
||||
If any devices are listed on the command line,
|
||||
.I mdadm
|
||||
-will only monitor those devices. Otherwise all arrays listed in the
|
||||
+will only monitor those devices, otherwise, all arrays listed in the
|
||||
configuration file will be monitored. Further, if
|
||||
.B \-\-scan
|
||||
is given, then any other md devices that appear in
|
||||
@@ -2624,10 +2624,10 @@ check, repair). (syslog priority: Warning)
|
||||
.BI Rebuild NN
|
||||
Where
|
||||
.I NN
|
||||
-is a two-digit number (ie. 05, 48). This indicates that rebuild
|
||||
-has passed that many percent of the total. The events are generated
|
||||
-with fixed increment since 0. Increment size may be specified with
|
||||
-a commandline option (default is 20). (syslog priority: Warning)
|
||||
+is a two-digit number (eg. 05, 48). This indicates that the rebuild
|
||||
+has reached that percentage of the total. The events are generated
|
||||
+at a fixed increment from 0. The increment size may be specified with
|
||||
+a command-line option (the default is 20). (syslog priority: Warning)
|
||||
|
||||
.TP
|
||||
.B RebuildFinished
|
||||
@@ -2735,8 +2735,8 @@ When
|
||||
detects that an array in a spare group has fewer active
|
||||
devices than necessary for the complete array, and has no spare
|
||||
devices, it will look for another array in the same spare group that
|
||||
-has a full complement of working drive and a spare. It will then
|
||||
-attempt to remove the spare from the second drive and add it to the
|
||||
+has a full complement of working drives and a spare. It will then
|
||||
+attempt to remove the spare from the second array and add it to the
|
||||
first.
|
||||
If the removal succeeds but the adding fails, then it is added back to
|
||||
the original array.
|
||||
@@ -2750,10 +2750,8 @@ and then follow similar steps as above if a matching spare is found.
|
||||
.SH GROW MODE
|
||||
The GROW mode is used for changing the size or shape of an active
|
||||
array.
|
||||
-For this to work, the kernel must support the necessary change.
|
||||
-Various types of growth are being added during 2.6 development.
|
||||
|
||||
-Currently the supported changes include
|
||||
+During the kernel 2.6 era the following changes were added:
|
||||
.IP \(bu 4
|
||||
change the "size" attribute for RAID1, RAID4, RAID5 and RAID6.
|
||||
.IP \(bu 4
|
||||
@@ -2796,8 +2794,8 @@ use more than half of a spare device for backup space.
|
||||
|
||||
.SS SIZE CHANGES
|
||||
Normally when an array is built the "size" is taken from the smallest
|
||||
-of the drives. If all the small drives in an arrays are, one at a
|
||||
-time, removed and replaced with larger drives, then you could have an
|
||||
+of the drives. If all the small drives in an arrays are, over time,
|
||||
+removed and replaced with larger drives, then you could have an
|
||||
array of large drives with only a small amount used. In this
|
||||
situation, changing the "size" with "GROW" mode will allow the extra
|
||||
space to start being used. If the size is increased in this way, a
|
||||
@@ -2812,7 +2810,7 @@ after growing, or to reduce its size
|
||||
.B prior
|
||||
to shrinking the array.
|
||||
|
||||
-Also the size of an array cannot be changed while it has an active
|
||||
+Also, the size of an array cannot be changed while it has an active
|
||||
bitmap. If an array has a bitmap, it must be removed before the size
|
||||
can be changed. Once the change is complete a new bitmap can be created.
|
||||
|
||||
@@ -2892,7 +2890,7 @@ long time. A
|
||||
is required. If the array is not simultaneously being grown or
|
||||
shrunk, so that the array size will remain the same - for example,
|
||||
reshaping a 3-drive RAID5 into a 4-drive RAID6 - the backup file will
|
||||
-be used not just for a "cricital section" but throughout the reshape
|
||||
+be used not just for a "critical section" but throughout the reshape
|
||||
operation, as described below under LAYOUT CHANGES.
|
||||
|
||||
.SS CHUNK-SIZE AND LAYOUT CHANGES
|
||||
@@ -2910,7 +2908,7 @@ slowly.
|
||||
If the reshape is interrupted for any reason, this backup file must be
|
||||
made available to
|
||||
.B "mdadm --assemble"
|
||||
-so the array can be reassembled. Consequently the file cannot be
|
||||
+so the array can be reassembled. Consequently, the file cannot be
|
||||
stored on the device being reshaped.
|
||||
|
||||
|
||||
--
|
||||
2.38.1
|
||||
|
91
0055-Manage-Block-unsafe-member-failing.patch
Normal file
91
0055-Manage-Block-unsafe-member-failing.patch
Normal file
@ -0,0 +1,91 @@
|
||||
From fc6fd4063769f4194c3fb8f77b32b2819e140fb9 Mon Sep 17 00:00:00 2001
|
||||
From: Mateusz Kusiak <mateusz.kusiak@intel.com>
|
||||
Date: Thu, 18 Aug 2022 11:47:21 +0200
|
||||
Subject: [PATCH 55/63] Manage: Block unsafe member failing
|
||||
|
||||
Kernel may or may not block mdadm from removing member device if it
|
||||
will cause arrays failed state. It depends on raid personality
|
||||
implementation in kernel.
|
||||
Add verification on requested removal path (#mdadm --set-faulty
|
||||
command).
|
||||
|
||||
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
Manage.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 52 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Manage.c b/Manage.c
|
||||
index a142f8bd..b1d0e630 100644
|
||||
--- a/Manage.c
|
||||
+++ b/Manage.c
|
||||
@@ -1285,6 +1285,50 @@ int Manage_with(struct supertype *tst, int fd, struct mddev_dev *dv,
|
||||
return -1;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * is_remove_safe() - Check if remove is safe.
|
||||
+ * @array: Array info.
|
||||
+ * @fd: Array file descriptor.
|
||||
+ * @devname: Name of device to remove.
|
||||
+ * @verbose: Verbose.
|
||||
+ *
|
||||
+ * The function determines if array will be operational
|
||||
+ * after removing &devname.
|
||||
+ *
|
||||
+ * Return: True if array will be operational, false otherwise.
|
||||
+ */
|
||||
+bool is_remove_safe(mdu_array_info_t *array, const int fd, char *devname, const int verbose)
|
||||
+{
|
||||
+ dev_t devid = devnm2devid(devname + 5);
|
||||
+ struct mdinfo *mdi = sysfs_read(fd, NULL, GET_DEVS | GET_DISKS | GET_STATE);
|
||||
+
|
||||
+ if (!mdi) {
|
||||
+ if (verbose)
|
||||
+ pr_err("Failed to read sysfs attributes for %s\n", devname);
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ char *avail = xcalloc(array->raid_disks, sizeof(char));
|
||||
+
|
||||
+ for (mdi = mdi->devs; mdi; mdi = mdi->next) {
|
||||
+ if (mdi->disk.raid_disk < 0)
|
||||
+ continue;
|
||||
+ if (!(mdi->disk.state & (1 << MD_DISK_SYNC)))
|
||||
+ continue;
|
||||
+ if (makedev(mdi->disk.major, mdi->disk.minor) == devid)
|
||||
+ continue;
|
||||
+ avail[mdi->disk.raid_disk] = 1;
|
||||
+ }
|
||||
+ sysfs_free(mdi);
|
||||
+
|
||||
+ bool is_enough = enough(array->level, array->raid_disks,
|
||||
+ array->layout, (array->state & 1),
|
||||
+ avail);
|
||||
+
|
||||
+ free(avail);
|
||||
+ return is_enough;
|
||||
+}
|
||||
+
|
||||
int Manage_subdevs(char *devname, int fd,
|
||||
struct mddev_dev *devlist, int verbose, int test,
|
||||
char *update, int force)
|
||||
@@ -1598,7 +1642,14 @@ int Manage_subdevs(char *devname, int fd,
|
||||
break;
|
||||
|
||||
case 'f': /* set faulty */
|
||||
- /* FIXME check current member */
|
||||
+ if (!is_remove_safe(&array, fd, dv->devname, verbose)) {
|
||||
+ pr_err("Cannot remove %s from %s, array will be failed.\n",
|
||||
+ dv->devname, devname);
|
||||
+ if (sysfd >= 0)
|
||||
+ close(sysfd);
|
||||
+ goto abort;
|
||||
+ }
|
||||
+
|
||||
if ((sysfd >= 0 && write(sysfd, "faulty", 6) != 6) ||
|
||||
(sysfd < 0 && ioctl(fd, SET_DISK_FAULTY,
|
||||
rdev))) {
|
||||
--
|
||||
2.38.1
|
||||
|
112
0056-Monitor-Fix-statelist-memory-leaks.patch
Normal file
112
0056-Monitor-Fix-statelist-memory-leaks.patch
Normal file
@ -0,0 +1,112 @@
|
||||
From 55c10e4de13abe3e6934895e1fff7d2d20d0b2c2 Mon Sep 17 00:00:00 2001
|
||||
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
|
||||
Date: Thu, 1 Sep 2022 11:20:31 +0200
|
||||
Subject: [PATCH 56/63] Monitor: Fix statelist memory leaks
|
||||
|
||||
Free statelist in error path in Monitor initialization.
|
||||
|
||||
Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
Monitor.c | 40 +++++++++++++++++++++++++++++++---------
|
||||
1 file changed, 31 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/Monitor.c b/Monitor.c
|
||||
index 93f36ac0..b4e954c6 100644
|
||||
--- a/Monitor.c
|
||||
+++ b/Monitor.c
|
||||
@@ -74,6 +74,7 @@ static int add_new_arrays(struct mdstat_ent *mdstat, struct state **statelist,
|
||||
int test, struct alert_info *info);
|
||||
static void try_spare_migration(struct state *statelist, struct alert_info *info);
|
||||
static void link_containers_with_subarrays(struct state *list);
|
||||
+static void free_statelist(struct state *statelist);
|
||||
#ifndef NO_LIBUDEV
|
||||
static int check_udev_activity(void);
|
||||
#endif
|
||||
@@ -128,7 +129,6 @@ int Monitor(struct mddev_dev *devlist,
|
||||
*/
|
||||
|
||||
struct state *statelist = NULL;
|
||||
- struct state *st2;
|
||||
int finished = 0;
|
||||
struct mdstat_ent *mdstat = NULL;
|
||||
char *mailfrom;
|
||||
@@ -185,12 +185,14 @@ int Monitor(struct mddev_dev *devlist,
|
||||
continue;
|
||||
if (strcasecmp(mdlist->devname, "<ignore>") == 0)
|
||||
continue;
|
||||
+ if (!is_mddev(mdlist->devname)) {
|
||||
+ free_statelist(statelist);
|
||||
+ return 1;
|
||||
+ }
|
||||
|
||||
st = xcalloc(1, sizeof *st);
|
||||
snprintf(st->devname, MD_NAME_MAX + sizeof("/dev/md/"),
|
||||
"/dev/md/%s", basename(mdlist->devname));
|
||||
- if (!is_mddev(mdlist->devname))
|
||||
- return 1;
|
||||
st->next = statelist;
|
||||
st->devnm[0] = 0;
|
||||
st->percent = RESYNC_UNKNOWN;
|
||||
@@ -206,8 +208,10 @@ int Monitor(struct mddev_dev *devlist,
|
||||
for (dv = devlist; dv; dv = dv->next) {
|
||||
struct state *st;
|
||||
|
||||
- if (!is_mddev(dv->devname))
|
||||
+ if (!is_mddev(dv->devname)) {
|
||||
+ free_statelist(statelist);
|
||||
return 1;
|
||||
+ }
|
||||
|
||||
st = xcalloc(1, sizeof *st);
|
||||
mdlist = conf_get_ident(dv->devname);
|
||||
@@ -294,16 +298,16 @@ int Monitor(struct mddev_dev *devlist,
|
||||
for (stp = &statelist; (st = *stp) != NULL; ) {
|
||||
if (st->from_auto && st->err > 5) {
|
||||
*stp = st->next;
|
||||
- free(st->spare_group);
|
||||
+ if (st->spare_group)
|
||||
+ free(st->spare_group);
|
||||
+
|
||||
free(st);
|
||||
} else
|
||||
stp = &st->next;
|
||||
}
|
||||
}
|
||||
- for (st2 = statelist; st2; st2 = statelist) {
|
||||
- statelist = st2->next;
|
||||
- free(st2);
|
||||
- }
|
||||
+
|
||||
+ free_statelist(statelist);
|
||||
|
||||
if (pidfile)
|
||||
unlink(pidfile);
|
||||
@@ -1056,6 +1060,24 @@ static void link_containers_with_subarrays(struct state *list)
|
||||
}
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * free_statelist() - Frees statelist.
|
||||
+ * @statelist: statelist to free
|
||||
+ */
|
||||
+static void free_statelist(struct state *statelist)
|
||||
+{
|
||||
+ struct state *tmp = NULL;
|
||||
+
|
||||
+ while (statelist) {
|
||||
+ if (statelist->spare_group)
|
||||
+ free(statelist->spare_group);
|
||||
+
|
||||
+ tmp = statelist;
|
||||
+ statelist = statelist->next;
|
||||
+ free(tmp);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
#ifndef NO_LIBUDEV
|
||||
/* function: check_udev_activity
|
||||
* Description: Function waits for udev to finish
|
||||
--
|
||||
2.38.1
|
||||
|
@ -0,0 +1,64 @@
|
||||
From ea7a02a3294aae223e1329aed5da7f4aa3ac05c5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Old=C5=99ich=20Jedli=C4=8Dka?= <oldium.pro@gmail.com>
|
||||
Date: Wed, 31 Aug 2022 19:57:29 +0200
|
||||
Subject: [PATCH 57/63] mdadm: added support for Intel Alderlake RST on VMD
|
||||
platform
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Alderlake RST on VMD uses RstVmdV UEFI variable name, so detect it.
|
||||
|
||||
Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
|
||||
Reviewed-by: Kinga Tanska <kinga.tanska@linux.intel.com>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
platform-intel.c | 18 +++++++++++++-----
|
||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/platform-intel.c b/platform-intel.c
|
||||
index 5a8729e7..757f0b1b 100644
|
||||
--- a/platform-intel.c
|
||||
+++ b/platform-intel.c
|
||||
@@ -512,7 +512,8 @@ static const struct imsm_orom *find_imsm_hba_orom(struct sys_dev *hba)
|
||||
#define AHCI_PROP "RstSataV"
|
||||
#define AHCI_SSATA_PROP "RstsSatV"
|
||||
#define AHCI_TSATA_PROP "RsttSatV"
|
||||
-#define VMD_PROP "RstUefiV"
|
||||
+#define VROC_VMD_PROP "RstUefiV"
|
||||
+#define RST_VMD_PROP "RstVmdV"
|
||||
|
||||
#define VENDOR_GUID \
|
||||
EFI_GUID(0x193dfefa, 0xa445, 0x4302, 0x99, 0xd8, 0xef, 0x3a, 0xad, 0x1a, 0x04, 0xc6)
|
||||
@@ -605,6 +606,7 @@ const struct imsm_orom *find_imsm_efi(struct sys_dev *hba)
|
||||
struct orom_entry *ret;
|
||||
static const char * const sata_efivars[] = {AHCI_PROP, AHCI_SSATA_PROP,
|
||||
AHCI_TSATA_PROP};
|
||||
+ static const char * const vmd_efivars[] = {VROC_VMD_PROP, RST_VMD_PROP};
|
||||
unsigned long i;
|
||||
|
||||
if (check_env("IMSM_TEST_AHCI_EFI") || check_env("IMSM_TEST_SCU_EFI"))
|
||||
@@ -636,10 +638,16 @@ const struct imsm_orom *find_imsm_efi(struct sys_dev *hba)
|
||||
|
||||
break;
|
||||
case SYS_DEV_VMD:
|
||||
- if (!read_efi_variable(&orom, sizeof(orom), VMD_PROP,
|
||||
- VENDOR_GUID))
|
||||
- break;
|
||||
- return NULL;
|
||||
+ for (i = 0; i < ARRAY_SIZE(vmd_efivars); i++) {
|
||||
+ if (!read_efi_variable(&orom, sizeof(orom),
|
||||
+ vmd_efivars[i], VENDOR_GUID))
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (i == ARRAY_SIZE(vmd_efivars))
|
||||
+ return NULL;
|
||||
+
|
||||
+ break;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
--
|
||||
2.38.1
|
||||
|
111
0058-mdadm-Add-Documentation-entries-to-systemd-services.patch
Normal file
111
0058-mdadm-Add-Documentation-entries-to-systemd-services.patch
Normal file
@ -0,0 +1,111 @@
|
||||
From ea109700563d93704ebdc540c7770d874369f667 Mon Sep 17 00:00:00 2001
|
||||
From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
Date: Fri, 9 Sep 2022 15:50:33 +0200
|
||||
Subject: [PATCH 58/63] mdadm: Add Documentation entries to systemd services
|
||||
|
||||
Add documentation section.
|
||||
Copied from Debian.
|
||||
|
||||
Cc: Felix Lechner <felix.lechner@lease-up.com>
|
||||
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
Acked-by: Coly Li <colyli@suse.de>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
systemd/mdadm-grow-continue@.service | 1 +
|
||||
systemd/mdadm-last-resort@.service | 1 +
|
||||
systemd/mdcheck_continue.service | 3 ++-
|
||||
systemd/mdcheck_start.service | 1 +
|
||||
systemd/mdmon@.service | 1 +
|
||||
systemd/mdmonitor-oneshot.service | 1 +
|
||||
systemd/mdmonitor.service | 1 +
|
||||
7 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/systemd/mdadm-grow-continue@.service b/systemd/mdadm-grow-continue@.service
|
||||
index 9fdc8ec7..64b8254a 100644
|
||||
--- a/systemd/mdadm-grow-continue@.service
|
||||
+++ b/systemd/mdadm-grow-continue@.service
|
||||
@@ -8,6 +8,7 @@
|
||||
[Unit]
|
||||
Description=Manage MD Reshape on /dev/%I
|
||||
DefaultDependencies=no
|
||||
+Documentation=man:mdadm(8)
|
||||
|
||||
[Service]
|
||||
ExecStart=BINDIR/mdadm --grow --continue /dev/%I
|
||||
diff --git a/systemd/mdadm-last-resort@.service b/systemd/mdadm-last-resort@.service
|
||||
index efeb3f63..e9381125 100644
|
||||
--- a/systemd/mdadm-last-resort@.service
|
||||
+++ b/systemd/mdadm-last-resort@.service
|
||||
@@ -2,6 +2,7 @@
|
||||
Description=Activate md array %I even though degraded
|
||||
DefaultDependencies=no
|
||||
ConditionPathExists=!/sys/devices/virtual/block/%i/md/sync_action
|
||||
+Documentation=man:mdadm(8)
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
diff --git a/systemd/mdcheck_continue.service b/systemd/mdcheck_continue.service
|
||||
index 854317f1..f5324905 100644
|
||||
--- a/systemd/mdcheck_continue.service
|
||||
+++ b/systemd/mdcheck_continue.service
|
||||
@@ -7,7 +7,8 @@
|
||||
|
||||
[Unit]
|
||||
Description=MD array scrubbing - continuation
|
||||
-ConditionPathExistsGlob = /var/lib/mdcheck/MD_UUID_*
|
||||
+ConditionPathExistsGlob=/var/lib/mdcheck/MD_UUID_*
|
||||
+Documentation=man:mdadm(8)
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
diff --git a/systemd/mdcheck_start.service b/systemd/mdcheck_start.service
|
||||
index 3bb3d130..703a6583 100644
|
||||
--- a/systemd/mdcheck_start.service
|
||||
+++ b/systemd/mdcheck_start.service
|
||||
@@ -8,6 +8,7 @@
|
||||
[Unit]
|
||||
Description=MD array scrubbing
|
||||
Wants=mdcheck_continue.timer
|
||||
+Documentation=man:mdadm(8)
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
diff --git a/systemd/mdmon@.service b/systemd/mdmon@.service
|
||||
index 77533958..97a1acd9 100644
|
||||
--- a/systemd/mdmon@.service
|
||||
+++ b/systemd/mdmon@.service
|
||||
@@ -9,6 +9,7 @@
|
||||
Description=MD Metadata Monitor on /dev/%I
|
||||
DefaultDependencies=no
|
||||
Before=initrd-switch-root.target
|
||||
+Documentation=man:mdmon(8)
|
||||
|
||||
[Service]
|
||||
# mdmon should never complain due to lack of a platform,
|
||||
diff --git a/systemd/mdmonitor-oneshot.service b/systemd/mdmonitor-oneshot.service
|
||||
index 373955a2..ba86b44e 100644
|
||||
--- a/systemd/mdmonitor-oneshot.service
|
||||
+++ b/systemd/mdmonitor-oneshot.service
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
[Unit]
|
||||
Description=Reminder for degraded MD arrays
|
||||
+Documentation=man:mdadm(8)
|
||||
|
||||
[Service]
|
||||
Environment=MDADM_MONITOR_ARGS=--scan
|
||||
diff --git a/systemd/mdmonitor.service b/systemd/mdmonitor.service
|
||||
index 46f7b880..9c364785 100644
|
||||
--- a/systemd/mdmonitor.service
|
||||
+++ b/systemd/mdmonitor.service
|
||||
@@ -8,6 +8,7 @@
|
||||
[Unit]
|
||||
Description=MD array monitor
|
||||
DefaultDependencies=no
|
||||
+Documentation=man:mdadm(8)
|
||||
|
||||
[Service]
|
||||
Environment= MDADM_MONITOR_ARGS=--scan
|
||||
--
|
||||
2.38.1
|
||||
|
32
0059-ReadMe-fix-command-line-help.patch
Normal file
32
0059-ReadMe-fix-command-line-help.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From f7cbd810b639eb946ba1b3bddb1faefb9696de42 Mon Sep 17 00:00:00 2001
|
||||
From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
Date: Fri, 9 Sep 2022 15:50:34 +0200
|
||||
Subject: [PATCH 59/63] ReadMe: fix command-line help
|
||||
|
||||
Make command-line help consistent with manual page.
|
||||
Copied from Debian.
|
||||
|
||||
Cc: Felix Lechner <felix.lechner@lease-up.com>
|
||||
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||||
Acked-by: Coly Li <colyli@suse.de>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
ReadMe.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ReadMe.c b/ReadMe.c
|
||||
index 7f94847e..50a5e36d 100644
|
||||
--- a/ReadMe.c
|
||||
+++ b/ReadMe.c
|
||||
@@ -477,7 +477,7 @@ char Help_assemble[] =
|
||||
;
|
||||
|
||||
char Help_manage[] =
|
||||
-"Usage: mdadm arraydevice options component devices...\n"
|
||||
+"Usage: mdadm [mode] arraydevice [options] <component devices...>\n"
|
||||
"\n"
|
||||
"This usage is for managing the component devices within an array.\n"
|
||||
"The --manage option is not needed and is assumed if the first argument\n"
|
||||
--
|
||||
2.38.1
|
||||
|
257
0060-mdadm-replace-container-level-checking-with-inline.patch
Normal file
257
0060-mdadm-replace-container-level-checking-with-inline.patch
Normal file
@ -0,0 +1,257 @@
|
||||
From 6f2af6a48c541f207cb727a31fb86de2cd04fc21 Mon Sep 17 00:00:00 2001
|
||||
From: Kinga Tanska <kinga.tanska@intel.com>
|
||||
Date: Fri, 2 Sep 2022 08:49:23 +0200
|
||||
Subject: [PATCH 60/63] mdadm: replace container level checking with inline
|
||||
|
||||
To unify all containers checks in code, is_container() function is
|
||||
added and propagated.
|
||||
|
||||
Signed-off-by: Kinga Tanska <kinga.tanska@intel.com>
|
||||
Acked-by: Coly Li <colyli@suse.de>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
Assemble.c | 7 +++----
|
||||
Create.c | 6 +++---
|
||||
Grow.c | 6 +++---
|
||||
Incremental.c | 4 ++--
|
||||
mdadm.h | 14 ++++++++++++++
|
||||
super-ddf.c | 6 +++---
|
||||
super-intel.c | 4 ++--
|
||||
super0.c | 2 +-
|
||||
super1.c | 2 +-
|
||||
sysfs.c | 2 +-
|
||||
10 files changed, 33 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/Assemble.c b/Assemble.c
|
||||
index 1dd82a8c..8b0af0c9 100644
|
||||
--- a/Assemble.c
|
||||
+++ b/Assemble.c
|
||||
@@ -1120,7 +1120,7 @@ static int start_array(int mdfd,
|
||||
i/2, mddev);
|
||||
}
|
||||
|
||||
- if (content->array.level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(content->array.level)) {
|
||||
sysfs_rules_apply(mddev, content);
|
||||
if (c->verbose >= 0) {
|
||||
pr_err("Container %s has been assembled with %d drive%s",
|
||||
@@ -1549,8 +1549,7 @@ try_again:
|
||||
*/
|
||||
trustworthy = LOCAL;
|
||||
|
||||
- if (name[0] == 0 &&
|
||||
- content->array.level == LEVEL_CONTAINER) {
|
||||
+ if (!name[0] && is_container(content->array.level)) {
|
||||
name = content->text_version;
|
||||
trustworthy = METADATA;
|
||||
}
|
||||
@@ -1809,7 +1808,7 @@ try_again:
|
||||
}
|
||||
#endif
|
||||
}
|
||||
- if (c->force && !clean && content->array.level != LEVEL_CONTAINER &&
|
||||
+ if (c->force && !clean && !is_container(content->array.level) &&
|
||||
!enough(content->array.level, content->array.raid_disks,
|
||||
content->array.layout, clean, avail)) {
|
||||
change += st->ss->update_super(st, content, "force-array",
|
||||
diff --git a/Create.c b/Create.c
|
||||
index e06ec2ae..953e7372 100644
|
||||
--- a/Create.c
|
||||
+++ b/Create.c
|
||||
@@ -487,7 +487,7 @@ int Create(struct supertype *st, char *mddev,
|
||||
st->minor_version >= 1)
|
||||
/* metadata at front */
|
||||
warn |= check_partitions(fd, dname, 0, 0);
|
||||
- else if (s->level == 1 || s->level == LEVEL_CONTAINER ||
|
||||
+ else if (s->level == 1 || is_container(s->level) ||
|
||||
(s->level == 0 && s->raiddisks == 1))
|
||||
/* partitions could be meaningful */
|
||||
warn |= check_partitions(fd, dname, freesize*2, s->size*2);
|
||||
@@ -997,7 +997,7 @@ int Create(struct supertype *st, char *mddev,
|
||||
* again returns container info.
|
||||
*/
|
||||
st->ss->getinfo_super(st, &info_new, NULL);
|
||||
- if (st->ss->external && s->level != LEVEL_CONTAINER &&
|
||||
+ if (st->ss->external && !is_container(s->level) &&
|
||||
!same_uuid(info_new.uuid, info.uuid, 0)) {
|
||||
map_update(&map, fd2devnm(mdfd),
|
||||
info_new.text_version,
|
||||
@@ -1040,7 +1040,7 @@ int Create(struct supertype *st, char *mddev,
|
||||
map_unlock(&map);
|
||||
free(infos);
|
||||
|
||||
- if (s->level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(s->level)) {
|
||||
/* No need to start. But we should signal udev to
|
||||
* create links */
|
||||
sysfs_uevent(&info, "change");
|
||||
diff --git a/Grow.c b/Grow.c
|
||||
index 0f07a894..e362403a 100644
|
||||
--- a/Grow.c
|
||||
+++ b/Grow.c
|
||||
@@ -2175,7 +2175,7 @@ size_change_error:
|
||||
devname, s->size);
|
||||
}
|
||||
changed = 1;
|
||||
- } else if (array.level != LEVEL_CONTAINER) {
|
||||
+ } else if (!is_container(array.level)) {
|
||||
s->size = get_component_size(fd)/2;
|
||||
if (s->size == 0)
|
||||
s->size = array.size;
|
||||
@@ -2231,7 +2231,7 @@ size_change_error:
|
||||
info.component_size = s->size*2;
|
||||
info.new_level = s->level;
|
||||
info.new_chunk = s->chunk * 1024;
|
||||
- if (info.array.level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(info.array.level)) {
|
||||
info.delta_disks = UnSet;
|
||||
info.array.raid_disks = s->raiddisks;
|
||||
} else if (s->raiddisks)
|
||||
@@ -2344,7 +2344,7 @@ size_change_error:
|
||||
printf("layout for %s set to %d\n",
|
||||
devname, array.layout);
|
||||
}
|
||||
- } else if (array.level == LEVEL_CONTAINER) {
|
||||
+ } else if (is_container(array.level)) {
|
||||
/* This change is to be applied to every array in the
|
||||
* container. This is only needed when the metadata imposes
|
||||
* restraints of the various arrays in the container.
|
||||
diff --git a/Incremental.c b/Incremental.c
|
||||
index 4d0cd9d6..5a5f4c4c 100644
|
||||
--- a/Incremental.c
|
||||
+++ b/Incremental.c
|
||||
@@ -244,7 +244,7 @@ int Incremental(struct mddev_dev *devlist, struct context *c,
|
||||
c->autof = ci->autof;
|
||||
|
||||
name_to_use = info.name;
|
||||
- if (name_to_use[0] == 0 && info.array.level == LEVEL_CONTAINER) {
|
||||
+ if (name_to_use[0] == 0 && is_container(info.array.level)) {
|
||||
name_to_use = info.text_version;
|
||||
trustworthy = METADATA;
|
||||
}
|
||||
@@ -472,7 +472,7 @@ int Incremental(struct mddev_dev *devlist, struct context *c,
|
||||
|
||||
/* 7/ Is there enough devices to possibly start the array? */
|
||||
/* 7a/ if not, finish with success. */
|
||||
- if (info.array.level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(info.array.level)) {
|
||||
char devnm[32];
|
||||
/* Try to assemble within the container */
|
||||
sysfs_uevent(sra, "change");
|
||||
diff --git a/mdadm.h b/mdadm.h
|
||||
index 941a5f38..3673494e 100644
|
||||
--- a/mdadm.h
|
||||
+++ b/mdadm.h
|
||||
@@ -1924,3 +1924,17 @@ enum r0layout {
|
||||
* This is true for native and DDF, IMSM allows 16.
|
||||
*/
|
||||
#define MD_NAME_MAX 32
|
||||
+
|
||||
+/**
|
||||
+ * is_container() - check if @level is &LEVEL_CONTAINER
|
||||
+ * @level: level value
|
||||
+ *
|
||||
+ * return:
|
||||
+ * 1 if level is equal to &LEVEL_CONTAINER, 0 otherwise.
|
||||
+ */
|
||||
+static inline int is_container(const int level)
|
||||
+{
|
||||
+ if (level == LEVEL_CONTAINER)
|
||||
+ return 1;
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/super-ddf.c b/super-ddf.c
|
||||
index 949e7d15..9d1e3b94 100644
|
||||
--- a/super-ddf.c
|
||||
+++ b/super-ddf.c
|
||||
@@ -3325,7 +3325,7 @@ validate_geometry_ddf_container(struct supertype *st,
|
||||
int fd;
|
||||
unsigned long long ldsize;
|
||||
|
||||
- if (level != LEVEL_CONTAINER)
|
||||
+ if (!is_container(level))
|
||||
return 0;
|
||||
if (!dev)
|
||||
return 1;
|
||||
@@ -3371,7 +3371,7 @@ static int validate_geometry_ddf(struct supertype *st,
|
||||
|
||||
if (level == LEVEL_NONE)
|
||||
level = LEVEL_CONTAINER;
|
||||
- if (level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(level)) {
|
||||
/* Must be a fresh device to add to a container */
|
||||
return validate_geometry_ddf_container(st, level, raiddisks,
|
||||
data_offset, dev,
|
||||
@@ -3488,7 +3488,7 @@ static int validate_geometry_ddf_bvd(struct supertype *st,
|
||||
struct dl *dl;
|
||||
unsigned long long maxsize;
|
||||
/* ddf/bvd supports lots of things, but not containers */
|
||||
- if (level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(level)) {
|
||||
if (verbose)
|
||||
pr_err("DDF cannot create a container within an container\n");
|
||||
return 0;
|
||||
diff --git a/super-intel.c b/super-intel.c
|
||||
index 4d82af3d..b0565610 100644
|
||||
--- a/super-intel.c
|
||||
+++ b/super-intel.c
|
||||
@@ -6727,7 +6727,7 @@ static int validate_geometry_imsm_container(struct supertype *st, int level,
|
||||
struct intel_super *super = NULL;
|
||||
int rv = 0;
|
||||
|
||||
- if (level != LEVEL_CONTAINER)
|
||||
+ if (!is_container(level))
|
||||
return 0;
|
||||
if (!dev)
|
||||
return 1;
|
||||
@@ -7692,7 +7692,7 @@ static int validate_geometry_imsm(struct supertype *st, int level, int layout,
|
||||
* if given unused devices create a container
|
||||
* if given given devices in a container create a member volume
|
||||
*/
|
||||
- if (level == LEVEL_CONTAINER)
|
||||
+ if (is_container(level))
|
||||
/* Must be a fresh device to add to a container */
|
||||
return validate_geometry_imsm_container(st, level, raiddisks,
|
||||
data_offset, dev,
|
||||
diff --git a/super0.c b/super0.c
|
||||
index 37f595ed..93876e2e 100644
|
||||
--- a/super0.c
|
||||
+++ b/super0.c
|
||||
@@ -1273,7 +1273,7 @@ static int validate_geometry0(struct supertype *st, int level,
|
||||
if (get_linux_version() < 3001000)
|
||||
tbmax = 2;
|
||||
|
||||
- if (level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(level)) {
|
||||
if (verbose)
|
||||
pr_err("0.90 metadata does not support containers\n");
|
||||
return 0;
|
||||
diff --git a/super1.c b/super1.c
|
||||
index 58345e68..0b505a7e 100644
|
||||
--- a/super1.c
|
||||
+++ b/super1.c
|
||||
@@ -2830,7 +2830,7 @@ static int validate_geometry1(struct supertype *st, int level,
|
||||
unsigned long long overhead;
|
||||
int fd;
|
||||
|
||||
- if (level == LEVEL_CONTAINER) {
|
||||
+ if (is_container(level)) {
|
||||
if (verbose)
|
||||
pr_err("1.x metadata does not support containers\n");
|
||||
return 0;
|
||||
diff --git a/sysfs.c b/sysfs.c
|
||||
index 0d98a65f..ca1d888f 100644
|
||||
--- a/sysfs.c
|
||||
+++ b/sysfs.c
|
||||
@@ -763,7 +763,7 @@ int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd, int resume)
|
||||
|
||||
rv = sysfs_set_num(sra, sd, "offset", sd->data_offset);
|
||||
rv |= sysfs_set_num(sra, sd, "size", (sd->component_size+1) / 2);
|
||||
- if (sra->array.level != LEVEL_CONTAINER) {
|
||||
+ if (!is_container(sra->array.level)) {
|
||||
if (sra->consistency_policy == CONSISTENCY_POLICY_PPL) {
|
||||
rv |= sysfs_set_num(sra, sd, "ppl_sector", sd->ppl_sector);
|
||||
rv |= sysfs_set_num(sra, sd, "ppl_size", sd->ppl_size);
|
||||
--
|
||||
2.38.1
|
||||
|
58
0061-Mdmonitor-Omit-non-md-devices.patch
Normal file
58
0061-Mdmonitor-Omit-non-md-devices.patch
Normal file
@ -0,0 +1,58 @@
|
||||
From 8b668d4aa3305af5963162b7499b128bd71f8f29 Mon Sep 17 00:00:00 2001
|
||||
From: Lukasz Florczak <lukasz.florczak@linux.intel.com>
|
||||
Date: Thu, 22 Sep 2022 08:29:50 +0200
|
||||
Subject: [PATCH 61/63] Mdmonitor: Omit non-md devices
|
||||
|
||||
Fix segfault commit [1] introduced check whether given device is
|
||||
mddevice, but it happend to terminate Mdmonitor if at least one of given
|
||||
devices didn't fulfill that condition. In result Mdmonitor service was
|
||||
no longer started on boot (with --scan option) when config contained some
|
||||
non-existent array entry.
|
||||
|
||||
This commit introduces ommiting non-md devices so scan option can still
|
||||
be used when config is wrong and allow Mdmonitor service to run on boot.
|
||||
|
||||
Giving a list of devices to monitor containing non-existing or
|
||||
non-md devices will result in monitoring only confirmed mddevices.
|
||||
|
||||
[1] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=e702f392959d1c2ad2089e595b52235ed97b4e18
|
||||
|
||||
Signed-off-by: Lukasz Florczak <lukasz.florczak@linux.intel.com>
|
||||
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
||||
---
|
||||
Monitor.c | 12 ++++--------
|
||||
1 file changed, 4 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/Monitor.c b/Monitor.c
|
||||
index b4e954c6..7d7dc4d2 100644
|
||||
--- a/Monitor.c
|
||||
+++ b/Monitor.c
|
||||
@@ -185,10 +185,8 @@ int Monitor(struct mddev_dev *devlist,
|
||||
continue;
|
||||
if (strcasecmp(mdlist->devname, "<ignore>") == 0)
|
||||
continue;
|
||||
- if (!is_mddev(mdlist->devname)) {
|
||||
- free_statelist(statelist);
|
||||
- return 1;
|
||||
- }
|
||||
+ if (!is_mddev(mdlist->devname))
|
||||
+ continue;
|
||||
|
||||
st = xcalloc(1, sizeof *st);
|
||||
snprintf(st->devname, MD_NAME_MAX + sizeof("/dev/md/"),
|
||||
@@ -208,10 +206,8 @@ int Monitor(struct mddev_dev *devlist,
|
||||
for (dv = devlist; dv; dv = dv->next) {
|
||||
struct state *st;
|
||||
|
||||
- if (!is_mddev(dv->devname)) {
|
||||
- free_statelist(statelist);
|
||||
- return 1;
|
||||
- }
|
||||
+ if (!is_mddev(dv->devname))
|
||||
+ continue;
|
||||
|
||||
st = xcalloc(1, sizeof *st);
|
||||
mdlist = conf_get_ident(dv->devname);
|
||||
--
|
||||
2.38.1
|
||||
|
@ -0,0 +1,31 @@
|
||||
From 75f23f662fdfd6709be3d1d554d435cc0aa33443 Mon Sep 17 00:00:00 2001
|
||||
From: Logan Gunthorpe <logang@deltatee.com>
|
||||
Date: Wed, 21 Sep 2022 14:43:50 -0600
|
||||
Subject: [PATCH 62/63] Create: goto abort_locked instead of return 1 in error
|
||||
path
|
||||
|
||||
The return 1 after the fstat_is_blkdev() check should be replaced
|
||||
with an error return that goes through the error path to unlock
|
||||
resources locked by this function.
|
||||
|
||||
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
|
||||
---
|
||||
Create.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Create.c b/Create.c
|
||||
index 953e7372..2e8203ec 100644
|
||||
--- a/Create.c
|
||||
+++ b/Create.c
|
||||
@@ -939,7 +939,7 @@ int Create(struct supertype *st, char *mddev,
|
||||
goto abort_locked;
|
||||
}
|
||||
if (!fstat_is_blkdev(fd, dv->devname, &rdev))
|
||||
- return 1;
|
||||
+ goto abort_locked;
|
||||
inf->disk.major = major(rdev);
|
||||
inf->disk.minor = minor(rdev);
|
||||
}
|
||||
--
|
||||
2.38.1
|
||||
|
59
0063-Create-remove-safe_mode_delay-local-variable.patch
Normal file
59
0063-Create-remove-safe_mode_delay-local-variable.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 249da94563dddb852ccb52164411ff99a6c90489 Mon Sep 17 00:00:00 2001
|
||||
From: Logan Gunthorpe <logang@deltatee.com>
|
||||
Date: Wed, 21 Sep 2022 14:43:51 -0600
|
||||
Subject: [PATCH 63/63] Create: remove safe_mode_delay local variable
|
||||
|
||||
All .getinfo_super() call sets the info.safe_mode_delay variables
|
||||
to a constant value, so no matter what the current state is
|
||||
that function will always set it to the same value.
|
||||
|
||||
Create() calls .getinfo_super() multiple times while creating the array.
|
||||
The value is stored in a local variable for every disk in the loop
|
||||
to add disks (so the last disc call takes precedence). The local
|
||||
variable is then used in the call to sysfs_set_safemode().
|
||||
|
||||
This can be simplified by using info.safe_mode_delay directly. The info
|
||||
variable had .getinfo_super() called on it early in the function so, by the
|
||||
reasoning above, it will have the same value as the local variable which
|
||||
can thus be removed.
|
||||
|
||||
Doing this allows for factoring out code from Create() in a subsequent
|
||||
patch.
|
||||
|
||||
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
|
||||
---
|
||||
Create.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Create.c b/Create.c
|
||||
index 2e8203ec..8ded81dc 100644
|
||||
--- a/Create.c
|
||||
+++ b/Create.c
|
||||
@@ -137,7 +137,6 @@ int Create(struct supertype *st, char *mddev,
|
||||
int did_default = 0;
|
||||
int do_default_layout = 0;
|
||||
int do_default_chunk = 0;
|
||||
- unsigned long safe_mode_delay = 0;
|
||||
char chosen_name[1024];
|
||||
struct map_ent *map = NULL;
|
||||
unsigned long long newsize;
|
||||
@@ -952,7 +951,6 @@ int Create(struct supertype *st, char *mddev,
|
||||
goto abort_locked;
|
||||
}
|
||||
st->ss->getinfo_super(st, inf, NULL);
|
||||
- safe_mode_delay = inf->safe_mode_delay;
|
||||
|
||||
if (have_container && c->verbose > 0)
|
||||
pr_err("Using %s for device %d\n",
|
||||
@@ -1065,7 +1063,7 @@ int Create(struct supertype *st, char *mddev,
|
||||
"readonly");
|
||||
break;
|
||||
}
|
||||
- sysfs_set_safemode(&info, safe_mode_delay);
|
||||
+ sysfs_set_safemode(&info, info.safe_mode_delay);
|
||||
if (err) {
|
||||
pr_err("failed to activate array.\n");
|
||||
ioctl(mdfd, STOP_ARRAY, NULL);
|
||||
--
|
||||
2.38.1
|
||||
|
@ -1,13 +0,0 @@
|
||||
--- mdadm-4.1_rc1/udev-md-raid-assembly.rules~ 2018-06-22 13:10:58.196250086 +0800
|
||||
+++ mdadm-4.1_rc1/udev-md-raid-assembly.rules 2018-06-22 13:11:37.761241080 +0800
|
||||
@@ -5,6 +5,10 @@
|
||||
ENV{ANACONDA}=="?*", GOTO="md_inc_end"
|
||||
# assemble md arrays
|
||||
|
||||
+# In Fedora we handle the raid components in 65-md-incremental.rules so that
|
||||
+# we can do things like honor anaconda command line options and such
|
||||
+GOTO="md_inc_end"
|
||||
+
|
||||
SUBSYSTEM!="block", GOTO="md_inc_end"
|
||||
|
||||
# skip non-initialized devices
|
26
mdadm-udev.patch
Normal file
26
mdadm-udev.patch
Normal file
@ -0,0 +1,26 @@
|
||||
--- mdadm/udev-md-raid-assembly.rules.orig 2022-10-25 08:34:58.137936285 +0800
|
||||
+++ mdadm/udev-md-raid-assembly.rules 2022-10-25 09:28:23.453154190 +0800
|
||||
@@ -5,6 +5,9 @@
|
||||
ENV{ANACONDA}=="?*", GOTO="md_inc_end"
|
||||
# assemble md arrays
|
||||
|
||||
+# Also don't process disks that are slated to be a multipath device
|
||||
+ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="md_inc_end"
|
||||
+
|
||||
SUBSYSTEM!="block", GOTO="md_inc_end"
|
||||
|
||||
# skip non-initialized devices
|
||||
@@ -28,6 +31,13 @@
|
||||
|
||||
LABEL="md_inc"
|
||||
|
||||
+# Make sure we don't handle dm devices when some limits are set.
|
||||
+# And linux_raid_member only be set when change/remove event happen.
|
||||
+# So we don't need to consider add event here
|
||||
+KERNEL=="dm-*", ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="md_inc_end"
|
||||
+KERNEL=="dm-*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="md_inc_end"
|
||||
+KERNEL=="dm-*", ENV{DM_SUSPENDED}=="1", GOTO="md_inc_end"
|
||||
+
|
||||
# remember you can limit what gets auto/incrementally assembled by
|
||||
# mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY'
|
||||
ACTION!="remove", IMPORT{program}="BINDIR/mdadm --incremental --export $devnode --offroot $env{DEVLINKS}"
|
69
mdadm.rules
69
mdadm.rules
@ -1,69 +0,0 @@
|
||||
# This file causes block devices with Linux RAID (mdadm) signatures to
|
||||
# automatically cause mdadm to be run.
|
||||
# See udev(8) for syntax
|
||||
|
||||
# Don't process any events if anaconda is running as anaconda brings up
|
||||
# raid devices manually
|
||||
ENV{ANACONDA}=="?*", GOTO="md_end"
|
||||
|
||||
# Also don't process disks that are slated to be a multipath device
|
||||
ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="md_end"
|
||||
|
||||
# We process add events on block devices (since they are ready as soon as
|
||||
# they are added to the system), but we must process change events as well
|
||||
# on any dm devices (like LUKS partitions or LVM logical volumes) and on
|
||||
# md devices because both of these first get added, then get brought live
|
||||
# and trigger a change event. The reason we don't process change events
|
||||
# on bare hard disks is because if you stop all arrays on a disk, then
|
||||
# run fdisk on the disk to change the partitions, when fdisk exits it
|
||||
# triggers a change event, and we want to wait until all the fdisks on
|
||||
# all member disks are done before we do anything. Unfortunately, we have
|
||||
# no way of knowing that, so we just have to let those arrays be brought
|
||||
# up manually after fdisk has been run on all of the disks.
|
||||
|
||||
# First, process all add events (md and dm devices will not really do
|
||||
# anything here, just regular disks, and this also won't get any imsm
|
||||
# array members either)
|
||||
SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_TYPE}=="linux_raid_member", \
|
||||
IMPORT{program}="/sbin/mdadm -I $env{DEVNAME} --export $devnode --offroot $env{DEVLINKS}"
|
||||
SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_TYPE}=="linux_raid_member", \
|
||||
ENV{MD_STARTED}=="*unsafe*", ENV{MD_FOREIGN}=="no", ENV{SYSTEMD_WANTS}+="mdadm-last-resort@$env{MD_DEVICE}.timer"
|
||||
SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}=="?*", \
|
||||
ENV{ID_FS_TYPE}=="linux_raid_member", \
|
||||
RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}"
|
||||
SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}!="?*", \
|
||||
ENV{ID_FS_TYPE}=="linux_raid_member", \
|
||||
RUN+="/sbin/mdadm -If $name"
|
||||
|
||||
# Next, check to make sure the BIOS raid stuff wasn't turned off via cmdline
|
||||
IMPORT{cmdline}="noiswmd"
|
||||
IMPORT{cmdline}="nodmraid"
|
||||
ENV{noiswmd}=="?*", GOTO="md_imsm_inc_end"
|
||||
ENV{nodmraid}=="?*", GOTO="md_imsm_inc_end"
|
||||
SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_TYPE}=="isw_raid_member", \
|
||||
RUN+="/sbin/mdadm -I $env{DEVNAME}"
|
||||
SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_TYPE}=="ddf_raid_member", \
|
||||
RUN+="/sbin/mdadm -I $env{DEVNAME}"
|
||||
SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}=="?*", \
|
||||
ENV{ID_FS_TYPE}=="isw_raid_member", \
|
||||
RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}"
|
||||
SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}!="?*", \
|
||||
ENV{ID_FS_TYPE}=="isw_raid_member", \
|
||||
RUN+="/sbin/mdadm -If $name"
|
||||
LABEL="md_imsm_inc_end"
|
||||
|
||||
# Next make sure that this isn't a dm device we should skip for some reason
|
||||
ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_change_end"
|
||||
ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="dm_change_end"
|
||||
ENV{DM_SUSPENDED}=="1", GOTO="dm_change_end"
|
||||
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \
|
||||
ACTION=="change", RUN+="/sbin/mdadm -I $env{DEVNAME}"
|
||||
LABEL="dm_change_end"
|
||||
|
||||
# Finally catch any nested md raid arrays. If we brought up an md raid
|
||||
# array that's part of another md raid array, it won't be ready to be used
|
||||
# until the change event that occurs when it becomes live
|
||||
KERNEL=="md*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \
|
||||
ACTION=="change", RUN+="/sbin/mdadm -I $env{DEVNAME}"
|
||||
|
||||
LABEL="md_end"
|
269
mdadm.spec
269
mdadm.spec
@ -2,76 +2,87 @@ 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 5
|
||||
%define extraversion 6
|
||||
Release: %{extraversion}%{?dist}
|
||||
Source: http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}%{?subversion:-%{subversion}}.tar.xz
|
||||
Source1: mdmonitor.init
|
||||
Source2: raid-check
|
||||
Source3: mdadm.rules
|
||||
Source4: mdadm-raid-check-sysconfig
|
||||
Source5: mdadm-cron
|
||||
Source6: mdmonitor.service
|
||||
Source7: mdadm.conf
|
||||
Source8: mdadm_event.conf
|
||||
Source9: mdcheck
|
||||
Source10: mdadm_env.sh
|
||||
Source3: mdadm-raid-check-sysconfig
|
||||
Source4: mdadm-cron
|
||||
Source5: mdmonitor.service
|
||||
Source6: mdadm.conf
|
||||
Source7: mdadm_event.conf
|
||||
Source8: mdcheck
|
||||
Source9: mdadm_env.sh
|
||||
|
||||
Patch000: disable-Werror.patch
|
||||
Patch001: 0001-Unify-error-message.patch
|
||||
Patch002: 0002-mdadm-Fix-double-free.patch
|
||||
Patch003: 0003-Grow_reshape-Add-r0-grow-size-error-message-and-upda.patch
|
||||
Patch004: 0004-udev-adapt-rules-to-systemd-v247.patch
|
||||
Patch005: 0005-Replace-error-prone-signal-with-sigaction.patch
|
||||
Patch006: 0006-mdadm-Respect-config-file-location-in-man.patch
|
||||
Patch007: 0007-mdadm-Update-ReadMe.patch
|
||||
Patch008: 0008-mdadm-Update-config-man-regarding-default-files-and-.patch
|
||||
Patch009: 0009-mdadm-Update-config-manual.patch
|
||||
Patch010: 0010-Create-Build-use-default_layout.patch
|
||||
Patch011: 0011-mdadm-add-map_num_s.patch
|
||||
Patch012: 0013-mdmon-Stop-parsing-duplicate-options.patch
|
||||
Patch013: 0014-Grow-block-n-on-external-volumes.patch
|
||||
Patch014: 0015-Incremental-Fix-possible-memory-and-resource-leaks.patch
|
||||
Patch015: 0016-Mdmonitor-Fix-segfault.patch
|
||||
Patch016: 0017-Mdmonitor-Improve-logging-method.patch
|
||||
Patch017: 0018-Fix-possible-NULL-ptr-dereferences-and-memory-leaks.patch
|
||||
Patch018: 0019-imsm-Remove-possibility-for-get_imsm_dev-to-return-N.patch
|
||||
Patch019: 0020-Revert-mdadm-fix-coredump-of-mdadm-monitor-r.patch
|
||||
Patch020: 0021-util-replace-ioctl-use-with-function.patch
|
||||
Patch021: 0022-mdadm-super1-restore-commit-45a87c2f31335-to-fix-clu.patch
|
||||
Patch022: 0023-imsm-introduce-get_disk_slot_in_dev.patch
|
||||
Patch023: 0024-imsm-use-same-slot-across-container.patch
|
||||
Patch024: 0025-imsm-block-changing-slots-during-creation.patch
|
||||
Patch025: 0026-mdadm-block-update-ppl-for-non-raid456-levels.patch
|
||||
Patch026: 0027-mdadm-Fix-array-size-mismatch-after-grow.patch
|
||||
Patch027: 0028-mdadm-Remove-dead-code-in-imsm_fix_size_mismatch.patch
|
||||
Patch028: 0029-Monitor-use-devname-as-char-array-instead-of-pointer.patch
|
||||
Patch029: 0030-Monitor-use-snprintf-to-fill-device-name.patch
|
||||
Patch030: 0031-Makefile-Don-t-build-static-build-with-everything-an.patch
|
||||
Patch031: 0032-DDF-Cleanup-validate_geometry_ddf_container.patch
|
||||
Patch032: 0033-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch
|
||||
Patch033: 0034-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch
|
||||
Patch034: 0035-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch
|
||||
Patch035: 0036-mdadm-Fix-mdadm-r-remove-option-regression.patch
|
||||
Patch036: 0037-mdadm-Fix-optional-write-behind-parameter.patch
|
||||
Patch037: 0038-tests-00raid0-add-a-test-that-validates-raid0-with-l.patch
|
||||
Patch038: 0039-tests-fix-raid0-tests-for-0.90-metadata.patch
|
||||
Patch039: 0040-tests-04update-metadata-avoid-passing-chunk-size-to-.patch
|
||||
Patch040: 0041-tests-02lineargrow-clear-the-superblock-at-every-ite.patch
|
||||
Patch041: 0042-mdadm-test-Add-a-mode-to-repeat-specified-tests.patch
|
||||
Patch042: 0043-mdadm-test-Mark-and-ignore-broken-test-failures.patch
|
||||
Patch043: 0044-tests-Add-broken-files-for-all-broken-tests.patch
|
||||
Patch044: 0045-mdadm-Replace-obsolete-usleep-with-nanosleep.patch
|
||||
Patch045: 0046-tests-00readonly-Run-udevadm-settle-before-setting-r.patch
|
||||
Patch046: 0047-tests-add-test-for-names.patch
|
||||
Patch047: 0048-mdadm-remove-symlink-option.patch
|
||||
Patch048: 0049-mdadm-move-data_offset-to-struct-shape.patch
|
||||
Patch049: 0050-mdadm-Don-t-open-md-device-for-CREATE-and-ASSEMBLE.patch
|
||||
Patch050: 0051-Grow-Split-Grow_reshape-into-helper-function.patch
|
||||
Patch051: 0052-Assemble-check-if-device-is-container-before-schedul.patch
|
||||
Patch000: 0001-Unify-error-message.patch
|
||||
Patch001: 0002-mdadm-Fix-double-free.patch
|
||||
Patch002: 0003-Grow_reshape-Add-r0-grow-size-error-message-and-upda.patch
|
||||
Patch003: 0004-udev-adapt-rules-to-systemd-v247.patch
|
||||
Patch004: 0005-Replace-error-prone-signal-with-sigaction.patch
|
||||
Patch005: 0006-mdadm-Respect-config-file-location-in-man.patch
|
||||
Patch006: 0007-mdadm-Update-ReadMe.patch
|
||||
Patch007: 0008-mdadm-Update-config-man-regarding-default-files-and-.patch
|
||||
Patch008: 0009-mdadm-Update-config-manual.patch
|
||||
Patch009: 0010-Create-Build-use-default_layout.patch
|
||||
Patch010: 0011-mdadm-add-map_num_s.patch
|
||||
# patch0012 is deleted because of needing KillMode=none
|
||||
Patch011: 0013-mdmon-Stop-parsing-duplicate-options.patch
|
||||
Patch012: 0014-Grow-block-n-on-external-volumes.patch
|
||||
Patch013: 0015-Incremental-Fix-possible-memory-and-resource-leaks.patch
|
||||
Patch014: 0016-Mdmonitor-Fix-segfault.patch
|
||||
Patch015: 0017-Mdmonitor-Improve-logging-method.patch
|
||||
Patch016: 0018-Fix-possible-NULL-ptr-dereferences-and-memory-leaks.patch
|
||||
Patch017: 0019-imsm-Remove-possibility-for-get_imsm_dev-to-return-N.patch
|
||||
Patch018: 0020-Revert-mdadm-fix-coredump-of-mdadm-monitor-r.patch
|
||||
Patch019: 0021-util-replace-ioctl-use-with-function.patch
|
||||
Patch020: 0022-mdadm-super1-restore-commit-45a87c2f31335-to-fix-clu.patch
|
||||
Patch021: 0023-imsm-introduce-get_disk_slot_in_dev.patch
|
||||
Patch022: 0024-imsm-use-same-slot-across-container.patch
|
||||
Patch023: 0025-imsm-block-changing-slots-during-creation.patch
|
||||
Patch024: 0026-mdadm-block-update-ppl-for-non-raid456-levels.patch
|
||||
Patch025: 0027-mdadm-Fix-array-size-mismatch-after-grow.patch
|
||||
Patch026: 0028-mdadm-Remove-dead-code-in-imsm_fix_size_mismatch.patch
|
||||
Patch027: 0029-Monitor-use-devname-as-char-array-instead-of-pointer.patch
|
||||
Patch028: 0030-Monitor-use-snprintf-to-fill-device-name.patch
|
||||
Patch029: 0031-Makefile-Don-t-build-static-build-with-everything-an.patch
|
||||
Patch030: 0032-DDF-Cleanup-validate_geometry_ddf_container.patch
|
||||
Patch031: 0033-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch
|
||||
Patch032: 0034-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch
|
||||
Patch033: 0035-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch
|
||||
Patch034: 0036-mdadm-Fix-mdadm-r-remove-option-regression.patch
|
||||
Patch035: 0037-mdadm-Fix-optional-write-behind-parameter.patch
|
||||
Patch036: 0038-tests-00raid0-add-a-test-that-validates-raid0-with-l.patch
|
||||
Patch037: 0039-tests-fix-raid0-tests-for-0.90-metadata.patch
|
||||
Patch038: 0040-tests-04update-metadata-avoid-passing-chunk-size-to-.patch
|
||||
Patch039: 0041-tests-02lineargrow-clear-the-superblock-at-every-ite.patch
|
||||
Patch040: 0042-mdadm-test-Add-a-mode-to-repeat-specified-tests.patch
|
||||
Patch041: 0043-mdadm-test-Mark-and-ignore-broken-test-failures.patch
|
||||
Patch042: 0044-tests-Add-broken-files-for-all-broken-tests.patch
|
||||
Patch043: 0045-mdadm-Replace-obsolete-usleep-with-nanosleep.patch
|
||||
Patch044: 0046-tests-00readonly-Run-udevadm-settle-before-setting-r.patch
|
||||
Patch045: 0047-tests-add-test-for-names.patch
|
||||
Patch046: 0048-mdadm-remove-symlink-option.patch
|
||||
Patch047: 0049-mdadm-move-data_offset-to-struct-shape.patch
|
||||
Patch048: 0050-mdadm-Don-t-open-md-device-for-CREATE-and-ASSEMBLE.patch
|
||||
Patch049: 0051-Grow-Split-Grow_reshape-into-helper-function.patch
|
||||
Patch050: 0052-Assemble-check-if-device-is-container-before-schedul.patch
|
||||
Patch051: 0053-super1-report-truncated-device.patch
|
||||
Patch052: 0054-mdadm-Correct-typos-punctuation-and-grammar-in-man.patch
|
||||
Patch053: 0055-Manage-Block-unsafe-member-failing.patch
|
||||
Patch054: 0056-Monitor-Fix-statelist-memory-leaks.patch
|
||||
Patch055: 0057-mdadm-added-support-for-Intel-Alderlake-RST-on-VMD-p.patch
|
||||
Patch056: 0058-mdadm-Add-Documentation-entries-to-systemd-services.patch
|
||||
Patch057: 0059-ReadMe-fix-command-line-help.patch
|
||||
Patch058: 0060-mdadm-replace-container-level-checking-with-inline.patch
|
||||
Patch059: 0061-Mdmonitor-Omit-non-md-devices.patch
|
||||
Patch060: 0062-Create-goto-abort_locked-instead-of-return-1-in-erro.patch
|
||||
Patch061: 0063-Create-remove-safe_mode_delay-local-variable.patch
|
||||
|
||||
# RHEL customization patches
|
||||
Patch200: mdadm-3.3-udev.patch
|
||||
Patch200: mdadm-udev.patch
|
||||
Patch201: mdadm-2.5.2-static.patch
|
||||
Patch202: disable-Werror.patch
|
||||
|
||||
URL: http://www.kernel.org/pub/linux/utils/raid/mdadm/
|
||||
License: GPLv2+
|
||||
@ -98,62 +109,73 @@ file can be used to help with some common tasks.
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}%{?subversion:_%{subversion}}
|
||||
|
||||
%patch000 -p1 -b .disable
|
||||
%patch001 -p1 -b .0001
|
||||
%patch002 -p1 -b .0002
|
||||
%patch003 -p1 -b .0003
|
||||
%patch004 -p1 -b .0004
|
||||
%patch005 -p1 -b .0005
|
||||
%patch006 -p1 -b .0006
|
||||
%patch007 -p1 -b .0007
|
||||
%patch008 -p1 -b .0008
|
||||
%patch009 -p1 -b .0009
|
||||
%patch010 -p1 -b .0010
|
||||
%patch011 -p1 -b .0011
|
||||
%patch012 -p1 -b .0013
|
||||
%patch013 -p1 -b .0014
|
||||
%patch014 -p1 -b .0015
|
||||
%patch015 -p1 -b .0016
|
||||
%patch016 -p1 -b .0017
|
||||
%patch017 -p1 -b .0018
|
||||
%patch018 -p1 -b .0019
|
||||
%patch019 -p1 -b .0020
|
||||
%patch020 -p1 -b .0021
|
||||
%patch021 -p1 -b .0022
|
||||
%patch022 -p1 -b .0023
|
||||
%patch023 -p1 -b .0024
|
||||
%patch024 -p1 -b .0025
|
||||
%patch025 -p1 -b .0026
|
||||
%patch026 -p1 -b .0027
|
||||
%patch027 -p1 -b .0028
|
||||
%patch028 -p1 -b .0029
|
||||
%patch029 -p1 -b .0030
|
||||
%patch030 -p1 -b .0031
|
||||
%patch031 -p1 -b .0032
|
||||
%patch032 -p1 -b .0033
|
||||
%patch033 -p1 -b .0034
|
||||
%patch034 -p1 -b .0035
|
||||
%patch035 -p1 -b .0036
|
||||
%patch036 -p1 -b .0037
|
||||
%patch037 -p1 -b .0038
|
||||
%patch038 -p1 -b .0039
|
||||
%patch039 -p1 -b .0040
|
||||
%patch040 -p1 -b .0041
|
||||
%patch041 -p1 -b .0042
|
||||
%patch042 -p1 -b .0043
|
||||
%patch043 -p1 -b .0044
|
||||
%patch044 -p1 -b .0045
|
||||
%patch045 -p1 -b .0046
|
||||
%patch046 -p1 -b .0047
|
||||
%patch047 -p1 -b .0048
|
||||
%patch048 -p1 -b .0049
|
||||
%patch049 -p1 -b .0050
|
||||
%patch050 -p1 -b .0051
|
||||
%patch051 -p1 -b .0052
|
||||
%patch000 -p1 -b .0001
|
||||
%patch001 -p1 -b .0002
|
||||
%patch002 -p1 -b .0003
|
||||
%patch003 -p1 -b .0004
|
||||
%patch004 -p1 -b .0005
|
||||
%patch005 -p1 -b .0006
|
||||
%patch006 -p1 -b .0007
|
||||
%patch007 -p1 -b .0008
|
||||
%patch008 -p1 -b .0009
|
||||
%patch009 -p1 -b .0010
|
||||
%patch010 -p1 -b .0011
|
||||
%patch011 -p1 -b .0013
|
||||
%patch012 -p1 -b .0014
|
||||
%patch013 -p1 -b .0015
|
||||
%patch014 -p1 -b .0016
|
||||
%patch015 -p1 -b .0017
|
||||
%patch016 -p1 -b .0018
|
||||
%patch017 -p1 -b .0019
|
||||
%patch018 -p1 -b .0020
|
||||
%patch019 -p1 -b .0021
|
||||
%patch020 -p1 -b .0022
|
||||
%patch021 -p1 -b .0023
|
||||
%patch022 -p1 -b .0024
|
||||
%patch023 -p1 -b .0025
|
||||
%patch024 -p1 -b .0026
|
||||
%patch025 -p1 -b .0027
|
||||
%patch026 -p1 -b .0028
|
||||
%patch027 -p1 -b .0029
|
||||
%patch028 -p1 -b .0030
|
||||
%patch029 -p1 -b .0031
|
||||
%patch030 -p1 -b .0032
|
||||
%patch031 -p1 -b .0033
|
||||
%patch032 -p1 -b .0034
|
||||
%patch033 -p1 -b .0035
|
||||
%patch034 -p1 -b .0036
|
||||
%patch035 -p1 -b .0037
|
||||
%patch036 -p1 -b .0038
|
||||
%patch037 -p1 -b .0039
|
||||
%patch038 -p1 -b .0040
|
||||
%patch039 -p1 -b .0041
|
||||
%patch040 -p1 -b .0042
|
||||
%patch041 -p1 -b .0043
|
||||
%patch042 -p1 -b .0044
|
||||
%patch043 -p1 -b .0045
|
||||
%patch044 -p1 -b .0046
|
||||
%patch045 -p1 -b .0047
|
||||
%patch046 -p1 -b .0048
|
||||
%patch047 -p1 -b .0049
|
||||
%patch048 -p1 -b .0050
|
||||
%patch049 -p1 -b .0051
|
||||
%patch050 -p1 -b .0052
|
||||
%patch051 -p1 -b .0053
|
||||
%patch052 -p1 -b .0054
|
||||
%patch053 -p1 -b .0055
|
||||
%patch054 -p1 -b .0056
|
||||
%patch055 -p1 -b .0057
|
||||
%patch056 -p1 -b .0058
|
||||
%patch057 -p1 -b .0059
|
||||
%patch058 -p1 -b .0060
|
||||
%patch059 -p1 -b .0061
|
||||
%patch060 -p1 -b .0062
|
||||
%patch061 -p1 -b .0063
|
||||
|
||||
# RHEL customization patches
|
||||
%patch200 -p1 -b .udev
|
||||
%patch201 -p1 -b .static
|
||||
%patch202 -p1 -b .disable
|
||||
|
||||
%build
|
||||
make %{?_smp_mflags} CXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" SYSCONFDIR="%{_sysconfdir}" EXTRAVERSION="%{extraversion}" mdadm mdmon
|
||||
@ -162,28 +184,27 @@ make %{?_smp_mflags} CXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" SYSCONFDIR
|
||||
rm -rf %{buildroot}
|
||||
make DESTDIR=%{buildroot} MANDIR=%{_mandir} BINDIR=%{_sbindir} SYSTEMD_DIR=%{_unitdir} install install-systemd
|
||||
install -Dp -m 755 %{SOURCE2} %{buildroot}%{_sbindir}/raid-check
|
||||
install -Dp -m 644 %{SOURCE3} %{buildroot}%{_udevrulesdir}/65-md-incremental.rules
|
||||
install -Dp -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/raid-check
|
||||
install -Dp -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/cron.d/raid-check
|
||||
install -Dp -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/sysconfig/raid-check
|
||||
install -Dp -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/cron.d/raid-check
|
||||
mkdir -p -m 710 %{buildroot}/var/run/mdadm
|
||||
mkdir -p -m 700 %{buildroot}/usr/share/mdadm
|
||||
mkdir -p -m 700 %{buildroot}/usr/lib/mdadm
|
||||
install -Dp -m 755 %{SOURCE9} %{buildroot}/usr/share/mdadm/mdcheck
|
||||
install -Dp -m 755 %{SOURCE10} %{buildroot}/usr/lib/mdadm/mdadm_env.sh
|
||||
install -Dp -m 755 %{SOURCE8} %{buildroot}/usr/share/mdadm/mdcheck
|
||||
install -Dp -m 755 %{SOURCE9} %{buildroot}/usr/lib/mdadm/mdadm_env.sh
|
||||
|
||||
# systemd
|
||||
mkdir -p %{buildroot}%{_unitdir}
|
||||
install -m644 %{SOURCE6} %{buildroot}%{_unitdir}
|
||||
install -m644 %{SOURCE5} %{buildroot}%{_unitdir}
|
||||
|
||||
# tmpfile
|
||||
mkdir -p %{buildroot}%{_tmpfilesdir}
|
||||
install -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/%{name}.conf
|
||||
install -m 0644 %{SOURCE6} %{buildroot}%{_tmpfilesdir}/%{name}.conf
|
||||
mkdir -p %{buildroot}%{_localstatedir}/run/
|
||||
install -d -m 0710 %{buildroot}%{_localstatedir}/run/%{name}/
|
||||
|
||||
# abrt
|
||||
mkdir -p %{buildroot}/etc/libreport/events.d
|
||||
install -m644 %{SOURCE8} %{buildroot}/etc/libreport/events.d
|
||||
install -m644 %{SOURCE7} %{buildroot}/etc/libreport/events.d
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
@ -221,6 +242,10 @@ rm -rf %{buildroot}
|
||||
/usr/lib/mdadm/mdadm_env.sh
|
||||
|
||||
%changelog
|
||||
* Thu Sep 8 2022 Xiao Ni <xni@redhat.com> - 4.2-6
|
||||
- Keep udev rule close to upstream and update to latest upstream
|
||||
- Resolves rhbz#1991596, rhbz#2129088, rhbz#2107150
|
||||
|
||||
* Thu Aug 25 2022 Xiao Ni <xni@redhat.com> - 4.2-5
|
||||
- Update mdadm to latest upstream
|
||||
- Resolves rhbz#2092326
|
||||
|
Loading…
Reference in New Issue
Block a user