[packages/mdadm] - updated to 4.3
qboosh
qboosh at pld-linux.org
Sun Mar 17 21:57:52 CET 2024
commit 60b906e82e8128f2d7acb59ea8f7c795867a9ccc
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sun Mar 17 21:51:48 2024 +0100
- updated to 4.3
0001-Unify-error-message.patch | 47 -
0002-mdadm-Fix-double-free.patch | 33 -
...e-Add-r0-grow-size-error-message-and-upda.patch | 83 --
0004-udev-adapt-rules-to-systemd-v247.patch | 67 -
...Replace-error-prone-signal-with-sigaction.patch | 252 ----
...mdadm-Respect-config-file-location-in-man.patch | 1533 --------------------
0007-mdadm-Update-ReadMe.patch | 48 -
...e-config-man-regarding-default-files-and-.patch | 203 ---
0009-mdadm-Update-config-manual.patch | 45 -
0010-Create-Build-use-default_layout.patch | 153 --
0011-mdadm-add-map_num_s.patch | 382 -----
...md-remove-KillMode-none-from-service-file.patch | 69 -
0013-mdmon-Stop-parsing-duplicate-options.patch | 122 --
0014-Grow-block-n-on-external-volumes.patch | 41 -
...al-Fix-possible-memory-and-resource-leaks.patch | 90 --
0016-Mdmonitor-Fix-segfault.patch | 98 --
0017-Mdmonitor-Improve-logging-method.patch | 61 -
...le-NULL-ptr-dereferences-and-memory-leaks.patch | 73 -
...-possibility-for-get_imsm_dev-to-return-N.patch | 301 ----
...ert-mdadm-fix-coredump-of-mdadm-monitor-r.patch | 85 --
0021-util-replace-ioctl-use-with-function.patch | 31 -
...1-restore-commit-45a87c2f31335-to-fix-clu.patch | 110 --
0023-imsm-introduce-get_disk_slot_in_dev.patch | 122 --
0024-imsm-use-same-slot-across-container.patch | 252 ----
...imsm-block-changing-slots-during-creation.patch | 122 --
...m-block-update-ppl-for-non-raid456-levels.patch | 177 ---
...-mdadm-Fix-array-size-mismatch-after-grow.patch | 30 -
...emove-dead-code-in-imsm_fix_size_mismatch.patch | 34 -
...-devname-as-char-array-instead-of-pointer.patch | 40 -
...-Monitor-use-snprintf-to-fill-device-name.patch | 133 --
...n-t-build-static-build-with-everything-an.patch | 42 -
...F-Cleanup-validate_geometry_ddf_container.patch | 141 --
...L-pointer-dereference-in-validate_geometr.patch | 49 -
...Fix-use-after-close-bug-by-closing-after-.patch | 85 --
...id-segfault-when-calling-NULL-get_bad_blo.patch | 36 -
...dadm-Fix-mdadm-r-remove-option-regression.patch | 78 -
...mdadm-Fix-optional-write-behind-parameter.patch | 42 -
...d0-add-a-test-that-validates-raid0-with-l.patch | 38 -
0039-tests-fix-raid0-tests-for-0.90-metadata.patch | 99 --
...ate-metadata-avoid-passing-chunk-size-to-.patch | 39 -
...eargrow-clear-the-superblock-at-every-ite.patch | 31 -
...test-Add-a-mode-to-repeat-specified-tests.patch | 88 --
...test-Mark-and-ignore-broken-test-failures.patch | 120 --
...sts-Add-broken-files-for-all-broken-tests.patch | 447 ------
...dm-Replace-obsolete-usleep-with-nanosleep.patch | 316 ----
...donly-Run-udevadm-settle-before-setting-r.patch | 36 -
0047-tests-add-test-for-names.patch | 119 --
0048-mdadm-remove-symlink-option.patch | 176 ---
0049-mdadm-move-data_offset-to-struct-shape.patch | 232 ---
...-t-open-md-device-for-CREATE-and-ASSEMBLE.patch | 162 ---
...w-Split-Grow_reshape-into-helper-function.patch | 231 ---
...eck-if-device-is-container-before-schedul.patch | 36 -
0053-super1-report-truncated-device.patch | 112 --
...rect-typos-punctuation-and-grammar-in-man.patch | 616 --------
0055-Manage-Block-unsafe-member-failing.patch | 91 --
0056-Monitor-Fix-statelist-memory-leaks.patch | 112 --
...-support-for-Intel-Alderlake-RST-on-VMD-p.patch | 64 -
...Documentation-entries-to-systemd-services.patch | 111 --
0059-ReadMe-fix-command-line-help.patch | 32 -
...lace-container-level-checking-with-inline.patch | 257 ----
0061-Mdmonitor-Omit-non-md-devices.patch | 58 -
...nitor-Split-alert-into-separate-functions.patch | 233 ---
...nitor-block-if-monitor-modes-are-combined.patch | 41 -
0064-Update-mdadm-Monitor-manual.patch | 119 --
0065-Grow-fix-possible-memory-leak.patch | 38 -
0066-mdadm-create-ident_init.patch | 148 --
...Add-option-validation-for-update-subarray.patch | 287 ----
0068-Fix-update-subarray-on-active-volume.patch | 54 -
...-Add-code-specific-update-options-to-enum.patch | 77 -
0070-super-ddf-Remove-update_super_ddf.patch | 106 --
0071-super0-refactor-the-code-for-enum.patch | 212 ---
0072-super1-refactor-the-code-for-enum.patch | 302 ----
0073-super-intel-refactor-the-code-for-enum.patch | 106 --
...te-to-enum-in-update_super-and-update_sub.patch | 424 ------
...-Incremental-code-refactor-string-to-enum.patch | 279 ----
...r-to-enum-in-context-update-refactor-code.patch | 289 ----
0077-mdmon-fix-segfault.patch | 86 --
...til-remove-obsolete-code-from-get_md_name.patch | 116 --
...-Don-t-handle-change-event-on-raw-devices.patch | 54 -
...ot-check-array-state-when-drive-is-remove.patch | 33 -
...al-manage-do-not-verify-if-remove-is-safe.patch | 59 -
...-make-freesize-not-required-for-chunk-siz.patch | 52 -
...ge-move-comment-with-function-description.patch | 105 --
...m-systemd-remove-KillMode-none-from-servi.patch | 54 -
...n-t-change-bitmap-type-from-none-to-clust.patch | 45 -
0086-Fix-NULL-dereference-in-super_by_fd.patch | 76 -
0087-Mdmonitor-Make-alert_info-global.patch | 369 -----
...ass-events-to-alert-using-enums-instead-o.patch | 313 ----
0089-Mdmonitor-Add-helper-functions.patch | 406 ------
...-to-determine-whether-directories-or-file.patch | 83 --
...-Mdmonitor-Refactor-write_autorebuild_pid.patch | 110 --
...efactor-check_one_sharer-for-better-error.patch | 139 --
...reorder-code-lines-in-parse_layout_faulty.patch | 41 -
...util.c-fix-memleak-in-parse_layout_faulty.patch | 32 -
0095-Detail.c-fix-memleak-in-Detail.patch | 31 -
...-intel.c-fix-double-free-in-load_imsm_mpb.patch | 63 -
...l.c-fix-memleak-in-find_disk_attached_hba.patch | 39 -
...f.c-fix-memleak-in-get_vd_num_of_subarray.patch | 46 -
...-abort_locked-instead-of-return-1-in-erro.patch | 36 -
...ate-remove-safe_mode_delay-local-variable.patch | 64 -
0101-Create-Factor-out-add_disks-helpers.patch | 452 ------
0102-mdadm-Introduce-pr_info.patch | 72 -
0103-mdadm-Add-write-zeros-option-for-Create.patch | 346 -----
...d5-zero-Introduce-test-to-exercise-write-.patch | 44 -
...anpage-Add-write-zeroes-option-to-manpage.patch | 56 -
...nof-using-_Alignof-when-using-C11-or-newe.patch | 53 -
...ce-of-etc-initrd-release-to-detect-initrd.patch | 41 -
...on-don-t-test-both-all-and-container_name.patch | 47 -
...hange-systemd-unit-file-to-use-foreground.patch | 33 -
0110-mdmon-Remove-need-for-KillMode-none.patch | 55 -
0111-mdmon-Improve-switchroot-interactions.patch | 166 ---
0112-mdopen-always-try-create_named_array.patch | 40 -
...Improvements-for-IMSM_NO_PLATFORM-testing.patch | 172 ---
...rt-mdadm-systemd-remove-KillMode-none-fro.patch | 29 -
...checking-for-container-in-update_metadata.patch | 38 -
...Fix-null-pointer-for-incremental-in-mdadm.patch | 43 -
...1-fix-truncation-check-for-journal-device.patch | 33 -
0118-Fix-some-cases-eyesore-formatting.patch | 433 ------
0119-Bump-minimum-kernel-version-to-2.6.32.patch | 136 --
...config-files-in-mdcheck_start-continue-se.patch | 42 -
mdadm.spec | 251 +---
121 files changed, 5 insertions(+), 16677 deletions(-)
---
diff --git a/mdadm.spec b/mdadm.spec
index 646b9c3..b0e03b7 100644
--- a/mdadm.spec
+++ b/mdadm.spec
@@ -1,18 +1,18 @@
#
# Conditional build:
-%bcond_with initrd # don't build initrd version
+%bcond_with initrd # initrd version
%bcond_with dietlibc # link initrd version with static glibc instead of dietlibc
-%bcond_without tests # don't perform "make test"
+%bcond_without tests # unit tests
Summary: Tool for creating and maintaining software RAID devices
Summary(pl.UTF-8): Narzędzie do tworzenia i obsługi programowych macierzy RAID
Name: mdadm
-Version: 4.2
+Version: 4.3
Release: 1
License: GPL v2+
Group: Base
Source0: https://www.kernel.org/pub/linux/utils/raid/mdadm/%{name}-%{version}.tar.xz
-# Source0-md5: a304eb0a978ca81045620d06547050a6
+# Source0-md5: a42def84e31734a529111394f2289e0e
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.cron
@@ -20,127 +20,6 @@ Source4: %{name}-checkarray
Source5: cronjob-%{name}.timer
Source6: cronjob-%{name}.service
URL: https://www.kernel.org/pub/linux/utils/raid/mdadm/
-# Upstream patches
-Patch000: 0001-Unify-error-message.patch
-Patch001: 0002-%{name}-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-%{name}-Respect-config-file-location-in-man.patch
-Patch006: 0007-%{name}-Update-ReadMe.patch
-Patch007: 0008-%{name}-Update-config-man-regarding-default-files-and-.patch
-Patch008: 0009-%{name}-Update-config-manual.patch
-Patch009: 0010-Create-Build-use-default_layout.patch
-Patch010: 0011-%{name}-add-map_num_s.patch
-Patch011: 0012-%{name}-systemd-remove-KillMode-none-from-service-file.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-%{name}-fix-coredump-of-mdadm-monitor-r.patch
-Patch020: 0021-util-replace-ioctl-use-with-function.patch
-Patch021: 0022-%{name}-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-%{name}-block-update-ppl-for-non-raid456-levels.patch
-Patch026: 0027-%{name}-Fix-array-size-mismatch-after-grow.patch
-Patch027: 0028-%{name}-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-%{name}-Grow-Fix-use-after-close-bug-by-closing-after-.patch
-Patch034: 0035-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch
-Patch035: 0036-%{name}-Fix-mdadm-r-remove-option-regression.patch
-Patch036: 0037-%{name}-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-%{name}-test-Add-a-mode-to-repeat-specified-tests.patch
-Patch042: 0043-%{name}-test-Mark-and-ignore-broken-test-failures.patch
-Patch043: 0044-tests-Add-broken-files-for-all-broken-tests.patch
-Patch044: 0045-%{name}-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-%{name}-remove-symlink-option.patch
-Patch048: 0049-%{name}-move-data_offset-to-struct-shape.patch
-Patch049: 0050-%{name}-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
-Patch052: 0053-super1-report-truncated-device.patch
-Patch053: 0054-%{name}-Correct-typos-punctuation-and-grammar-in-man.patch
-Patch054: 0055-Manage-Block-unsafe-member-failing.patch
-Patch055: 0056-Monitor-Fix-statelist-memory-leaks.patch
-Patch056: 0057-%{name}-added-support-for-Intel-Alderlake-RST-on-VMD-p.patch
-Patch057: 0058-%{name}-Add-Documentation-entries-to-systemd-services.patch
-Patch058: 0059-ReadMe-fix-command-line-help.patch
-Patch059: 0060-%{name}-replace-container-level-checking-with-inline.patch
-Patch060: 0061-Mdmonitor-Omit-non-md-devices.patch
-Patch061: 0062-Mdmonitor-Split-alert-into-separate-functions.patch
-Patch062: 0063-Monitor-block-if-monitor-modes-are-combined.patch
-Patch063: 0064-Update-%{name}-Monitor-manual.patch
-Patch064: 0065-Grow-fix-possible-memory-leak.patch
-Patch065: 0066-%{name}-create-ident_init.patch
-Patch066: 0067-%{name}-Add-option-validation-for-update-subarray.patch
-Patch067: 0068-Fix-update-subarray-on-active-volume.patch
-Patch068: 0069-Add-code-specific-update-options-to-enum.patch
-Patch069: 0070-super-ddf-Remove-update_super_ddf.patch
-Patch070: 0071-super0-refactor-the-code-for-enum.patch
-Patch071: 0072-super1-refactor-the-code-for-enum.patch
-Patch072: 0073-super-intel-refactor-the-code-for-enum.patch
-Patch073: 0074-Change-update-to-enum-in-update_super-and-update_sub.patch
-Patch074: 0075-Manage-Incremental-code-refactor-string-to-enum.patch
-Patch075: 0076-Change-char-to-enum-in-context-update-refactor-code.patch
-Patch076: 0077-mdmon-fix-segfault.patch
-Patch077: 0078-util-remove-obsolete-code-from-get_md_name.patch
-Patch078: 0079-%{name}-udev-Don-t-handle-change-event-on-raw-devices.patch
-Patch079: 0080-Manage-do-not-check-array-state-when-drive-is-remove.patch
-Patch080: 0081-incremental-manage-do-not-verify-if-remove-is-safe.patch
-Patch081: 0082-super-intel-make-freesize-not-required-for-chunk-siz.patch
-Patch082: 0083-manage-move-comment-with-function-description.patch
-Patch083: 0084-Revert-%{name}-systemd-remove-KillMode-none-from-servi.patch
-Patch084: 0085-Grow-fix-can-t-change-bitmap-type-from-none-to-clust.patch
-Patch085: 0086-Fix-NULL-dereference-in-super_by_fd.patch
-Patch086: 0087-Mdmonitor-Make-alert_info-global.patch
-Patch087: 0088-Mdmonitor-Pass-events-to-alert-using-enums-instead-o.patch
-Patch088: 0089-Mdmonitor-Add-helper-functions.patch
-Patch089: 0090-Add-helpers-to-determine-whether-directories-or-file.patch
-Patch090: 0091-Mdmonitor-Refactor-write_autorebuild_pid.patch
-Patch091: 0092-Mdmonitor-Refactor-check_one_sharer-for-better-error.patch
-Patch092: 0093-util.c-reorder-code-lines-in-parse_layout_faulty.patch
-Patch093: 0094-util.c-fix-memleak-in-parse_layout_faulty.patch
-Patch094: 0095-Detail.c-fix-memleak-in-Detail.patch
-Patch095: 0096-isuper-intel.c-fix-double-free-in-load_imsm_mpb.patch
-Patch096: 0097-super-intel.c-fix-memleak-in-find_disk_attached_hba.patch
-Patch097: 0098-super-ddf.c-fix-memleak-in-get_vd_num_of_subarray.patch
-Patch098: 0099-Create-goto-abort_locked-instead-of-return-1-in-erro.patch
-Patch099: 0100-Create-remove-safe_mode_delay-local-variable.patch
-Patch100: 0101-Create-Factor-out-add_disks-helpers.patch
-Patch101: 0102-%{name}-Introduce-pr_info.patch
-Patch102: 0103-%{name}-Add-write-zeros-option-for-Create.patch
-Patch103: 0104-tests-00raid5-zero-Introduce-test-to-exercise-write-.patch
-Patch104: 0105-manpage-Add-write-zeroes-option-to-manpage.patch
-Patch105: 0106-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch
-Patch106: 0107-Use-existence-of-etc-initrd-release-to-detect-initrd.patch
-Patch107: 0108-mdmon-don-t-test-both-all-and-container_name.patch
-Patch108: 0109-mdmon-change-systemd-unit-file-to-use-foreground.patch
-Patch109: 0110-mdmon-Remove-need-for-KillMode-none.patch
-Patch110: 0111-mdmon-Improve-switchroot-interactions.patch
-Patch111: 0112-mdopen-always-try-create_named_array.patch
-Patch112: 0113-Improvements-for-IMSM_NO_PLATFORM-testing.patch
-Patch113: 0114-Revert-Revert-%{name}-systemd-remove-KillMode-none-fro.patch
-Patch114: 0115-Create-Fix-checking-for-container-in-update_metadata.patch
-Patch115: 0116-Fix-null-pointer-for-incremental-in-%{name}.patch
-Patch116: 0117-super1-fix-truncation-check-for-journal-device.patch
-Patch117: 0118-Fix-some-cases-eyesore-formatting.patch
-Patch118: 0119-Bump-minimum-kernel-version-to-2.6.32.patch
-Patch119: 0120-Remove-the-config-files-in-mdcheck_start-continue-se.patch
BuildRequires: corosync-devel
BuildRequires: dlm-devel
BuildRequires: groff
@@ -160,7 +39,7 @@ Requires: rc-scripts >= 0.4.2.4-2
Requires: systemd-units >= 38
Suggests: cronjobs
%{!?with_initrd:Obsoletes: mdadm-initrd < %{version}-%{release}}
-Obsoletes: mdctl
+Obsoletes: mdctl < 0.5
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _sbindir /sbin
@@ -191,126 +70,6 @@ skonsolidowane na potrzeby initrd.
%prep
%setup -q
-%patch000 -p1
-%patch001 -p1
-%patch002 -p1
-%patch003 -p1
-%patch004 -p1
-%patch005 -p1
-%patch006 -p1
-%patch007 -p1
-%patch008 -p1
-%patch009 -p1
-%patch010 -p1
-%patch011 -p1
-%patch012 -p1
-%patch013 -p1
-%patch014 -p1
-%patch015 -p1
-%patch016 -p1
-%patch017 -p1
-%patch018 -p1
-%patch019 -p1
-%patch020 -p1
-%patch021 -p1
-%patch022 -p1
-%patch023 -p1
-%patch024 -p1
-%patch025 -p1
-%patch026 -p1
-%patch027 -p1
-%patch028 -p1
-%patch029 -p1
-%patch030 -p1
-%patch031 -p1
-%patch032 -p1
-%patch033 -p1
-%patch034 -p1
-%patch035 -p1
-%patch036 -p1
-%patch037 -p1
-%patch038 -p1
-%patch039 -p1
-%patch040 -p1
-%patch041 -p1
-%patch042 -p1
-%patch043 -p1
-%patch044 -p1
-%patch045 -p1
-%patch046 -p1
-%patch047 -p1
-%patch048 -p1
-%patch049 -p1
-%patch050 -p1
-%patch051 -p1
-%patch052 -p1
-%patch053 -p1
-%patch054 -p1
-%patch055 -p1
-%patch056 -p1
-%patch057 -p1
-%patch058 -p1
-%patch059 -p1
-%patch060 -p1
-%patch061 -p1
-%patch062 -p1
-%patch063 -p1
-%patch064 -p1
-%patch065 -p1
-%patch066 -p1
-%patch067 -p1
-%patch068 -p1
-%patch069 -p1
-%patch070 -p1
-%patch071 -p1
-%patch072 -p1
-%patch073 -p1
-%patch074 -p1
-%patch075 -p1
-%patch076 -p1
-%patch077 -p1
-%patch078 -p1
-%patch079 -p1
-%patch080 -p1
-%patch081 -p1
-%patch082 -p1
-%patch083 -p1
-%patch084 -p1
-%patch085 -p1
-%patch086 -p1
-%patch087 -p1
-%patch088 -p1
-%patch089 -p1
-%patch090 -p1
-%patch091 -p1
-%patch092 -p1
-%patch093 -p1
-%patch094 -p1
-%patch095 -p1
-%patch096 -p1
-%patch097 -p1
-%patch098 -p1
-%patch099 -p1
-%patch100 -p1
-%patch101 -p1
-%patch102 -p1
-%patch103 -p1
-%patch104 -p1
-%patch105 -p1
-%patch106 -p1
-%patch107 -p1
-%patch108 -p1
-%patch109 -p1
-%patch110 -p1
-%patch111 -p1
-%patch112 -p1
-%patch113 -p1
-%patch114 -p1
-%patch115 -p1
-%patch116 -p1
-%patch117 -p1
-%patch118 -p1
-%patch119 -p1
%build
%if %{with initrd}
diff --git a/0001-Unify-error-message.patch b/0001-Unify-error-message.patch
deleted file mode 100644
index 14dc69c..0000000
--- a/0001-Unify-error-message.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From f1cc8ab9ab6a92c3cd94ab7590b46285e214681e Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Tue, 15 Mar 2022 09:30:30 +0100
-Subject: [PATCH 01/83] Unify error message.
-
-Provide the same error message for the same error that can occur in Grow.c and super-intel.c.
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Grow.c | 4 ++--
- super-intel.c | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/Grow.c b/Grow.c
-index 9c6fc95e..9a947204 100644
---- a/Grow.c
-+++ b/Grow.c
-@@ -1001,8 +1001,8 @@ int remove_disks_for_takeover(struct supertype *st,
- rv = 1;
- sysfs_free(arrays);
- if (rv) {
-- pr_err("Error. Cannot perform operation on /dev/%s\n", st->devnm);
-- pr_err("For this operation it MUST be single array in container\n");
-+ pr_err("Error. Cannot perform operation on %s- for this operation "
-+ "it MUST be single array in container\n", st->devnm);
- return rv;
- }
- }
-diff --git a/super-intel.c b/super-intel.c
-index d5fad102..5ffa7636 100644
---- a/super-intel.c
-+++ b/super-intel.c
-@@ -11683,8 +11683,8 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st,
- struct imsm_super *mpb = super->anchor;
-
- if (mpb->num_raid_devs > 1) {
-- pr_err("Error. Cannot perform operation on %s- for this operation it MUST be single array in container\n",
-- geo->dev_name);
-+ pr_err("Error. Cannot perform operation on %s- for this operation "
-+ "it MUST be single array in container\n", geo->dev_name);
- change = -1;
- }
- }
---
-2.38.1
-
diff --git a/0002-mdadm-Fix-double-free.patch b/0002-mdadm-Fix-double-free.patch
deleted file mode 100644
index e6b7d37..0000000
--- a/0002-mdadm-Fix-double-free.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5ce5a15f0bf007e850e15259bba4f53736605fb2 Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Fri, 25 Mar 2022 12:48:59 +0100
-Subject: [PATCH 02/83] mdadm: Fix double free
-
-If there was a size mismatch after creation it would get fixed on grow
-in imsm_fix_size_mismatch(), but due to double free "double free or corruption (fasttop)"
-error occurs and grow cannot proceed.
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- super-intel.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/super-intel.c b/super-intel.c
-index 5ffa7636..6ff336ee 100644
---- a/super-intel.c
-+++ b/super-intel.c
-@@ -11783,9 +11783,8 @@ static int imsm_fix_size_mismatch(struct supertype *st, int subarray_index)
- st->update_tail = &st->updates;
- } else {
- imsm_sync_metadata(st);
-+ free(update);
- }
--
-- free(update);
- }
- ret_val = 0;
- exit:
---
-2.38.1
-
diff --git a/0003-Grow_reshape-Add-r0-grow-size-error-message-and-upda.patch b/0003-Grow_reshape-Add-r0-grow-size-error-message-and-upda.patch
deleted file mode 100644
index e43cdaa..0000000
--- a/0003-Grow_reshape-Add-r0-grow-size-error-message-and-upda.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From fea026b4849182fc8413014c81456e7215af28d9 Mon Sep 17 00:00:00 2001
-From: Mateusz Kusiak <mateusz.kusiak at intel.com>
-Date: Wed, 23 Mar 2022 15:05:19 +0100
-Subject: [PATCH 03/83] Grow_reshape: Add r0 grow size error message and update
- man
-
-Grow size on r0 is not supported for imsm and native metadata.
-Add proper error message.
-Update man for proper use of --size.
-Signed-off-by: Mateusz Kusiak <mateusz.kusiak at intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Grow.c | 6 ++++++
- mdadm.8.in | 19 ++++++++++++-------
- 2 files changed, 18 insertions(+), 7 deletions(-)
-
-diff --git a/Grow.c b/Grow.c
-index 9a947204..aa72490b 100644
---- a/Grow.c
-+++ b/Grow.c
-@@ -1998,6 +1998,12 @@ int Grow_reshape(char *devname, int fd,
- goto release;
- }
-
-+ if (array.level == 0) {
-+ pr_err("Component size change is not supported for RAID0\n");
-+ rv = 1;
-+ goto release;
-+ }
-+
- if (reshape_super(st, s->size, UnSet, UnSet, 0, 0, UnSet, NULL,
- devname, APPLY_METADATA_CHANGES,
- c->verbose > 0)) {
-diff --git a/mdadm.8.in b/mdadm.8.in
-index be902dba..e2a42425 100644
---- a/mdadm.8.in
-+++ b/mdadm.8.in
-@@ -459,7 +459,8 @@ number of spare devices.
-
- .TP
- .BR \-z ", " \-\-size=
--Amount (in Kilobytes) of space to use from each drive in RAID levels 1/4/5/6.
-+Amount (in Kilobytes) of space to use from each drive in RAID levels 1/4/5/6/10
-+and for RAID 0 on external metadata.
- This must be a multiple of the chunk size, and must leave about 128Kb
- of space at the end of the drive for the RAID superblock.
- If this is not specified
-@@ -478,10 +479,19 @@ To guard against this it can be useful to set the initial size
- slightly smaller than the smaller device with the aim that it will
- still be larger than any replacement.
-
-+This option can be used with
-+.B \-\-create
-+for determining 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
-+.B RAID 0
-+array is only valid for external metadata.
-+
- This value can be set with
- .B \-\-grow
--for RAID level 1/4/5/6 though
-+for RAID level 1/4/5/6/10 though
- DDF arrays may not be able to support this.
-+RAID 0 array size cannot be changed.
- If the array was created with a size smaller than the currently
- active drives, the extra space can be accessed using
- .BR \-\-grow .
-@@ -501,11 +511,6 @@ problems the array can be made bigger again with no loss with another
- .B "\-\-grow \-\-size="
- command.
-
--This value cannot be used when creating a
--.B CONTAINER
--such as with DDF and IMSM metadata, though it perfectly valid when
--creating an array inside a container.
--
- .TP
- .BR \-Z ", " \-\-array\-size=
- This is only meaningful with
---
-2.38.1
-
diff --git a/0004-udev-adapt-rules-to-systemd-v247.patch b/0004-udev-adapt-rules-to-systemd-v247.patch
deleted file mode 100644
index a755c53..0000000
--- a/0004-udev-adapt-rules-to-systemd-v247.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From cf9a109209aad285372b67306d54118af6fc522b Mon Sep 17 00:00:00 2001
-From: Mariusz Tkaczyk <mariusz.tkaczyk at linux.intel.com>
-Date: Fri, 14 Jan 2022 16:44:33 +0100
-Subject: [PATCH 04/83] udev: adapt rules to systemd v247
-
-New events have been added in kernel 4.14 ("bind" and "unbind").
-Systemd maintainer suggests to modify "add|change" branches.
-This patches implements their suggestions. There is no issue yet because
-new event types are not used in md.
-
-Please see systemd announcement for details[1].
-
-[1] https://lists.freedesktop.org/archives/systemd-devel/2020-November/045646.html
-
-Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk at linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- udev-md-raid-arrays.rules | 2 +-
- udev-md-raid-assembly.rules | 5 +++--
- udev-md-raid-safe-timeouts.rules | 2 +-
- 3 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/udev-md-raid-arrays.rules b/udev-md-raid-arrays.rules
-index 13c9076e..2967ace1 100644
---- a/udev-md-raid-arrays.rules
-+++ b/udev-md-raid-arrays.rules
-@@ -3,7 +3,7 @@
- SUBSYSTEM!="block", GOTO="md_end"
-
- # handle md arrays
--ACTION!="add|change", GOTO="md_end"
-+ACTION=="remove", GOTO="md_end"
- KERNEL!="md*", GOTO="md_end"
-
- # partitions have no md/{array_state,metadata_version}, but should not
-diff --git a/udev-md-raid-assembly.rules b/udev-md-raid-assembly.rules
-index d668cddd..39b4344b 100644
---- a/udev-md-raid-assembly.rules
-+++ b/udev-md-raid-assembly.rules
-@@ -30,8 +30,9 @@ LABEL="md_inc"
-
- # remember you can limit what gets auto/incrementally assembled by
- # mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY'
--ACTION=="add|change", IMPORT{program}="BINDIR/mdadm --incremental --export $devnode --offroot $env{DEVLINKS}"
--ACTION=="add|change", ENV{MD_STARTED}=="*unsafe*", ENV{MD_FOREIGN}=="no", ENV{SYSTEMD_WANTS}+="mdadm-last-resort@$env{MD_DEVICE}.timer"
-+ACTION!="remove", IMPORT{program}="BINDIR/mdadm --incremental --export $devnode --offroot $env{DEVLINKS}"
-+ACTION!="remove", ENV{MD_STARTED}=="*unsafe*", ENV{MD_FOREIGN}=="no", ENV{SYSTEMD_WANTS}+="mdadm-last-resort@$env{MD_DEVICE}.timer"
-+
- ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="BINDIR/mdadm -If $name --path $env{ID_PATH}"
- ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="BINDIR/mdadm -If $name"
-
-diff --git a/udev-md-raid-safe-timeouts.rules b/udev-md-raid-safe-timeouts.rules
-index 12bdcaa8..2e185cee 100644
---- a/udev-md-raid-safe-timeouts.rules
-+++ b/udev-md-raid-safe-timeouts.rules
-@@ -50,7 +50,7 @@ ENV{DEVTYPE}!="partition", GOTO="md_timeouts_end"
-
- IMPORT{program}="/sbin/mdadm --examine --export $devnode"
-
--ACTION=="add|change", \
-+ACTION!="remove", \
- ENV{ID_FS_TYPE}=="linux_raid_member", \
- ENV{MD_LEVEL}=="raid[1-9]*", \
- TEST=="/sys/block/$parent/device/timeout", \
---
-2.38.1
-
diff --git a/0005-Replace-error-prone-signal-with-sigaction.patch b/0005-Replace-error-prone-signal-with-sigaction.patch
deleted file mode 100644
index dd04b8c..0000000
--- a/0005-Replace-error-prone-signal-with-sigaction.patch
+++ /dev/null
@@ -1,252 +0,0 @@
-From 83a379cfbd283b387919fe05d44eb4c49e155ad6 Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Mon, 21 Feb 2022 13:05:20 +0100
-Subject: [PATCH 05/83] Replace error prone signal() with sigaction()
-
-Up to this date signal() was used which implementation could vary [1].
-Sigaction() call is preferred. This commit introduces replacement
-from signal() to sigaction() by the use of signal_s() wrapper.
-Also remove redundant signal.h header includes.
-
-[1] https://man7.org/linux/man-pages/man2/signal.2.html
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Grow.c | 4 ++--
- Monitor.c | 5 +++--
- managemon.c | 1 -
- mdadm.h | 22 ++++++++++++++++++++++
- mdmon.c | 1 -
- monitor.c | 1 -
- probe_roms.c | 6 +++---
- raid6check.c | 25 +++++++++++++++----------
- util.c | 1 -
- 9 files changed, 45 insertions(+), 21 deletions(-)
-
-diff --git a/Grow.c b/Grow.c
-index aa72490b..18c5719b 100644
---- a/Grow.c
-+++ b/Grow.c
-@@ -26,7 +26,6 @@
- #include <sys/mman.h>
- #include <stddef.h>
- #include <stdint.h>
--#include <signal.h>
- #include <sys/wait.h>
-
- #if ! defined(__BIG_ENDIAN) && ! defined(__LITTLE_ENDIAN)
-@@ -3566,7 +3565,8 @@ started:
- fd = -1;
- mlockall(MCL_FUTURE);
-
-- signal(SIGTERM, catch_term);
-+ if (signal_s(SIGTERM, catch_term) == SIG_ERR)
-+ goto release;
-
- if (st->ss->external) {
- /* metadata handler takes it from here */
-diff --git a/Monitor.c b/Monitor.c
-index 30c031a2..c0ab5412 100644
---- a/Monitor.c
-+++ b/Monitor.c
-@@ -26,7 +26,6 @@
- #include "md_p.h"
- #include "md_u.h"
- #include <sys/wait.h>
--#include <signal.h>
- #include <limits.h>
- #include <syslog.h>
- #ifndef NO_LIBUDEV
-@@ -435,8 +434,10 @@ static void alert(char *event, char *dev, char *disc, struct alert_info *info)
- if (mp) {
- FILE *mdstat;
- char hname[256];
-+
- gethostname(hname, sizeof(hname));
-- signal(SIGPIPE, SIG_IGN);
-+ signal_s(SIGPIPE, SIG_IGN);
-+
- if (info->mailfrom)
- fprintf(mp, "From: %s\n", info->mailfrom);
- else
-diff --git a/managemon.c b/managemon.c
-index bb7334cf..0e9bdf00 100644
---- a/managemon.c
-+++ b/managemon.c
-@@ -106,7 +106,6 @@
- #include "mdmon.h"
- #include <sys/syscall.h>
- #include <sys/socket.h>
--#include <signal.h>
-
- static void close_aa(struct active_array *aa)
- {
-diff --git a/mdadm.h b/mdadm.h
-index c7268a71..26e7e5cd 100644
---- a/mdadm.h
-+++ b/mdadm.h
-@@ -46,6 +46,7 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
- #include <string.h>
- #include <syslog.h>
- #include <stdbool.h>
-+#include <signal.h>
- /* Newer glibc requires sys/sysmacros.h directly for makedev() */
- #include <sys/sysmacros.h>
- #ifdef __dietlibc__
-@@ -1729,6 +1730,27 @@ static inline char *to_subarray(struct mdstat_ent *ent, char *container)
- return &ent->metadata_version[10+strlen(container)+1];
- }
-
-+/**
-+ * signal_s() - Wrapper for sigaction() with signal()-like interface.
-+ * @sig: The signal to set the signal handler to.
-+ * @handler: The signal handler.
-+ *
-+ * Return: previous handler or SIG_ERR on failure.
-+ */
-+static inline sighandler_t signal_s(int sig, sighandler_t handler)
-+{
-+ struct sigaction new_act;
-+ struct sigaction old_act;
-+
-+ new_act.sa_handler = handler;
-+ new_act.sa_flags = 0;
-+
-+ if (sigaction(sig, &new_act, &old_act) == 0)
-+ return old_act.sa_handler;
-+
-+ return SIG_ERR;
-+}
-+
- #ifdef DEBUG
- #define dprintf(fmt, arg...) \
- fprintf(stderr, "%s: %s: "fmt, Name, __func__, ##arg)
-diff --git a/mdmon.c b/mdmon.c
-index c71e62c6..5570574b 100644
---- a/mdmon.c
-+++ b/mdmon.c
-@@ -56,7 +56,6 @@
- #include <errno.h>
- #include <string.h>
- #include <fcntl.h>
--#include <signal.h>
- #include <dirent.h>
- #ifdef USE_PTHREADS
- #include <pthread.h>
-diff --git a/monitor.c b/monitor.c
-index e0d3be67..b877e595 100644
---- a/monitor.c
-+++ b/monitor.c
-@@ -22,7 +22,6 @@
- #include "mdmon.h"
- #include <sys/syscall.h>
- #include <sys/select.h>
--#include <signal.h>
-
- static char *array_states[] = {
- "clear", "inactive", "suspended", "readonly", "read-auto",
-diff --git a/probe_roms.c b/probe_roms.c
-index 7ea04c7a..94c80c2c 100644
---- a/probe_roms.c
-+++ b/probe_roms.c
-@@ -22,7 +22,6 @@
- #include "probe_roms.h"
- #include "mdadm.h"
- #include <unistd.h>
--#include <signal.h>
- #include <fcntl.h>
- #include <sys/mman.h>
- #include <sys/stat.h>
-@@ -69,7 +68,8 @@ static int probe_address16(const __u16 *ptr, __u16 *val)
-
- void probe_roms_exit(void)
- {
-- signal(SIGBUS, SIG_DFL);
-+ signal_s(SIGBUS, SIG_DFL);
-+
- if (rom_fd >= 0) {
- close(rom_fd);
- rom_fd = -1;
-@@ -98,7 +98,7 @@ int probe_roms_init(unsigned long align)
- if (roms_init())
- return -1;
-
-- if (signal(SIGBUS, sigbus) == SIG_ERR)
-+ if (signal_s(SIGBUS, sigbus) == SIG_ERR)
- rc = -1;
- if (rc == 0) {
- fd = open("/dev/mem", O_RDONLY);
-diff --git a/raid6check.c b/raid6check.c
-index a8e6005b..99477761 100644
---- a/raid6check.c
-+++ b/raid6check.c
-@@ -24,7 +24,6 @@
-
- #include "mdadm.h"
- #include <stdint.h>
--#include <signal.h>
- #include <sys/mman.h>
-
- #define CHECK_PAGE_BITS (12)
-@@ -130,30 +129,36 @@ void raid6_stats(int *disk, int *results, int raid_disks, int chunk_size)
- }
-
- int lock_stripe(struct mdinfo *info, unsigned long long start,
-- int chunk_size, int data_disks, sighandler_t *sig) {
-+ int chunk_size, int data_disks, sighandler_t *sig)
-+{
- int rv;
-+
-+ sig[0] = signal_s(SIGTERM, SIG_IGN);
-+ sig[1] = signal_s(SIGINT, SIG_IGN);
-+ sig[2] = signal_s(SIGQUIT, SIG_IGN);
-+
-+ if (sig[0] == SIG_ERR || sig[1] == SIG_ERR || sig[2] == SIG_ERR)
-+ return 1;
-+
- if(mlockall(MCL_CURRENT | MCL_FUTURE) != 0) {
- return 2;
- }
-
-- sig[0] = signal(SIGTERM, SIG_IGN);
-- sig[1] = signal(SIGINT, SIG_IGN);
-- sig[2] = signal(SIGQUIT, SIG_IGN);
--
- rv = sysfs_set_num(info, NULL, "suspend_lo", start * chunk_size * data_disks);
- rv |= sysfs_set_num(info, NULL, "suspend_hi", (start + 1) * chunk_size * data_disks);
- return rv * 256;
- }
-
--int unlock_all_stripes(struct mdinfo *info, sighandler_t *sig) {
-+int unlock_all_stripes(struct mdinfo *info, sighandler_t *sig)
-+{
- int rv;
- rv = sysfs_set_num(info, NULL, "suspend_lo", 0x7FFFFFFFFFFFFFFFULL);
- rv |= sysfs_set_num(info, NULL, "suspend_hi", 0);
- rv |= sysfs_set_num(info, NULL, "suspend_lo", 0);
-
-- signal(SIGQUIT, sig[2]);
-- signal(SIGINT, sig[1]);
-- signal(SIGTERM, sig[0]);
-+ signal_s(SIGQUIT, sig[2]);
-+ signal_s(SIGINT, sig[1]);
-+ signal_s(SIGTERM, sig[0]);
-
- if(munlockall() != 0)
- return 3;
-diff --git a/util.c b/util.c
-index 3d05d074..cc94f96e 100644
---- a/util.c
-+++ b/util.c
-@@ -35,7 +35,6 @@
- #include <poll.h>
- #include <ctype.h>
- #include <dirent.h>
--#include <signal.h>
- #include <dlfcn.h>
-
-
---
-2.38.1
-
diff --git a/0006-mdadm-Respect-config-file-location-in-man.patch b/0006-mdadm-Respect-config-file-location-in-man.patch
deleted file mode 100644
index bee28ac..0000000
--- a/0006-mdadm-Respect-config-file-location-in-man.patch
+++ /dev/null
@@ -1,1533 +0,0 @@
-From e9dd5644843e2013a7dd1a8a5da2b9fa35837416 Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Fri, 18 Mar 2022 09:26:04 +0100
-Subject: [PATCH 06/83] mdadm: Respect config file location in man
-
-Default config file location could differ depending on OS (e.g. Debian family).
-This patch takes default config file into consideration when creating mdadm.man
-file as well as mdadm.conf.man.
-
-Rename mdadm.conf.5 to mdadm.conf.5.in. Now mdadm.conf.5 is generated automatically.
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Acked-by: Coly Li <colyli at suse.de>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- .gitignore | 1 +
- Makefile | 7 +-
- mdadm.8.in | 16 +-
- mdadm.conf.5 | 706 ------------------------------------------------
- mdadm.conf.5.in | 706 ++++++++++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 721 insertions(+), 715 deletions(-)
- delete mode 100644 mdadm.conf.5
- create mode 100644 mdadm.conf.5.in
-
-diff --git a/.gitignore b/.gitignore
-index 217fe76d..8d791c6f 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -3,6 +3,7 @@
- /*-stamp
- /mdadm
- /mdadm.8
-+/mdadm.conf.5
- /mdadm.udeb
- /mdassemble
- /mdmon
-diff --git a/Makefile b/Makefile
-index 2a51d813..bf126033 100644
---- a/Makefile
-+++ b/Makefile
-@@ -227,7 +227,12 @@ raid6check : raid6check.o mdadm.h $(CHECK_OBJS)
-
- mdadm.8 : mdadm.8.in
- sed -e 's/{DEFAULT_METADATA}/$(DEFAULT_METADATA)/g' \
-- -e 's,{MAP_PATH},$(MAP_PATH),g' mdadm.8.in > mdadm.8
-+ -e 's,{MAP_PATH},$(MAP_PATH),g' -e 's,{CONFFILE},$(CONFFILE),g' \
-+ -e 's,{CONFFILE2},$(CONFFILE2),g' mdadm.8.in > mdadm.8
-+
-+mdadm.conf.5 : mdadm.conf.5.in
-+ sed -e 's,{CONFFILE},$(CONFFILE),g' \
-+ -e 's,{CONFFILE2},$(CONFFILE2),g' mdadm.conf.5.in > mdadm.conf.5
-
- mdadm.man : mdadm.8
- man -l mdadm.8 > mdadm.man
-diff --git a/mdadm.8.in b/mdadm.8.in
-index e2a42425..8b21ffd4 100644
---- a/mdadm.8.in
-+++ b/mdadm.8.in
-@@ -267,13 +267,13 @@ the exact meaning of this option in different contexts.
- .TP
- .BR \-c ", " \-\-config=
- Specify the config file or directory. Default is to use
--.B /etc/mdadm.conf
-+.B {CONFFILE}
- and
--.BR /etc/mdadm.conf.d ,
-+.BR {CONFFILE}.d ,
- or if those are missing then
--.B /etc/mdadm/mdadm.conf
-+.B {CONFFILE2}
- and
--.BR /etc/mdadm/mdadm.conf.d .
-+.BR {CONFFILE2}.d .
- If the config file given is
- .B "partitions"
- then nothing will be read, but
-@@ -2014,9 +2014,9 @@ The config file is only used if explicitly named with
- or requested with (a possibly implicit)
- .BR \-\-scan .
- In the later case,
--.B /etc/mdadm.conf
-+.B {CONFFILE}
- or
--.B /etc/mdadm/mdadm.conf
-+.B {CONFFILE2}
- is used.
-
- If
-@@ -3344,7 +3344,7 @@ uses this to find arrays when
- is given in Misc mode, and to monitor array reconstruction
- on Monitor mode.
-
--.SS /etc/mdadm.conf
-+.SS {CONFFILE} (or {CONFFILE2})
-
- The config file lists which devices may be scanned to see if
- they contain MD super block, and gives identifying information
-@@ -3352,7 +3352,7 @@ they contain MD super block, and gives identifying information
- .BR mdadm.conf (5)
- for more details.
-
--.SS /etc/mdadm.conf.d
-+.SS {CONFFILE}.d (or {CONFFILE2}.d)
-
- A directory containing configuration files which are read in lexical
- order.
-diff --git a/mdadm.conf.5 b/mdadm.conf.5
-deleted file mode 100644
-index 74a21c5f..00000000
---- a/mdadm.conf.5
-+++ /dev/null
-@@ -1,706 +0,0 @@
--.\" Copyright Neil Brown and others.
--.\" This program is free software; you can redistribute it and/or modify
--.\" it under the terms of the GNU General Public License as published by
--.\" the Free Software Foundation; either version 2 of the License, or
--.\" (at your option) any later version.
--.\" See file COPYING in distribution for details.
--.TH MDADM.CONF 5
--.SH NAME
--mdadm.conf \- configuration for management of Software RAID with mdadm
--.SH SYNOPSIS
--/etc/mdadm.conf
--.SH DESCRIPTION
--.PP
--.I mdadm
--is a tool for creating, managing, and monitoring RAID devices using the
--.B md
--driver in Linux.
--.PP
--Some common tasks, such as assembling all arrays, can be simplified
--by describing the devices and arrays in this configuration file.
--
--.SS SYNTAX
--The file should be seen as a collection of words separated by white
--space (space, tab, or newline).
--Any word that beings with a hash sign (#) starts a comment and that
--word together with the remainder of the line is ignored.
--
--Spaces can be included in a word using quotation characters. Either
--single quotes
--.RB ( ' )
--or double quotes (\fB"\fP)
--may be used. All the characters from one quotation character to
--next identical character are protected and will not be used to
--separate words to start new quoted strings. To include a single quote
--it must be between double quotes. To include a double quote it must
--be between single quotes.
--
--Any line that starts with white space (space or tab) is treated as
--though it were a continuation of the previous line.
--
--Empty lines are ignored, but otherwise each (non continuation) line
--must start with a keyword as listed below. The keywords are case
--insensitive and can be abbreviated to 3 characters.
--
--The keywords are:
--.TP
--.B DEVICE
--A
--.B device
--line lists the devices (whole devices or partitions) that might contain
--a component of an MD array. When looking for the components of an
--array,
--.I mdadm
--will scan these devices (or any devices listed on the command line).
--
--The
--.B device
--line may contain a number of different devices (separated by spaces)
--and each device name can contain wild cards as defined by
--.BR glob (7).
--
--Also, there may be several device lines present in the file.
--
--Alternatively, a
--.B device
--line can contain either or both of the words
--.B containers
--and
--.BR partitions .
--The word
--.B containers
--will cause
--.I mdadm
--to look for assembled CONTAINER arrays and included them as a source
--for assembling further arrays.
--
--The word
--.I partitions
--will cause
--.I mdadm
--to read
--.I /proc/partitions
--and include all devices and partitions found therein.
--.I mdadm
--does not use the names from
--.I /proc/partitions
--but only the major and minor device numbers. It scans
--.I /dev
--to find the name that matches the numbers.
--
--If no DEVICE line is present, then "DEVICE partitions containers" is assumed.
--
--For example:
--.IP
--DEVICE /dev/hda* /dev/hdc*
--.br
--DEV /dev/sd*
--.br
--DEVICE /dev/disk/by-path/pci*
--.br
--DEVICE partitions
--
--.TP
--.B ARRAY
--The ARRAY lines identify actual arrays. The second word on the line
--may be the name of the device where the array is normally
--assembled, such as
--.B /dev/md1
--or
--.BR /dev/md/backup .
--If the name does not start with a slash
--.RB (' / '),
--it is treated as being in
--.BR /dev/md/ .
--Alternately the word
--.B <ignore>
--(complete with angle brackets) can be given in which case any array
--which matches the rest of the line will never be automatically assembled.
--If no device name is given,
--.I mdadm
--will use various heuristics to determine an appropriate name.
--
--Subsequent words identify the array, or identify the array as a member
--of a group. If multiple identities are given,
--then a component device must match ALL identities to be considered a
--match. Each identity word has a tag, and equals sign, and some value.
--The tags are:
--.RS 4
--.TP
--.B uuid=
--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
--created as /dev/mdX, then the minor number X is stored.
--.TP
--.B devices=
--The value is a comma separated list of device names or device name
--patterns.
--Only devices with names which match one entry in the list will be used
--to assemble the array. Note that the devices
--listed there must also be listed on a DEVICE line.
--.TP
--.B level=
--The value is a RAID level. This is not normally used to
--identify an array, but is supported so that the output of
--
--.B "mdadm \-\-examine \-\-scan"
--
--can be use directly in the configuration file.
--.TP
--.B num\-devices=
--The value is the number of devices in a complete active array. As with
--.B level=
--this is mainly for compatibility with the output of
--
--.BR "mdadm \-\-examine \-\-scan" .
--
--.TP
--.B spares=
--The value is a number of spare devices to expect the array to have.
--The sole use of this keyword and value is as follows:
--.B mdadm \-\-monitor
--will report an array if it is found to have fewer than this number of
--spares when
--.B \-\-monitor
--starts or when
--.B \-\-oneshot
--is used.
--
--.TP
--.B spare\-group=
--The value is a textual name for a group of arrays. All arrays with
--the same
--.B spare\-group
--name are considered to be part of the same group. The significance of
--a group of arrays is that
--.I mdadm
--will, when monitoring the arrays, move a spare drive from one array in
--a group to another array in that group if the first array had a failed
--or missing drive but no spare.
--
--.TP
--.B auto=
--This option is rarely needed with mdadm-3.0, particularly if use with
--the Linux kernel v2.6.28 or later.
--It tells
--.I mdadm
--whether to use partitionable array or non-partitionable arrays and,
--in the absence of
--.IR udev ,
--how many partition devices to create. From 2.6.28 all md array
--devices are partitionable, hence this option is not needed.
--
--The value of this option can be "yes" or "md" to indicate that a
--traditional, non-partitionable md array should be created, or "mdp",
--"part" or "partition" to indicate that a partitionable md array (only
--available in linux 2.6 and later) should be used. This later set can
--also have a number appended to indicate how many partitions to create
--device files for, e.g.
--.BR auto=mdp5 .
--The default is 4.
--
--.TP
--.B bitmap=
--The option specifies a file in which a write-intent bitmap should be
--found. When assembling the array,
--.I mdadm
--will provide this file to the
--.B md
--driver as the bitmap file. This has the same function as the
--.B \-\-bitmap\-file
--option to
--.BR \-\-assemble .
--
--.TP
--.B metadata=
--Specify the metadata format that the array has. This is mainly
--recognised for comparability with the output of
--.BR "mdadm \-Es" .
--
--.TP
--.B container=
--Specify that this array is a member array of some container. The
--value given can be either a path name in /dev, or a UUID of the
--container array.
--
--.TP
--.B member=
--Specify that this array is a member array of some container. Each
--type of container has some way to enumerate member arrays, often a
--simple sequence number. The value identifies which member of a
--container the array is. It will usually accompany a "container=" word.
--.RE
--
--.TP
--.B MAILADDR
--The
--.B mailaddr
--line gives an E-mail address that alerts should be
--sent to when
--.I mdadm
--is running in
--.B \-\-monitor
--mode (and was given the
--.B \-\-scan
--option). There should only be one
--.B MAILADDR
--line and it should have only one address. Any subsequent addresses
--are silently ignored.
--
--.TP
--.B MAILFROM
--The
--.B mailfrom
--line (which can only be abbreviated to at least 5 characters) gives an
--address to appear in the "From" address for alert mails. This can be
--useful if you want to explicitly set a domain, as the default from
--address is "root" with no domain. All words on this line are
--catenated with spaces to form the address.
--
--Note that this value cannot be set via the
--.I mdadm
--commandline. It is only settable via the config file.
--
--.TP
--.B PROGRAM
--The
--.B program
--line gives the name of a program to be run when
--.B "mdadm \-\-monitor"
--detects potentially interesting events on any of the arrays that it
--is monitoring. This program gets run with two or three arguments, they
--being the Event, the md device, and possibly the related component
--device.
--
--There should only be one
--.B program
--line and it should be give only one program.
--
--
--.TP
--.B CREATE
--The
--.B create
--line gives default values to be used when creating arrays, new members
--of arrays, and device entries for arrays.
--These include:
--
--.RS 4
--.TP
--.B owner=
--.TP
--.B group=
--These can give user/group ids or names to use instead of system
--defaults (root/wheel or root/disk).
--.TP
--.B mode=
--An octal file mode such as 0660 can be given to override the default
--of 0600.
--.TP
--.B auto=
--This corresponds to the
--.B \-\-auto
--flag to mdadm. Give
--.BR yes ,
--.BR md ,
--.BR mdp ,
--.B part
--\(em possibly followed by a number of partitions \(em to indicate how
--missing device entries should be created.
--
--.TP
--.B metadata=
--The name of the metadata format to use if none is explicitly given.
--This can be useful to impose a system-wide default of version-1 superblocks.
--
--.TP
--.B symlinks=no
--Normally when creating devices in
--.B /dev/md/
--.I mdadm
--will create a matching symlink from
--.B /dev/
--with a name starting
--.B md
--or
--.BR md_ .
--Give
--.B symlinks=no
--to suppress this symlink creation.
--
--.TP
--.B names=yes
--Since Linux 2.6.29 it has been possible to create
--.B md
--devices with a name like
--.B md_home
--rather than just a number, like
--.BR md3 .
--.I mdadm
--will use the numeric alternative by default as other tools that interact
--with md arrays may expect only numbers.
--If
--.B names=yes
--is given in
--.I mdadm.conf
--then
--.I mdadm
--will use a name when appropriate.
--If
--.B names=no
--is given, then non-numeric
--.I md
--device names will not be used even if the default changes in a future
--release of
--.IR mdadm .
--
--.TP
--.B bbl=no
--By default,
--.I mdadm
--will reserve space for a bad block list (bbl) on all devices
--included in or added to any array that supports them. Setting
--.B bbl=no
--will prevent this, so newly added devices will not have a bad
--block log.
--.RE
--
--.TP
--.B HOMEHOST
--The
--.B homehost
--line gives a default value for the
--.B \-\-homehost=
--option to mdadm. There should normally be only one other word on the line.
--It should either be a host name, or one of the special words
--.BR <system>,
--.B <none>
--and
--.BR <ignore> .
--If
--.B <system>
--is given, then the
--.BR gethostname ( 2 )
--systemcall is used to get the host name. This is the default.
--
--If
--.B <ignore>
--is given, then a flag is set so that when arrays are being
--auto-assembled the checking of the recorded
--.I homehost
--is disabled.
--If
--.B <ignore>
--is given it is also possible to give an explicit name which will be
--used when creating arrays. This is the only case when there can be
--more that one other word on the
--.B HOMEHOST
--line. If there are other words, or other
--.B HOMEHOST
--lines, they are silently ignored.
--
--If
--.B <none>
--is given, then the default of using
--.BR gethostname ( 2 )
--is over-ridden and no homehost name is assumed.
--
--When arrays are created, this host name will be stored in the
--metadata. When arrays are assembled using auto-assembly, arrays which
--do not record the correct homehost name in their metadata will be
--assembled using a "foreign" name. A "foreign" name alway ends with a
--digit string preceded by an underscore to differentiate it
--from any possible local name. e.g.
--.B /dev/md/1_1
--or
--.BR /dev/md/home_0 .
--.TP
--.B AUTO
--A list of names of metadata format can be given, each preceded by a
--plus or minus sign. Also the word
--.I homehost
--is allowed as is
--.I all
--preceded by plus or minus sign.
--.I all
--is usually last.
--
--When
--.I mdadm
--is auto-assembling an array, either via
--.I \-\-assemble
--or
--.I \-\-incremental
--and it finds metadata of a given type, it checks that metadata type
--against those listed in this line. The first match wins, where
--.I all
--matches anything.
--If a match is found that was preceded by a plus sign, the auto
--assembly is allowed. If the match was preceded by a minus sign, the
--auto assembly is disallowed. If no match is found, the auto assembly
--is allowed.
--
--If the metadata indicates that the array was created for
--.I this
--host, and the word
--.I homehost
--appears before any other match, then the array is treated as a valid
--candidate for auto-assembly.
--
--This can be used to disable all auto-assembly (so that only arrays
--explicitly listed in mdadm.conf or on the command line are assembled),
--or to disable assembly of certain metadata types which might be
--handled by other software. It can also be used to disable assembly of
--all foreign arrays - normally such arrays are assembled but given a
--non-deterministic name in
--.BR /dev/md/ .
--
--The known metadata types are
--.BR 0.90 ,
--.BR 1.x ,
--.BR ddf ,
--.BR imsm .
--
--.B AUTO
--should be given at most once. Subsequent lines are silently ignored.
--Thus an earlier config file in a config directory will over-ride
--the setting in a later config file.
--
--.TP
--.B POLICY
--This is used to specify what automatic behavior is allowed on devices
--newly appearing in the system and provides a way of marking spares that can
--be moved to other arrays as well as the migration domains.
--.I Domain
--can be defined through
--.I policy
--line by specifying a domain name for a number of paths from
--.BR /dev/disk/by-path/ .
--A device may belong to several domains. The domain of an array is a union
--of domains of all devices in that array. A spare can be automatically
--moved from one array to another if the set of the destination array's
--.I domains
--contains all the
--.I domains
--of the new disk or if both arrays have the same
--.IR spare-group .
--
--To update hot plug configuration it is necessary to execute
--.B mdadm \-\-udev\-rules
--command after changing the config file
--
--Keywords used in the
--.I POLICY
--line and supported values are:
--
--.RS 4
--.TP
--.B domain=
--any arbitrary string
--.TP
--.B metadata=
--0.9 1.x ddf or imsm
--.TP
--.B path=
--file glob matching anything from
--.B /dev/disk/by-path
--.TP
--.B type=
--either
--.B disk
--or
--.BR part .
--.TP
--.B action=
--include, re-add, spare, spare-same-slot, or force-spare
--.TP
--.B auto=
--yes, no, or homehost.
--
--.P
--The
--.I action
--item determines the automatic behavior allowed for devices matching the
--.I path
--and
--.I type
--in the same line. If a device matches several lines with different
--.I actions
--then the most permissive will apply. The ordering of policy lines
--is irrelevant to the end result.
--.TP
--.B include
--allows adding a disk to an array if metadata on that disk matches that array
--.TP
--.B re\-add
--will include the device in the array if it appears to be a current member
--or a member that was recently removed and the array has a
--write-intent-bitmap to allow the
--.B re\-add
--functionality.
--.TP
--.B spare
--as above and additionally: if the device is bare it can
--become a spare if there is any array that it is a candidate for based
--on domains and metadata.
--.TP
--.B spare\-same\-slot
--as above and additionally if given slot was used by an array that went
--degraded recently and the device plugged in has no metadata then it will
--be automatically added to that array (or it's container)
--.TP
--.B force\-spare
--as above and the disk will become a spare in remaining cases
--.RE
--
--.TP
--.B PART-POLICY
--This is similar to
--.B POLICY
--and accepts the same keyword assignments. It allows a consistent set
--of policies to applied to each of the partitions of a device.
--
--A
--.B PART-POLICY
--line should set
--.I type=disk
--and identify the path to one or more disk devices. Each partition on
--these disks will be treated according to the
--.I action=
--setting from this line. If a
--.I domain
--is set in the line, then the domain associated with each patition will
--be based on the domain, but with
--.RB \(dq -part N\(dq
--appended, when N is the partition number for the partition that was
--found.
--
--.TP
--.B SYSFS
--The
--.B SYSFS
--line lists custom values of MD device's sysfs attributes which will be
--stored in sysfs after the array is assembled. Multiple lines are allowed and each
--line has to contain the uuid or the name of the device to which it relates.
--.RS 4
--.TP
--.B uuid=
--hexadecimal identifier of MD device. This has to match the uuid stored in the
--superblock.
--.TP
--.B name=
--name of the MD device as was given to
--.I mdadm
--when the array was created. It will be ignored if
--.B uuid
--is not empty.
--.RE
--
--.TP
--.B MONITORDELAY
--The
--.B monitordelay
--line gives a delay in seconds
--.I mdadm
--shall wait before pooling md arrays
--when
--.I mdadm
--is running in
--.B \-\-monitor
--mode.
--.B \-d/\-\-delay
--command line argument takes precedence over the config file
--
--.SH EXAMPLE
--DEVICE /dev/sd[bcdjkl]1
--.br
--DEVICE /dev/hda1 /dev/hdb1
--
--# /dev/md0 is known by its UUID.
--.br
--ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371
--.br
--# /dev/md1 contains all devices with a minor number of
--.br
--# 1 in the superblock.
--.br
--ARRAY /dev/md1 superminor=1
--.br
--# /dev/md2 is made from precisely these two devices
--.br
--ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1
--
--# /dev/md4 and /dev/md5 are a spare-group and spares
--.br
--# can be moved between them
--.br
--ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df
--.br
-- spare\-group=group1
--.br
--ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977
--.br
-- spare\-group=group1
--.br
--# /dev/md/home is created if need to be a partitionable md array
--.br
--# any spare device number is allocated.
--.br
--ARRAY /dev/md/home UUID=9187a482:5dde19d9:eea3cc4a:d646ab8b
--.br
-- auto=part
--.br
--# The name of this array contains a space.
--.br
--ARRAY /dev/md9 name='Data Storage'
--.sp
--POLICY domain=domain1 metadata=imsm path=pci-0000:00:1f.2-scsi-*
--.br
-- action=spare
--.br
--POLICY domain=domain1 metadata=imsm path=pci-0000:04:00.0-scsi-[01]*
--.br
-- action=include
--.br
--# One domain comprising of devices attached to specified paths is defined.
--.br
--# Bare device matching first path will be made an imsm spare on hot plug.
--.br
--# If more than one array is created on devices belonging to domain1 and
--.br
--# one of them becomes degraded, then any imsm spare matching any path for
--.br
--# given domain name can be migrated.
--.br
--MAILADDR root at mydomain.tld
--.br
--PROGRAM /usr/sbin/handle\-mdadm\-events
--.br
--CREATE group=system mode=0640 auto=part\-8
--.br
--HOMEHOST <system>
--.br
--AUTO +1.x homehost \-all
--.br
--SYSFS name=/dev/md/raid5 group_thread_cnt=4 sync_speed_max=1000000
--.br
--SYSFS uuid=bead5eb6:31c17a27:da120ba2:7dfda40d group_thread_cnt=4
--sync_speed_max=1000000
--.br
--MONITORDELAY 60
--
--.SH SEE ALSO
--.BR mdadm (8),
--.BR md (4).
-diff --git a/mdadm.conf.5.in b/mdadm.conf.5.in
-new file mode 100644
-index 00000000..83edd008
---- /dev/null
-+++ b/mdadm.conf.5.in
-@@ -0,0 +1,706 @@
-+.\" Copyright Neil Brown and others.
-+.\" This program is free software; you can redistribute it and/or modify
-+.\" it under the terms of the GNU General Public License as published by
-+.\" the Free Software Foundation; either version 2 of the License, or
-+.\" (at your option) any later version.
-+.\" See file COPYING in distribution for details.
-+.TH MDADM.CONF 5
-+.SH NAME
-+mdadm.conf \- configuration for management of Software RAID with mdadm
-+.SH SYNOPSIS
-+{CONFFILE}
-+.SH DESCRIPTION
-+.PP
-+.I mdadm
-+is a tool for creating, managing, and monitoring RAID devices using the
-+.B md
-+driver in Linux.
-+.PP
-+Some common tasks, such as assembling all arrays, can be simplified
-+by describing the devices and arrays in this configuration file.
-+
-+.SS SYNTAX
-+The file should be seen as a collection of words separated by white
-+space (space, tab, or newline).
-+Any word that beings with a hash sign (#) starts a comment and that
-+word together with the remainder of the line is ignored.
-+
-+Spaces can be included in a word using quotation characters. Either
-+single quotes
-+.RB ( ' )
-+or double quotes (\fB"\fP)
-+may be used. All the characters from one quotation character to
-+next identical character are protected and will not be used to
-+separate words to start new quoted strings. To include a single quote
-+it must be between double quotes. To include a double quote it must
-+be between single quotes.
-+
-+Any line that starts with white space (space or tab) is treated as
-+though it were a continuation of the previous line.
-+
-+Empty lines are ignored, but otherwise each (non continuation) line
-+must start with a keyword as listed below. The keywords are case
-+insensitive and can be abbreviated to 3 characters.
-+
-+The keywords are:
-+.TP
-+.B DEVICE
-+A
-+.B device
-+line lists the devices (whole devices or partitions) that might contain
-+a component of an MD array. When looking for the components of an
-+array,
-+.I mdadm
-+will scan these devices (or any devices listed on the command line).
-+
-+The
-+.B device
-+line may contain a number of different devices (separated by spaces)
-+and each device name can contain wild cards as defined by
-+.BR glob (7).
-+
-+Also, there may be several device lines present in the file.
-+
-+Alternatively, a
-+.B device
-+line can contain either or both of the words
-+.B containers
-+and
-+.BR partitions .
-+The word
-+.B containers
-+will cause
-+.I mdadm
-+to look for assembled CONTAINER arrays and included them as a source
-+for assembling further arrays.
-+
-+The word
-+.I partitions
-+will cause
-+.I mdadm
-+to read
-+.I /proc/partitions
-+and include all devices and partitions found therein.
-+.I mdadm
-+does not use the names from
-+.I /proc/partitions
-+but only the major and minor device numbers. It scans
-+.I /dev
-+to find the name that matches the numbers.
-+
-+If no DEVICE line is present, then "DEVICE partitions containers" is assumed.
-+
-+For example:
-+.IP
-+DEVICE /dev/hda* /dev/hdc*
-+.br
-+DEV /dev/sd*
-+.br
-+DEVICE /dev/disk/by-path/pci*
-+.br
-+DEVICE partitions
-+
-+.TP
-+.B ARRAY
-+The ARRAY lines identify actual arrays. The second word on the line
-+may be the name of the device where the array is normally
-+assembled, such as
-+.B /dev/md1
-+or
-+.BR /dev/md/backup .
-+If the name does not start with a slash
-+.RB (' / '),
-+it is treated as being in
-+.BR /dev/md/ .
-+Alternately the word
-+.B <ignore>
-+(complete with angle brackets) can be given in which case any array
-+which matches the rest of the line will never be automatically assembled.
-+If no device name is given,
-+.I mdadm
-+will use various heuristics to determine an appropriate name.
-+
-+Subsequent words identify the array, or identify the array as a member
-+of a group. If multiple identities are given,
-+then a component device must match ALL identities to be considered a
-+match. Each identity word has a tag, and equals sign, and some value.
-+The tags are:
-+.RS 4
-+.TP
-+.B uuid=
-+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
-+created as /dev/mdX, then the minor number X is stored.
-+.TP
-+.B devices=
-+The value is a comma separated list of device names or device name
-+patterns.
-+Only devices with names which match one entry in the list will be used
-+to assemble the array. Note that the devices
-+listed there must also be listed on a DEVICE line.
-+.TP
-+.B level=
-+The value is a RAID level. This is not normally used to
-+identify an array, but is supported so that the output of
-+
-+.B "mdadm \-\-examine \-\-scan"
-+
-+can be use directly in the configuration file.
-+.TP
-+.B num\-devices=
-+The value is the number of devices in a complete active array. As with
-+.B level=
-+this is mainly for compatibility with the output of
-+
-+.BR "mdadm \-\-examine \-\-scan" .
-+
-+.TP
-+.B spares=
-+The value is a number of spare devices to expect the array to have.
-+The sole use of this keyword and value is as follows:
-+.B mdadm \-\-monitor
-+will report an array if it is found to have fewer than this number of
-+spares when
-+.B \-\-monitor
-+starts or when
-+.B \-\-oneshot
-+is used.
-+
-+.TP
-+.B spare\-group=
-+The value is a textual name for a group of arrays. All arrays with
-+the same
-+.B spare\-group
-+name are considered to be part of the same group. The significance of
-+a group of arrays is that
-+.I mdadm
-+will, when monitoring the arrays, move a spare drive from one array in
-+a group to another array in that group if the first array had a failed
-+or missing drive but no spare.
-+
-+.TP
-+.B auto=
-+This option is rarely needed with mdadm-3.0, particularly if use with
-+the Linux kernel v2.6.28 or later.
-+It tells
-+.I mdadm
-+whether to use partitionable array or non-partitionable arrays and,
-+in the absence of
-+.IR udev ,
-+how many partition devices to create. From 2.6.28 all md array
-+devices are partitionable, hence this option is not needed.
-+
-+The value of this option can be "yes" or "md" to indicate that a
-+traditional, non-partitionable md array should be created, or "mdp",
-+"part" or "partition" to indicate that a partitionable md array (only
-+available in linux 2.6 and later) should be used. This later set can
-+also have a number appended to indicate how many partitions to create
-+device files for, e.g.
-+.BR auto=mdp5 .
-+The default is 4.
-+
-+.TP
-+.B bitmap=
-+The option specifies a file in which a write-intent bitmap should be
-+found. When assembling the array,
-+.I mdadm
-+will provide this file to the
-+.B md
-+driver as the bitmap file. This has the same function as the
-+.B \-\-bitmap\-file
-+option to
-+.BR \-\-assemble .
-+
-+.TP
-+.B metadata=
-+Specify the metadata format that the array has. This is mainly
-+recognised for comparability with the output of
-+.BR "mdadm \-Es" .
-+
-+.TP
-+.B container=
-+Specify that this array is a member array of some container. The
-+value given can be either a path name in /dev, or a UUID of the
-+container array.
-+
-+.TP
-+.B member=
-+Specify that this array is a member array of some container. Each
-+type of container has some way to enumerate member arrays, often a
-+simple sequence number. The value identifies which member of a
-+container the array is. It will usually accompany a "container=" word.
-+.RE
-+
-+.TP
-+.B MAILADDR
-+The
-+.B mailaddr
-+line gives an E-mail address that alerts should be
-+sent to when
-+.I mdadm
-+is running in
-+.B \-\-monitor
-+mode (and was given the
-+.B \-\-scan
-+option). There should only be one
-+.B MAILADDR
-+line and it should have only one address. Any subsequent addresses
-+are silently ignored.
-+
-+.TP
-+.B MAILFROM
-+The
-+.B mailfrom
-+line (which can only be abbreviated to at least 5 characters) gives an
-+address to appear in the "From" address for alert mails. This can be
-+useful if you want to explicitly set a domain, as the default from
-+address is "root" with no domain. All words on this line are
-+catenated with spaces to form the address.
-+
-+Note that this value cannot be set via the
-+.I mdadm
-+commandline. It is only settable via the config file.
-+
-+.TP
-+.B PROGRAM
-+The
-+.B program
-+line gives the name of a program to be run when
-+.B "mdadm \-\-monitor"
-+detects potentially interesting events on any of the arrays that it
-+is monitoring. This program gets run with two or three arguments, they
-+being the Event, the md device, and possibly the related component
-+device.
-+
-+There should only be one
-+.B program
-+line and it should be give only one program.
-+
-+
-+.TP
-+.B CREATE
-+The
-+.B create
-+line gives default values to be used when creating arrays, new members
-+of arrays, and device entries for arrays.
-+These include:
-+
-+.RS 4
-+.TP
-+.B owner=
-+.TP
-+.B group=
-+These can give user/group ids or names to use instead of system
-+defaults (root/wheel or root/disk).
-+.TP
-+.B mode=
-+An octal file mode such as 0660 can be given to override the default
-+of 0600.
-+.TP
-+.B auto=
-+This corresponds to the
-+.B \-\-auto
-+flag to mdadm. Give
-+.BR yes ,
-+.BR md ,
-+.BR mdp ,
-+.B part
-+\(em possibly followed by a number of partitions \(em to indicate how
-+missing device entries should be created.
-+
-+.TP
-+.B metadata=
-+The name of the metadata format to use if none is explicitly given.
-+This can be useful to impose a system-wide default of version-1 superblocks.
-+
-+.TP
-+.B symlinks=no
-+Normally when creating devices in
-+.B /dev/md/
-+.I mdadm
-+will create a matching symlink from
-+.B /dev/
-+with a name starting
-+.B md
-+or
-+.BR md_ .
-+Give
-+.B symlinks=no
-+to suppress this symlink creation.
-+
-+.TP
-+.B names=yes
-+Since Linux 2.6.29 it has been possible to create
-+.B md
-+devices with a name like
-+.B md_home
-+rather than just a number, like
-+.BR md3 .
-+.I mdadm
-+will use the numeric alternative by default as other tools that interact
-+with md arrays may expect only numbers.
-+If
-+.B names=yes
-+is given in
-+.I mdadm.conf
-+then
-+.I mdadm
-+will use a name when appropriate.
-+If
-+.B names=no
-+is given, then non-numeric
-+.I md
-+device names will not be used even if the default changes in a future
-+release of
-+.IR mdadm .
-+
-+.TP
-+.B bbl=no
-+By default,
-+.I mdadm
-+will reserve space for a bad block list (bbl) on all devices
-+included in or added to any array that supports them. Setting
-+.B bbl=no
-+will prevent this, so newly added devices will not have a bad
-+block log.
-+.RE
-+
-+.TP
-+.B HOMEHOST
-+The
-+.B homehost
-+line gives a default value for the
-+.B \-\-homehost=
-+option to mdadm. There should normally be only one other word on the line.
-+It should either be a host name, or one of the special words
-+.BR <system>,
-+.B <none>
-+and
-+.BR <ignore> .
-+If
-+.B <system>
-+is given, then the
-+.BR gethostname ( 2 )
-+systemcall is used to get the host name. This is the default.
-+
-+If
-+.B <ignore>
-+is given, then a flag is set so that when arrays are being
-+auto-assembled the checking of the recorded
-+.I homehost
-+is disabled.
-+If
-+.B <ignore>
-+is given it is also possible to give an explicit name which will be
-+used when creating arrays. This is the only case when there can be
-+more that one other word on the
-+.B HOMEHOST
-+line. If there are other words, or other
-+.B HOMEHOST
-+lines, they are silently ignored.
-+
-+If
-+.B <none>
-+is given, then the default of using
-+.BR gethostname ( 2 )
-+is over-ridden and no homehost name is assumed.
-+
-+When arrays are created, this host name will be stored in the
-+metadata. When arrays are assembled using auto-assembly, arrays which
-+do not record the correct homehost name in their metadata will be
-+assembled using a "foreign" name. A "foreign" name alway ends with a
-+digit string preceded by an underscore to differentiate it
-+from any possible local name. e.g.
-+.B /dev/md/1_1
-+or
-+.BR /dev/md/home_0 .
-+.TP
-+.B AUTO
-+A list of names of metadata format can be given, each preceded by a
-+plus or minus sign. Also the word
-+.I homehost
-+is allowed as is
-+.I all
-+preceded by plus or minus sign.
-+.I all
-+is usually last.
-+
-+When
-+.I mdadm
-+is auto-assembling an array, either via
-+.I \-\-assemble
-+or
-+.I \-\-incremental
-+and it finds metadata of a given type, it checks that metadata type
-+against those listed in this line. The first match wins, where
-+.I all
-+matches anything.
-+If a match is found that was preceded by a plus sign, the auto
-+assembly is allowed. If the match was preceded by a minus sign, the
-+auto assembly is disallowed. If no match is found, the auto assembly
-+is allowed.
-+
-+If the metadata indicates that the array was created for
-+.I this
-+host, and the word
-+.I homehost
-+appears before any other match, then the array is treated as a valid
-+candidate for auto-assembly.
-+
-+This can be used to disable all auto-assembly (so that only arrays
-+explicitly listed in mdadm.conf or on the command line are assembled),
-+or to disable assembly of certain metadata types which might be
-+handled by other software. It can also be used to disable assembly of
-+all foreign arrays - normally such arrays are assembled but given a
-+non-deterministic name in
-+.BR /dev/md/ .
-+
-+The known metadata types are
-+.BR 0.90 ,
-+.BR 1.x ,
-+.BR ddf ,
-+.BR imsm .
-+
-+.B AUTO
-+should be given at most once. Subsequent lines are silently ignored.
-+Thus an earlier config file in a config directory will over-ride
-+the setting in a later config file.
-+
-+.TP
-+.B POLICY
-+This is used to specify what automatic behavior is allowed on devices
-+newly appearing in the system and provides a way of marking spares that can
-+be moved to other arrays as well as the migration domains.
-+.I Domain
-+can be defined through
-+.I policy
-+line by specifying a domain name for a number of paths from
-+.BR /dev/disk/by-path/ .
-+A device may belong to several domains. The domain of an array is a union
-+of domains of all devices in that array. A spare can be automatically
-+moved from one array to another if the set of the destination array's
-+.I domains
-+contains all the
-+.I domains
-+of the new disk or if both arrays have the same
-+.IR spare-group .
-+
-+To update hot plug configuration it is necessary to execute
-+.B mdadm \-\-udev\-rules
-+command after changing the config file
-+
-+Keywords used in the
-+.I POLICY
-+line and supported values are:
-+
-+.RS 4
-+.TP
-+.B domain=
-+any arbitrary string
-+.TP
-+.B metadata=
-+0.9 1.x ddf or imsm
-+.TP
-+.B path=
-+file glob matching anything from
-+.B /dev/disk/by-path
-+.TP
-+.B type=
-+either
-+.B disk
-+or
-+.BR part .
-+.TP
-+.B action=
-+include, re-add, spare, spare-same-slot, or force-spare
-+.TP
-+.B auto=
-+yes, no, or homehost.
-+
-+.P
-+The
-+.I action
-+item determines the automatic behavior allowed for devices matching the
-+.I path
-+and
-+.I type
-+in the same line. If a device matches several lines with different
-+.I actions
-+then the most permissive will apply. The ordering of policy lines
-+is irrelevant to the end result.
-+.TP
-+.B include
-+allows adding a disk to an array if metadata on that disk matches that array
-+.TP
-+.B re\-add
-+will include the device in the array if it appears to be a current member
-+or a member that was recently removed and the array has a
-+write-intent-bitmap to allow the
-+.B re\-add
-+functionality.
-+.TP
-+.B spare
-+as above and additionally: if the device is bare it can
-+become a spare if there is any array that it is a candidate for based
-+on domains and metadata.
-+.TP
-+.B spare\-same\-slot
-+as above and additionally if given slot was used by an array that went
-+degraded recently and the device plugged in has no metadata then it will
-+be automatically added to that array (or it's container)
-+.TP
-+.B force\-spare
-+as above and the disk will become a spare in remaining cases
-+.RE
-+
-+.TP
-+.B PART-POLICY
-+This is similar to
-+.B POLICY
-+and accepts the same keyword assignments. It allows a consistent set
-+of policies to applied to each of the partitions of a device.
-+
-+A
-+.B PART-POLICY
-+line should set
-+.I type=disk
-+and identify the path to one or more disk devices. Each partition on
-+these disks will be treated according to the
-+.I action=
-+setting from this line. If a
-+.I domain
-+is set in the line, then the domain associated with each patition will
-+be based on the domain, but with
-+.RB \(dq -part N\(dq
-+appended, when N is the partition number for the partition that was
-+found.
-+
-+.TP
-+.B SYSFS
-+The
-+.B SYSFS
-+line lists custom values of MD device's sysfs attributes which will be
-+stored in sysfs after the array is assembled. Multiple lines are allowed and each
-+line has to contain the uuid or the name of the device to which it relates.
-+.RS 4
-+.TP
-+.B uuid=
-+hexadecimal identifier of MD device. This has to match the uuid stored in the
-+superblock.
-+.TP
-+.B name=
-+name of the MD device as was given to
-+.I mdadm
-+when the array was created. It will be ignored if
-+.B uuid
-+is not empty.
-+.RE
-+
-+.TP
-+.B MONITORDELAY
-+The
-+.B monitordelay
-+line gives a delay in seconds
-+.I mdadm
-+shall wait before pooling md arrays
-+when
-+.I mdadm
-+is running in
-+.B \-\-monitor
-+mode.
-+.B \-d/\-\-delay
-+command line argument takes precedence over the config file
-+
-+.SH EXAMPLE
-+DEVICE /dev/sd[bcdjkl]1
-+.br
-+DEVICE /dev/hda1 /dev/hdb1
-+
-+# /dev/md0 is known by its UUID.
-+.br
-+ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371
-+.br
-+# /dev/md1 contains all devices with a minor number of
-+.br
-+# 1 in the superblock.
-+.br
-+ARRAY /dev/md1 superminor=1
-+.br
-+# /dev/md2 is made from precisely these two devices
-+.br
-+ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1
-+
-+# /dev/md4 and /dev/md5 are a spare-group and spares
-+.br
-+# can be moved between them
-+.br
-+ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df
-+.br
-+ spare\-group=group1
-+.br
-+ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977
-+.br
-+ spare\-group=group1
-+.br
-+# /dev/md/home is created if need to be a partitionable md array
-+.br
-+# any spare device number is allocated.
-+.br
-+ARRAY /dev/md/home UUID=9187a482:5dde19d9:eea3cc4a:d646ab8b
-+.br
-+ auto=part
-+.br
-+# The name of this array contains a space.
-+.br
-+ARRAY /dev/md9 name='Data Storage'
-+.sp
-+POLICY domain=domain1 metadata=imsm path=pci-0000:00:1f.2-scsi-*
-+.br
-+ action=spare
-+.br
-+POLICY domain=domain1 metadata=imsm path=pci-0000:04:00.0-scsi-[01]*
-+.br
-+ action=include
-+.br
-+# One domain comprising of devices attached to specified paths is defined.
-+.br
-+# Bare device matching first path will be made an imsm spare on hot plug.
-+.br
-+# If more than one array is created on devices belonging to domain1 and
-+.br
-+# one of them becomes degraded, then any imsm spare matching any path for
-+.br
-+# given domain name can be migrated.
-+.br
-+MAILADDR root at mydomain.tld
-+.br
-+PROGRAM /usr/sbin/handle\-mdadm\-events
-+.br
-+CREATE group=system mode=0640 auto=part\-8
-+.br
-+HOMEHOST <system>
-+.br
-+AUTO +1.x homehost \-all
-+.br
-+SYSFS name=/dev/md/raid5 group_thread_cnt=4 sync_speed_max=1000000
-+.br
-+SYSFS uuid=bead5eb6:31c17a27:da120ba2:7dfda40d group_thread_cnt=4
-+sync_speed_max=1000000
-+.br
-+MONITORDELAY 60
-+
-+.SH SEE ALSO
-+.BR mdadm (8),
-+.BR md (4).
---
-2.38.1
-
diff --git a/0007-mdadm-Update-ReadMe.patch b/0007-mdadm-Update-ReadMe.patch
deleted file mode 100644
index a143a22..0000000
--- a/0007-mdadm-Update-ReadMe.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c23400377bb3d8e98e810cd92dba478dac1dff82 Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Fri, 18 Mar 2022 09:26:05 +0100
-Subject: [PATCH 07/83] mdadm: Update ReadMe
-
-Instead of hardcoded config file path give reference to config manual.
-
-Add missing monitordelay and homecluster parameters.
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Acked-by: Coly Li <colyli at suse.de>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- ReadMe.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/ReadMe.c b/ReadMe.c
-index 81399765..8f873c48 100644
---- a/ReadMe.c
-+++ b/ReadMe.c
-@@ -613,7 +613,6 @@ char Help_incr[] =
- ;
-
- char Help_config[] =
--"The /etc/mdadm.conf config file:\n\n"
- " The config file contains, apart from blank lines and comment lines that\n"
- " start with a hash(#), array lines, device lines, and various\n"
- " configuration lines.\n"
-@@ -636,10 +635,12 @@ char Help_config[] =
- " than a device must match all of them to be considered.\n"
- "\n"
- " Other configuration lines include:\n"
--" mailaddr, mailfrom, program used for --monitor mode\n"
--" create, auto used when creating device names in /dev\n"
--" homehost, policy, part-policy used to guide policy in various\n"
--" situations\n"
-+" mailaddr, mailfrom, program, monitordelay used for --monitor mode\n"
-+" create, auto used when creating device names in /dev\n"
-+" homehost, homecluster, policy, part-policy used to guide policy in various\n"
-+" situations\n"
-+"\n"
-+"For more details see mdadm.conf(5).\n"
- "\n"
- ;
-
---
-2.38.1
-
diff --git a/0008-mdadm-Update-config-man-regarding-default-files-and-.patch b/0008-mdadm-Update-config-man-regarding-default-files-and-.patch
deleted file mode 100644
index 0109e9a..0000000
--- a/0008-mdadm-Update-config-man-regarding-default-files-and-.patch
+++ /dev/null
@@ -1,203 +0,0 @@
-From 24e075c659d0a8718aabefe5af4c97195a188af7 Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Fri, 18 Mar 2022 09:26:06 +0100
-Subject: [PATCH 08/83] mdadm: Update config man regarding default files and
- multi-keyword behavior
-
-Simplify default and alternative config file and directory location references
-from mdadm(8) as references to mdadm.conf(5). Add FILE section in config man
-and explain order and conditions in which default and alternative config files
-and directories are used.
-
-Update config man behavior regarding parsing order when multiple keywords/config
-files are involved.
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Acked-by: Coly Li <colyli at suse.de>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- mdadm.8.in | 30 +++++++++--------------
- mdadm.conf.5.in | 65 ++++++++++++++++++++++++++++++++++++++++++++-----
- 2 files changed, 71 insertions(+), 24 deletions(-)
-
-diff --git a/mdadm.8.in b/mdadm.8.in
-index 8b21ffd4..0be02e4a 100644
---- a/mdadm.8.in
-+++ b/mdadm.8.in
-@@ -266,14 +266,11 @@ the exact meaning of this option in different contexts.
-
- .TP
- .BR \-c ", " \-\-config=
--Specify the config file or directory. Default is to use
--.B {CONFFILE}
--and
--.BR {CONFFILE}.d ,
--or if those are missing then
--.B {CONFFILE2}
--and
--.BR {CONFFILE2}.d .
-+Specify the config file or directory. If not specified, default config file
-+and default conf.d directory will be used. See
-+.BR mdadm.conf (5)
-+for more details.
-+
- If the config file given is
- .B "partitions"
- then nothing will be read, but
-@@ -2013,11 +2010,9 @@ The config file is only used if explicitly named with
- .B \-\-config
- or requested with (a possibly implicit)
- .BR \-\-scan .
--In the later case,
--.B {CONFFILE}
--or
--.B {CONFFILE2}
--is used.
-+In the later case, default config file is used. See
-+.BR mdadm.conf (5)
-+for more details.
-
- If
- .B \-\-scan
-@@ -3346,16 +3341,15 @@ on Monitor mode.
-
- .SS {CONFFILE} (or {CONFFILE2})
-
--The config file lists which devices may be scanned to see if
--they contain MD super block, and gives identifying information
--(e.g. UUID) about known MD arrays. See
-+Default config file. See
- .BR mdadm.conf (5)
- for more details.
-
- .SS {CONFFILE}.d (or {CONFFILE2}.d)
-
--A directory containing configuration files which are read in lexical
--order.
-+Default directory containing configuration files. See
-+.BR mdadm.conf (5)
-+for more details.
-
- .SS {MAP_PATH}
- When
-diff --git a/mdadm.conf.5.in b/mdadm.conf.5.in
-index 83edd008..dd331a6a 100644
---- a/mdadm.conf.5.in
-+++ b/mdadm.conf.5.in
-@@ -88,7 +88,8 @@ but only the major and minor device numbers. It scans
- .I /dev
- to find the name that matches the numbers.
-
--If no DEVICE line is present, then "DEVICE partitions containers" is assumed.
-+If no DEVICE line is present in any config file,
-+then "DEVICE partitions containers" is assumed.
-
- For example:
- .IP
-@@ -272,6 +273,10 @@ catenated with spaces to form the address.
- Note that this value cannot be set via the
- .I mdadm
- commandline. It is only settable via the config file.
-+There should only be one
-+.B MAILADDR
-+line and it should have only one address. Any subsequent addresses
-+are silently ignored.
-
- .TP
- .B PROGRAM
-@@ -286,7 +291,8 @@ device.
-
- There should only be one
- .B program
--line and it should be give only one program.
-+line and it should be given only one program. Any subsequent programs
-+are silently ignored.
-
-
- .TP
-@@ -295,7 +301,14 @@ The
- .B create
- line gives default values to be used when creating arrays, new members
- of arrays, and device entries for arrays.
--These include:
-+
-+There should only be one
-+.B create
-+line. Any subsequent lines will override the previous settings.
-+
-+Keywords used in the
-+.I CREATE
-+line and supported values are:
-
- .RS 4
- .TP
-@@ -475,8 +488,8 @@ The known metadata types are
-
- .B AUTO
- should be given at most once. Subsequent lines are silently ignored.
--Thus an earlier config file in a config directory will over-ride
--the setting in a later config file.
-+Thus a later config file in a config directory will not overwrite
-+the setting in an earlier config file.
-
- .TP
- .B POLICY
-@@ -594,6 +607,7 @@ The
- line lists custom values of MD device's sysfs attributes which will be
- stored in sysfs after the array is assembled. Multiple lines are allowed and each
- line has to contain the uuid or the name of the device to which it relates.
-+Lines are applied in reverse order.
- .RS 4
- .TP
- .B uuid=
-@@ -621,7 +635,46 @@ is running in
- .B \-\-monitor
- mode.
- .B \-d/\-\-delay
--command line argument takes precedence over the config file
-+command line argument takes precedence over the config file.
-+
-+If multiple
-+.B MINITORDELAY
-+lines are provided, only first non-zero value is considered.
-+
-+.SH FILES
-+
-+.SS {CONFFILE}
-+
-+The default config file location, used when
-+.I mdadm
-+is running without --config option.
-+
-+.SS {CONFFILE}.d
-+
-+The default directory with config files. Used when
-+.I mdadm
-+is running without --config option, after successful reading of the
-+.B {CONFFILE}
-+default config file. Files in that directory
-+are read in lexical order.
-+
-+
-+.SS {CONFFILE2}
-+
-+Alternative config file that is read, when
-+.I mdadm
-+is running without --config option and the
-+.B {CONFFILE}
-+default config file was not opened successfully.
-+
-+.SS {CONFFILE2}.d
-+
-+The alternative directory with config files. Used when
-+.I mdadm
-+is runninng without --config option, after reading the
-+.B {CONFFILE2}
-+alternative config file whether it was successful or not. Files in
-+that directory are read in lexical order.
-
- .SH EXAMPLE
- DEVICE /dev/sd[bcdjkl]1
---
-2.38.1
-
diff --git a/0009-mdadm-Update-config-manual.patch b/0009-mdadm-Update-config-manual.patch
deleted file mode 100644
index 08599d5..0000000
--- a/0009-mdadm-Update-config-manual.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From c33bbda5b0e127bb161fd4ad44bcfaa2a5daf153 Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Fri, 18 Mar 2022 09:26:07 +0100
-Subject: [PATCH 09/83] mdadm: Update config manual
-
-Add missing HOMECLUSTER keyword description.
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Acked-by: Coly Li <colyli at suse.de>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- mdadm.conf.5.in | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-diff --git a/mdadm.conf.5.in b/mdadm.conf.5.in
-index dd331a6a..cd4e6a9d 100644
---- a/mdadm.conf.5.in
-+++ b/mdadm.conf.5.in
-@@ -439,6 +439,23 @@ from any possible local name. e.g.
- .B /dev/md/1_1
- or
- .BR /dev/md/home_0 .
-+
-+.TP
-+.B HOMECLUSTER
-+The
-+.B homcluster
-+line gives a default value for the
-+.B \-\-homecluster=
-+option to mdadm. It specifies the cluster name for the md device.
-+The md device can be assembled only on the cluster which matches
-+the name specified. If
-+.B homcluster
-+is not provided, mdadm tries to detect the cluster name automatically.
-+
-+There should only be one
-+.B homecluster
-+line. Any subsequent lines will be silently ignored.
-+
- .TP
- .B AUTO
- A list of names of metadata format can be given, each preceded by a
---
-2.38.1
-
diff --git a/0010-Create-Build-use-default_layout.patch b/0010-Create-Build-use-default_layout.patch
deleted file mode 100644
index 7f9791b..0000000
--- a/0010-Create-Build-use-default_layout.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 913f07d1db4a0078acc26d6ccabe1c315cf9273c Mon Sep 17 00:00:00 2001
-From: Mariusz Tkaczyk <mariusz.tkaczyk at linux.intel.com>
-Date: Thu, 20 Jan 2022 13:18:32 +0100
-Subject: [PATCH 10/83] Create, Build: use default_layout()
-
-This code is duplicated for Build mode so make default_layout() extern
-and use it. Simplify the function structure.
-
-It introduced change for Build mode, now for raid0 RAID0_ORIG_LAYOUT
-will be returned same as for Create.
-
-Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk at linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Build.c | 23 +------------------
- Create.c | 67 ++++++++++++++++++++++++++++++++++----------------------
- mdadm.h | 1 +
- 3 files changed, 43 insertions(+), 48 deletions(-)
-
-diff --git a/Build.c b/Build.c
-index 962c2e37..8d6f6f58 100644
---- a/Build.c
-+++ b/Build.c
-@@ -71,28 +71,7 @@ int Build(char *mddev, struct mddev_dev *devlist,
- }
-
- if (s->layout == UnSet)
-- switch(s->level) {
-- default: /* no layout */
-- s->layout = 0;
-- break;
-- case 10:
-- s->layout = 0x102; /* near=2, far=1 */
-- if (c->verbose > 0)
-- pr_err("layout defaults to n1\n");
-- break;
-- case 5:
-- case 6:
-- s->layout = map_name(r5layout, "default");
-- if (c->verbose > 0)
-- pr_err("layout defaults to %s\n", map_num(r5layout, s->layout));
-- break;
-- case LEVEL_FAULTY:
-- s->layout = map_name(faultylayout, "default");
--
-- if (c->verbose > 0)
-- pr_err("layout defaults to %s\n", map_num(faultylayout, s->layout));
-- break;
-- }
-+ s->layout = default_layout(NULL, s->level, c->verbose);
-
- /* We need to create the device. It can have no name. */
- map_lock(&map);
-diff --git a/Create.c b/Create.c
-index 0ff1922d..9ea19de0 100644
---- a/Create.c
-+++ b/Create.c
-@@ -39,39 +39,54 @@ static int round_size_and_verify(unsigned long long *size, int chunk)
- return 0;
- }
-
--static int default_layout(struct supertype *st, int level, int verbose)
-+/**
-+ * default_layout() - Get default layout for level.
-+ * @st: metadata requested, could be NULL.
-+ * @level: raid level requested.
-+ * @verbose: verbose level.
-+ *
-+ * Try to ask metadata handler first, otherwise use global defaults.
-+ *
-+ * Return: Layout or &UnSet, return value meaning depends of level used.
-+ */
-+int default_layout(struct supertype *st, int level, int verbose)
- {
- int layout = UnSet;
-+ mapping_t *layout_map = NULL;
-+ char *layout_name = NULL;
-
- if (st && st->ss->default_geometry)
- st->ss->default_geometry(st, &level, &layout, NULL);
-
-- if (layout == UnSet)
-- switch(level) {
-- default: /* no layout */
-- layout = 0;
-- break;
-- case 0:
-- layout = RAID0_ORIG_LAYOUT;
-- break;
-- case 10:
-- layout = 0x102; /* near=2, far=1 */
-- if (verbose > 0)
-- pr_err("layout defaults to n2\n");
-- break;
-- case 5:
-- case 6:
-- layout = map_name(r5layout, "default");
-- if (verbose > 0)
-- pr_err("layout defaults to %s\n", map_num(r5layout, layout));
-- break;
-- case LEVEL_FAULTY:
-- layout = map_name(faultylayout, "default");
-+ if (layout != UnSet)
-+ return layout;
-
-- if (verbose > 0)
-- pr_err("layout defaults to %s\n", map_num(faultylayout, layout));
-- break;
-- }
-+ switch (level) {
-+ default: /* no layout */
-+ layout = 0;
-+ break;
-+ case 0:
-+ layout = RAID0_ORIG_LAYOUT;
-+ break;
-+ case 10:
-+ layout = 0x102; /* near=2, far=1 */
-+ layout_name = "n2";
-+ break;
-+ case 5:
-+ case 6:
-+ layout_map = r5layout;
-+ break;
-+ case LEVEL_FAULTY:
-+ layout_map = faultylayout;
-+ break;
-+ }
-+
-+ if (layout_map) {
-+ layout = map_name(layout_map, "default");
-+ layout_name = map_num(layout_map, layout);
-+ }
-+ if (layout_name && verbose > 0)
-+ pr_err("layout defaults to %s\n", layout_name);
-
- return layout;
- }
-diff --git a/mdadm.h b/mdadm.h
-index 26e7e5cd..cd72e711 100644
---- a/mdadm.h
-+++ b/mdadm.h
-@@ -1512,6 +1512,7 @@ extern int get_linux_version(void);
- extern int mdadm_version(char *version);
- extern unsigned long long parse_size(char *size);
- extern int parse_uuid(char *str, int uuid[4]);
-+int default_layout(struct supertype *st, int level, int verbose);
- extern int is_near_layout_10(int layout);
- extern int parse_layout_10(char *layout);
- extern int parse_layout_faulty(char *layout);
---
-2.38.1
-
diff --git a/0011-mdadm-add-map_num_s.patch b/0011-mdadm-add-map_num_s.patch
deleted file mode 100644
index ee2c755..0000000
--- a/0011-mdadm-add-map_num_s.patch
+++ /dev/null
@@ -1,382 +0,0 @@
-From 5f21d67472ad08c1e96b4385254adba79aa1c467 Mon Sep 17 00:00:00 2001
-From: Mariusz Tkaczyk <mariusz.tkaczyk at linux.intel.com>
-Date: Thu, 20 Jan 2022 13:18:33 +0100
-Subject: [PATCH 11/83] mdadm: add map_num_s()
-
-map_num() returns NULL if key is not defined. This patch adds
-alternative, non NULL version for cases where NULL is not expected.
-
-There are many printf() calls where map_num() is called on variable
-without NULL verification. It works, even if NULL is passed because
-gcc is able to ignore NULL argument quietly but the behavior is
-undefined. For safety reasons such usages will use map_num_s() now.
-It is a potential point of regression.
-
-Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk at linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Assemble.c | 6 ++----
- Create.c | 2 +-
- Detail.c | 4 ++--
- Grow.c | 16 ++++++++--------
- Query.c | 4 ++--
- maps.c | 24 ++++++++++++++++++++++++
- mdadm.c | 20 ++++++++++----------
- mdadm.h | 2 +-
- super-ddf.c | 6 +++---
- super-intel.c | 2 +-
- super0.c | 2 +-
- super1.c | 2 +-
- sysfs.c | 9 +++++----
- 13 files changed, 61 insertions(+), 38 deletions(-)
-
-diff --git a/Assemble.c b/Assemble.c
-index 704b8293..9eac9ce0 100644
---- a/Assemble.c
-+++ b/Assemble.c
-@@ -63,7 +63,7 @@ static void set_array_assembly_status(struct context *c,
- struct assembly_array_info *arr)
- {
- int raid_disks = arr->preexist_cnt + arr->new_cnt;
-- char *status_msg = map_num(assemble_statuses, status);
-+ char *status_msg = map_num_s(assemble_statuses, status);
-
- if (c->export && result)
- *result |= status;
-@@ -77,9 +77,7 @@ static void set_array_assembly_status(struct context *c,
- fprintf(stderr, " (%d new)", arr->new_cnt);
- if (arr->exp_cnt)
- fprintf(stderr, " ( + %d for expansion)", arr->exp_cnt);
-- if (status_msg)
-- fprintf(stderr, " %s", status_msg);
-- fprintf(stderr, ".\n");
-+ fprintf(stderr, " %s.\n", status_msg);
- }
-
- static int name_matches(char *found, char *required, char *homehost, int require_homehost)
-diff --git a/Create.c b/Create.c
-index 9ea19de0..c84c1ac8 100644
---- a/Create.c
-+++ b/Create.c
-@@ -83,7 +83,7 @@ int default_layout(struct supertype *st, int level, int verbose)
-
- if (layout_map) {
- layout = map_name(layout_map, "default");
-- layout_name = map_num(layout_map, layout);
-+ layout_name = map_num_s(layout_map, layout);
- }
- if (layout_name && verbose > 0)
- pr_err("layout defaults to %s\n", layout_name);
-diff --git a/Detail.c b/Detail.c
-index 95d4cc70..ce7a8445 100644
---- a/Detail.c
-+++ b/Detail.c
-@@ -495,8 +495,8 @@ int Detail(char *dev, struct context *c)
- if (array.state & (1 << MD_SB_CLEAN)) {
- if ((array.level == 0) ||
- (array.level == LEVEL_LINEAR))
-- arrayst = map_num(sysfs_array_states,
-- sra->array_state);
-+ arrayst = map_num_s(sysfs_array_states,
-+ sra->array_state);
- else
- arrayst = "clean";
- } else {
-diff --git a/Grow.c b/Grow.c
-index 18c5719b..8a242b0f 100644
---- a/Grow.c
-+++ b/Grow.c
-@@ -547,7 +547,7 @@ int Grow_consistency_policy(char *devname, int fd, struct context *c, struct sha
- if (s->consistency_policy != CONSISTENCY_POLICY_RESYNC &&
- s->consistency_policy != CONSISTENCY_POLICY_PPL) {
- pr_err("Operation not supported for consistency policy %s\n",
-- map_num(consistency_policies, s->consistency_policy));
-+ map_num_s(consistency_policies, s->consistency_policy));
- return 1;
- }
-
-@@ -578,14 +578,14 @@ int Grow_consistency_policy(char *devname, int fd, struct context *c, struct sha
-
- if (sra->consistency_policy == (unsigned)s->consistency_policy) {
- pr_err("Consistency policy is already %s\n",
-- map_num(consistency_policies, s->consistency_policy));
-+ map_num_s(consistency_policies, s->consistency_policy));
- ret = 1;
- goto free_info;
- } else if (sra->consistency_policy != CONSISTENCY_POLICY_RESYNC &&
- sra->consistency_policy != CONSISTENCY_POLICY_PPL) {
- pr_err("Current consistency policy is %s, cannot change to %s\n",
-- map_num(consistency_policies, sra->consistency_policy),
-- map_num(consistency_policies, s->consistency_policy));
-+ map_num_s(consistency_policies, sra->consistency_policy),
-+ map_num_s(consistency_policies, s->consistency_policy));
- ret = 1;
- goto free_info;
- }
-@@ -704,8 +704,8 @@ int Grow_consistency_policy(char *devname, int fd, struct context *c, struct sha
- }
-
- ret = sysfs_set_str(sra, NULL, "consistency_policy",
-- map_num(consistency_policies,
-- s->consistency_policy));
-+ map_num_s(consistency_policies,
-+ s->consistency_policy));
- if (ret)
- pr_err("Failed to change array consistency policy\n");
-
-@@ -2241,7 +2241,7 @@ size_change_error:
- info.new_layout = UnSet;
- if (info.array.level == 6 && info.new_level == UnSet) {
- char l[40], *h;
-- strcpy(l, map_num(r6layout, info.array.layout));
-+ strcpy(l, map_num_s(r6layout, info.array.layout));
- h = strrchr(l, '-');
- if (h && strcmp(h, "-6") == 0) {
- *h = 0;
-@@ -2266,7 +2266,7 @@ size_change_error:
- info.new_layout = info.array.layout;
- else if (info.array.level == 5 && info.new_level == 6) {
- char l[40];
-- strcpy(l, map_num(r5layout, info.array.layout));
-+ strcpy(l, map_num_s(r5layout, info.array.layout));
- strcat(l, "-6");
- info.new_layout = map_name(r6layout, l);
- } else {
-diff --git a/Query.c b/Query.c
-index 23fbf8aa..adcd231e 100644
---- a/Query.c
-+++ b/Query.c
-@@ -93,7 +93,7 @@ int Query(char *dev)
- else {
- printf("%s: %s %s %d devices, %d spare%s. Use mdadm --detail for more detail.\n",
- dev, human_size_brief(larray_size,IEC),
-- map_num(pers, level), raid_disks,
-+ map_num_s(pers, level), raid_disks,
- spare_disks, spare_disks == 1 ? "" : "s");
- }
- st = guess_super(fd);
-@@ -131,7 +131,7 @@ int Query(char *dev)
- dev,
- info.disk.number, info.array.raid_disks,
- activity,
-- map_num(pers, info.array.level),
-+ map_num_s(pers, info.array.level),
- mddev);
- if (st->ss == &super0)
- put_md_name(mddev);
-diff --git a/maps.c b/maps.c
-index a4fd2797..20fcf719 100644
---- a/maps.c
-+++ b/maps.c
-@@ -166,6 +166,30 @@ mapping_t sysfs_array_states[] = {
- { NULL, ARRAY_UNKNOWN_STATE }
- };
-
-+/**
-+ * map_num_s() - Safer alternative of map_num() function.
-+ * @map: map to search.
-+ * @num: key to match.
-+ *
-+ * Shall be used only if key existence is quaranted.
-+ *
-+ * Return: Pointer to name of the element.
-+ */
-+char *map_num_s(mapping_t *map, int num)
-+{
-+ char *ret = map_num(map, num);
-+
-+ assert(ret);
-+ return ret;
-+}
-+
-+/**
-+ * map_num() - get element name by key.
-+ * @map: map to search.
-+ * @num: key to match.
-+ *
-+ * Return: Pointer to name of the element or NULL.
-+ */
- char *map_num(mapping_t *map, int num)
- {
- while (map->name) {
-diff --git a/mdadm.c b/mdadm.c
-index 26299b2e..be40686c 100644
---- a/mdadm.c
-+++ b/mdadm.c
-@@ -280,8 +280,8 @@ int main(int argc, char *argv[])
- else
- fprintf(stderr, "-%c", opt);
- fprintf(stderr, " would set mdadm mode to \"%s\", but it is already set to \"%s\".\n",
-- map_num(modes, newmode),
-- map_num(modes, mode));
-+ map_num_s(modes, newmode),
-+ map_num_s(modes, mode));
- exit(2);
- } else if (!mode && newmode) {
- mode = newmode;
-@@ -544,7 +544,7 @@ int main(int argc, char *argv[])
- switch(s.level) {
- default:
- pr_err("layout not meaningful for %s arrays.\n",
-- map_num(pers, s.level));
-+ map_num_s(pers, s.level));
- exit(2);
- case UnSet:
- pr_err("raid level must be given before layout.\n");
-@@ -1248,10 +1248,10 @@ int main(int argc, char *argv[])
- if (option_index > 0)
- pr_err(":option --%s not valid in %s mode\n",
- long_options[option_index].name,
-- map_num(modes, mode));
-+ map_num_s(modes, mode));
- else
- pr_err("option -%c not valid in %s mode\n",
-- opt, map_num(modes, mode));
-+ opt, map_num_s(modes, mode));
- exit(2);
-
- }
-@@ -1276,7 +1276,7 @@ int main(int argc, char *argv[])
- if (s.consistency_policy != CONSISTENCY_POLICY_UNKNOWN &&
- s.consistency_policy != CONSISTENCY_POLICY_JOURNAL) {
- pr_err("--write-journal is not supported with consistency policy: %s\n",
-- map_num(consistency_policies, s.consistency_policy));
-+ map_num_s(consistency_policies, s.consistency_policy));
- exit(2);
- }
- }
-@@ -1285,12 +1285,12 @@ int main(int argc, char *argv[])
- s.consistency_policy != CONSISTENCY_POLICY_UNKNOWN) {
- if (s.level <= 0) {
- pr_err("--consistency-policy not meaningful with level %s.\n",
-- map_num(pers, s.level));
-+ map_num_s(pers, s.level));
- exit(2);
- } else if (s.consistency_policy == CONSISTENCY_POLICY_JOURNAL &&
- !s.journaldisks) {
- pr_err("--write-journal is required for consistency policy: %s\n",
-- map_num(consistency_policies, s.consistency_policy));
-+ map_num_s(consistency_policies, s.consistency_policy));
- exit(2);
- } else if (s.consistency_policy == CONSISTENCY_POLICY_PPL &&
- s.level != 5) {
-@@ -1300,14 +1300,14 @@ int main(int argc, char *argv[])
- (!s.bitmap_file ||
- strcmp(s.bitmap_file, "none") == 0)) {
- pr_err("--bitmap is required for consistency policy: %s\n",
-- map_num(consistency_policies, s.consistency_policy));
-+ map_num_s(consistency_policies, s.consistency_policy));
- exit(2);
- } else if (s.bitmap_file &&
- strcmp(s.bitmap_file, "none") != 0 &&
- s.consistency_policy != CONSISTENCY_POLICY_BITMAP &&
- s.consistency_policy != CONSISTENCY_POLICY_JOURNAL) {
- pr_err("--bitmap is not compatible with consistency policy: %s\n",
-- map_num(consistency_policies, s.consistency_policy));
-+ map_num_s(consistency_policies, s.consistency_policy));
- exit(2);
- }
- }
-diff --git a/mdadm.h b/mdadm.h
-index cd72e711..09915a00 100644
---- a/mdadm.h
-+++ b/mdadm.h
-@@ -770,7 +770,7 @@ extern int restore_stripes(int *dest, unsigned long long *offsets,
- #endif
-
- #define SYSLOG_FACILITY LOG_DAEMON
--
-+extern char *map_num_s(mapping_t *map, int num);
- extern char *map_num(mapping_t *map, int num);
- extern int map_name(mapping_t *map, char *name);
- extern mapping_t r0layout[], r5layout[], r6layout[],
-diff --git a/super-ddf.c b/super-ddf.c
-index 3f304cdc..8cda23a7 100644
---- a/super-ddf.c
-+++ b/super-ddf.c
-@@ -1477,13 +1477,13 @@ static void examine_vds(struct ddf_super *sb)
- printf("\n");
- printf(" unit[%d] : %d\n", i, be16_to_cpu(ve->unit));
- printf(" state[%d] : %s, %s%s\n", i,
-- map_num(ddf_state, ve->state & 7),
-+ map_num_s(ddf_state, ve->state & 7),
- (ve->state & DDF_state_morphing) ? "Morphing, ": "",
- (ve->state & DDF_state_inconsistent)? "Not Consistent" : "Consistent");
- printf(" init state[%d] : %s\n", i,
-- map_num(ddf_init_state, ve->init_state&DDF_initstate_mask));
-+ map_num_s(ddf_init_state, ve->init_state & DDF_initstate_mask));
- printf(" access[%d] : %s\n", i,
-- map_num(ddf_access, (ve->init_state & DDF_access_mask) >> 6));
-+ map_num_s(ddf_access, (ve->init_state & DDF_access_mask) >> 6));
- printf(" Name[%d] : %.16s\n", i, ve->name);
- examine_vd(i, sb, ve->guid);
- }
-diff --git a/super-intel.c b/super-intel.c
-index 6ff336ee..ba3bd41f 100644
---- a/super-intel.c
-+++ b/super-intel.c
-@@ -5625,7 +5625,7 @@ static int init_super_imsm_volume(struct supertype *st, mdu_array_info_t *info,
- free(dev);
- free(dv);
- pr_err("imsm does not support consistency policy %s\n",
-- map_num(consistency_policies, s->consistency_policy));
-+ map_num_s(consistency_policies, s->consistency_policy));
- return 0;
- }
-
-diff --git a/super0.c b/super0.c
-index b79b97a9..61c9ec1d 100644
---- a/super0.c
-+++ b/super0.c
-@@ -288,7 +288,7 @@ static void export_examine_super0(struct supertype *st)
- {
- mdp_super_t *sb = st->sb;
-
-- printf("MD_LEVEL=%s\n", map_num(pers, sb->level));
-+ printf("MD_LEVEL=%s\n", map_num_s(pers, sb->level));
- printf("MD_DEVICES=%d\n", sb->raid_disks);
- if (sb->minor_version >= 90)
- printf("MD_UUID=%08x:%08x:%08x:%08x\n",
-diff --git a/super1.c b/super1.c
-index a12a5bc8..e3e2f954 100644
---- a/super1.c
-+++ b/super1.c
-@@ -671,7 +671,7 @@ static void export_examine_super1(struct supertype *st)
- int len = 32;
- int layout;
-
-- printf("MD_LEVEL=%s\n", map_num(pers, __le32_to_cpu(sb->level)));
-+ printf("MD_LEVEL=%s\n", map_num_s(pers, __le32_to_cpu(sb->level)));
- printf("MD_DEVICES=%d\n", __le32_to_cpu(sb->raid_disks));
- for (i = 0; i < 32; i++)
- if (sb->set_name[i] == '\n' || sb->set_name[i] == '\0') {
-diff --git a/sysfs.c b/sysfs.c
-index 2995713d..0d98a65f 100644
---- a/sysfs.c
-+++ b/sysfs.c
-@@ -689,7 +689,7 @@ int sysfs_set_array(struct mdinfo *info, int vers)
- if (info->array.level < 0)
- return 0; /* FIXME */
- rv |= sysfs_set_str(info, NULL, "level",
-- map_num(pers, info->array.level));
-+ map_num_s(pers, info->array.level));
- if (info->reshape_active && info->delta_disks != UnSet)
- raid_disks -= info->delta_disks;
- rv |= sysfs_set_num(info, NULL, "raid_disks", raid_disks);
-@@ -724,9 +724,10 @@ int sysfs_set_array(struct mdinfo *info, int vers)
- }
-
- if (info->consistency_policy == CONSISTENCY_POLICY_PPL) {
-- if (sysfs_set_str(info, NULL, "consistency_policy",
-- map_num(consistency_policies,
-- info->consistency_policy))) {
-+ char *policy = map_num_s(consistency_policies,
-+ info->consistency_policy);
-+
-+ if (sysfs_set_str(info, NULL, "consistency_policy", policy)) {
- pr_err("This kernel does not support PPL. Falling back to consistency-policy=resync.\n");
- info->consistency_policy = CONSISTENCY_POLICY_RESYNC;
- }
---
-2.38.1
-
diff --git a/0012-mdadm-systemd-remove-KillMode-none-from-service-file.patch b/0012-mdadm-systemd-remove-KillMode-none-from-service-file.patch
deleted file mode 100644
index ae67325..0000000
--- a/0012-mdadm-systemd-remove-KillMode-none-from-service-file.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 52c67fcdd6dadc4138ecad73e65599551804d445 Mon Sep 17 00:00:00 2001
-From: Coly Li <colyli at suse.de>
-Date: Tue, 15 Feb 2022 21:34:15 +0800
-Subject: [PATCH 012/120] mdadm/systemd: remove KillMode=none from service file
-
-For mdadm's systemd configuration, current systemd KillMode is "none" in
-following service files,
-- mdadm-grow-continue at .service
-- mdmon at .service
-
-This "none" mode is strongly againsted by systemd developers (see man 5
-systemd.kill for "KillMode=" section), and is considering to remove in
-future systemd version.
-
-As systemd developer explained in disuccsion, the systemd kill process
-is,
-1. send the signal specified by KillSignal= to the list of processes (if
- any), TERM is the default
-2. wait until either the target of process(es) exit or a timeout expires
-3. if the timeout expires send the signal specified by FinalKillSignal=,
- KILL is the default
-
-For "control-group", all remaining processes will receive the SIGTERM
-signal (by default) and if there are still processes after a period f
-time, they will get the SIGKILL signal.
-
-For "mixed", only the main process will receive the SIGTERM signal, and
-if there are still processes after a period of time, all remaining
-processes (including the main one) will receive the SIGKILL signal.
-
-From the above comment, currently KillMode=control-group is a proper
-kill mode. Since control-gropu is the default kill mode, the fix can be
-simply removing KillMode=none line from the service file, then the
-default mode will take effect.
-
-Signed-off-by: Coly Li <colyli at suse.de>
-Cc: Benjamin Brunner <bbrunner at suse.com>
-Cc: Franck Bui <fbui at suse.de>
-Cc: Jes Sorensen <jes at trained-monkey.org>
-Cc: Mariusz Tkaczyk <mariusz.tkaczyk at linux.intel.com>
-Cc: Neil Brown <neilb at suse.de>
-Cc: Xiao Ni <xni at redhat.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- systemd/mdadm-grow-continue at .service | 1 -
- systemd/mdmon at .service | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/systemd/mdadm-grow-continue at .service b/systemd/mdadm-grow-continue at .service
-index 5c667d2a..9fdc8ec7 100644
---- a/systemd/mdadm-grow-continue at .service
-+++ b/systemd/mdadm-grow-continue at .service
-@@ -14,4 +14,3 @@ ExecStart=BINDIR/mdadm --grow --continue /dev/%I
- StandardInput=null
- StandardOutput=null
- StandardError=null
--KillMode=none
-diff --git a/systemd/mdmon at .service b/systemd/mdmon at .service
-index 85a3a7c5..77533958 100644
---- a/systemd/mdmon at .service
-+++ b/systemd/mdmon at .service
-@@ -25,4 +25,3 @@ Type=forking
- # it out) and systemd will remove it when transitioning from
- # initramfs to rootfs.
- #PIDFile=/run/mdadm/%I.pid
--KillMode=none
---
-2.38.1
-
diff --git a/0013-mdmon-Stop-parsing-duplicate-options.patch b/0013-mdmon-Stop-parsing-duplicate-options.patch
deleted file mode 100644
index 77324cf..0000000
--- a/0013-mdmon-Stop-parsing-duplicate-options.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 1066ab83dbe9a4cc20f7db44a40aa2cbb9d5eed6 Mon Sep 17 00:00:00 2001
-From: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Date: Fri, 13 May 2022 09:19:42 +0200
-Subject: [PATCH 13/83] mdmon: Stop parsing duplicate options
-
-Introduce new function is_duplicate_opt() to check if given option
-was already used and prevent setting it again along with an error
-message.
-
-Move parsing above in_initrd() check to be able to detect --offroot
-option duplicates.
-
-Now help option is executed after parsing to prevent executing commands
-like: 'mdmon --help --ndlksnlksajndfjksndafasj'.
-
-Signed-off-by: Lukasz Florczak <lukasz.florczak at linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- mdmon.c | 44 +++++++++++++++++++++++++++++++++++---------
- 1 file changed, 35 insertions(+), 9 deletions(-)
-
-diff --git a/mdmon.c b/mdmon.c
-index 5570574b..c057da63 100644
---- a/mdmon.c
-+++ b/mdmon.c
-@@ -288,6 +288,15 @@ void usage(void)
- exit(2);
- }
-
-+static bool is_duplicate_opt(const int opt, const int set_val, const char *long_name)
-+{
-+ if (opt == set_val) {
-+ pr_err("--%s option duplicated!\n", long_name);
-+ return true;
-+ }
-+ return false;
-+}
-+
- static int mdmon(char *devnm, int must_fork, int takeover);
-
- int main(int argc, char *argv[])
-@@ -299,6 +308,7 @@ int main(int argc, char *argv[])
- int all = 0;
- int takeover = 0;
- int dofork = 1;
-+ bool help = false;
- static struct option options[] = {
- {"all", 0, NULL, 'a'},
- {"takeover", 0, NULL, 't'},
-@@ -308,37 +318,50 @@ int main(int argc, char *argv[])
- {NULL, 0, NULL, 0}
- };
-
-- if (in_initrd()) {
-- /*
-- * set first char of argv[0] to @. This is used by
-- * systemd to signal that the task was launched from
-- * initrd/initramfs and should be preserved during shutdown
-- */
-- argv[0][0] = '@';
-- }
--
- while ((opt = getopt_long(argc, argv, "thaF", options, NULL)) != -1) {
- switch (opt) {
- case 'a':
-+ if (is_duplicate_opt(all, 1, "all"))
-+ exit(1);
- container_name = argv[optind-1];
- all = 1;
- break;
- case 't':
-+ if (is_duplicate_opt(takeover, 1, "takeover"))
-+ exit(1);
- takeover = 1;
- break;
- case 'F':
-+ if (is_duplicate_opt(dofork, 0, "foreground"))
-+ exit(1);
- dofork = 0;
- break;
- case OffRootOpt:
-+ if (is_duplicate_opt(argv[0][0], '@', "offroot"))
-+ exit(1);
- argv[0][0] = '@';
- break;
- case 'h':
-+ if (is_duplicate_opt(help, true, "help"))
-+ exit(1);
-+ help = true;
-+ break;
- default:
- usage();
- break;
- }
- }
-
-+
-+ if (in_initrd()) {
-+ /*
-+ * set first char of argv[0] to @. This is used by
-+ * systemd to signal that the task was launched from
-+ * initrd/initramfs and should be preserved during shutdown
-+ */
-+ argv[0][0] = '@';
-+ }
-+
- if (all == 0 && container_name == NULL) {
- if (argv[optind])
- container_name = argv[optind];
-@@ -353,6 +376,9 @@ int main(int argc, char *argv[])
- if (strcmp(container_name, "/proc/mdstat") == 0)
- all = 1;
-
-+ if (help)
-+ usage();
-+
- if (all) {
- struct mdstat_ent *mdstat, *e;
- int container_len = strlen(container_name);
---
-2.38.1
-
diff --git a/0014-Grow-block-n-on-external-volumes.patch b/0014-Grow-block-n-on-external-volumes.patch
deleted file mode 100644
index 4e6a874..0000000
--- a/0014-Grow-block-n-on-external-volumes.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 20e114e334ed6ed3280c37a9a08fb95578393d1a Mon Sep 17 00:00:00 2001
-From: Mateusz Kusiak <mateusz.kusiak at intel.com>
-Date: Thu, 19 May 2022 09:16:08 +0200
-Subject: [PATCH 14/83] Grow: block -n on external volumes.
-
-Performing --raid-devices on external metadata volume should be blocked
-as it causes unwanted behaviour.
-
-Eg. Performing
-mdadm -G /dev/md/volume -l10 -n4
-on r0_d2 inside 4 disk container, returns
-mdadm: Need 2 spares to avoid degraded array, only have 0.
-
-Signed-off-by: Mateusz Kusiak <mateusz.kusiak at intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Grow.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/Grow.c b/Grow.c
-index 8a242b0f..f6efbc48 100644
---- a/Grow.c
-+++ b/Grow.c
-@@ -1892,6 +1892,14 @@ int Grow_reshape(char *devname, int fd,
-
- if (retval) {
- pr_err("Cannot read superblock for %s\n", devname);
-+ close(cfd);
-+ free(subarray);
-+ return 1;
-+ }
-+
-+ if (s->raiddisks && subarray) {
-+ pr_err("--raid-devices operation can be performed on a container only\n");
-+ close(cfd);
- free(subarray);
- return 1;
- }
---
-2.38.1
-
diff --git a/0015-Incremental-Fix-possible-memory-and-resource-leaks.patch b/0015-Incremental-Fix-possible-memory-and-resource-leaks.patch
deleted file mode 100644
index 51a9e0f..0000000
--- a/0015-Incremental-Fix-possible-memory-and-resource-leaks.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From de064c93e3819d72720e4fba6575265ba10e1553 Mon Sep 17 00:00:00 2001
-From: Mateusz Grzonka <mateusz.grzonka at intel.com>
-Date: Mon, 13 Jun 2022 12:11:25 +0200
-Subject: [PATCH 15/83] Incremental: Fix possible memory and resource leaks
-
-map allocated through map_by_uuid() is not freed if mdfd is invalid.
-In addition mdfd is not closed, and mdinfo list is not freed too.
-
-Signed-off-by: Mateusz Grzonka <mateusz.grzonka at intel.com>
-Change-Id: I25e726f0e2502cf7e8ce80c2bd7944b3b1e2b9dc
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Incremental.c | 32 +++++++++++++++++++++++---------
- 1 file changed, 23 insertions(+), 9 deletions(-)
-
-diff --git a/Incremental.c b/Incremental.c
-index a57fc323..4d0cd9d6 100644
---- a/Incremental.c
-+++ b/Incremental.c
-@@ -1499,7 +1499,7 @@ static int Incremental_container(struct supertype *st, char *devname,
- return 0;
- }
- for (ra = list ; ra ; ra = ra->next) {
-- int mdfd;
-+ int mdfd = -1;
- char chosen_name[1024];
- struct map_ent *mp;
- struct mddev_ident *match = NULL;
-@@ -1514,6 +1514,12 @@ static int Incremental_container(struct supertype *st, char *devname,
-
- if (mp) {
- mdfd = open_dev(mp->devnm);
-+ if (!is_fd_valid(mdfd)) {
-+ pr_err("failed to open %s: %s.\n",
-+ mp->devnm, strerror(errno));
-+ rv = 2;
-+ goto release;
-+ }
- if (mp->path)
- strcpy(chosen_name, mp->path);
- else
-@@ -1573,21 +1579,25 @@ static int Incremental_container(struct supertype *st, char *devname,
- c->autof,
- trustworthy,
- chosen_name, 0);
-+
-+ if (!is_fd_valid(mdfd)) {
-+ pr_err("create_mddev failed with chosen name %s: %s.\n",
-+ chosen_name, strerror(errno));
-+ rv = 2;
-+ goto release;
-+ }
- }
-- if (only && (!mp || strcmp(mp->devnm, only) != 0))
-- continue;
-
-- if (mdfd < 0) {
-- pr_err("failed to open %s: %s.\n",
-- chosen_name, strerror(errno));
-- return 2;
-+ if (only && (!mp || strcmp(mp->devnm, only) != 0)) {
-+ close_fd(&mdfd);
-+ continue;
- }
-
- assemble_container_content(st, mdfd, ra, c,
- chosen_name, &result);
- map_free(map);
- map = NULL;
-- close(mdfd);
-+ close_fd(&mdfd);
- }
- if (c->export && result) {
- char sep = '=';
-@@ -1610,7 +1620,11 @@ static int Incremental_container(struct supertype *st, char *devname,
- }
- printf("\n");
- }
-- return 0;
-+
-+release:
-+ map_free(map);
-+ sysfs_free(list);
-+ return rv;
- }
-
- static void run_udisks(char *arg1, char *arg2)
---
-2.38.1
-
diff --git a/0016-Mdmonitor-Fix-segfault.patch b/0016-Mdmonitor-Fix-segfault.patch
deleted file mode 100644
index 61c64ab..0000000
--- a/0016-Mdmonitor-Fix-segfault.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From e702f392959d1c2ad2089e595b52235ed97b4e18 Mon Sep 17 00:00:00 2001
-From: Kinga Tanska <kinga.tanska at intel.com>
-Date: Mon, 6 Jun 2022 12:32:12 +0200
-Subject: [PATCH 16/83] Mdmonitor: Fix segfault
-
-Mdadm with "--monitor" parameter requires md device
-as an argument to be monitored. If given argument is
-not a md device, error shall be returned. Previously
-it was not checked and invalid argument caused
-segmentation fault. This commit adds checking
-that devices passed to mdmonitor are md devices.
-
-Signed-off-by: Kinga Tanska <kinga.tanska at intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Monitor.c | 10 +++++++++-
- mdadm.h | 1 +
- mdopen.c | 17 +++++++++++++++++
- 3 files changed, 27 insertions(+), 1 deletion(-)
-
-diff --git a/Monitor.c b/Monitor.c
-index c0ab5412..4e5802b5 100644
---- a/Monitor.c
-+++ b/Monitor.c
-@@ -182,6 +182,7 @@ int Monitor(struct mddev_dev *devlist,
- continue;
- if (strcasecmp(mdlist->devname, "<ignore>") == 0)
- continue;
-+
- st = xcalloc(1, sizeof *st);
- if (mdlist->devname[0] == '/')
- st->devname = xstrdup(mdlist->devname);
-@@ -190,6 +191,8 @@ int Monitor(struct mddev_dev *devlist,
- strcpy(strcpy(st->devname, "/dev/md/"),
- mdlist->devname);
- }
-+ if (!is_mddev(mdlist->devname))
-+ return 1;
- st->next = statelist;
- st->devnm[0] = 0;
- st->percent = RESYNC_UNKNOWN;
-@@ -203,7 +206,12 @@ int Monitor(struct mddev_dev *devlist,
- struct mddev_dev *dv;
-
- for (dv = devlist; dv; dv = dv->next) {
-- struct state *st = xcalloc(1, sizeof *st);
-+ struct state *st;
-+
-+ if (!is_mddev(dv->devname))
-+ return 1;
-+
-+ st = xcalloc(1, sizeof *st);
- mdlist = conf_get_ident(dv->devname);
- st->devname = xstrdup(dv->devname);
- st->next = statelist;
-diff --git a/mdadm.h b/mdadm.h
-index 09915a00..d53df169 100644
---- a/mdadm.h
-+++ b/mdadm.h
-@@ -1636,6 +1636,7 @@ extern int create_mddev(char *dev, char *name, int autof, int trustworthy,
- #define FOREIGN 2
- #define METADATA 3
- extern int open_mddev(char *dev, int report_errors);
-+extern int is_mddev(char *dev);
- extern int open_container(int fd);
- extern int metadata_container_matches(char *metadata, char *devnm);
- extern int metadata_subdev_matches(char *metadata, char *devnm);
-diff --git a/mdopen.c b/mdopen.c
-index 245be537..d18c9319 100644
---- a/mdopen.c
-+++ b/mdopen.c
-@@ -475,6 +475,23 @@ int open_mddev(char *dev, int report_errors)
- return mdfd;
- }
-
-+/**
-+ * is_mddev() - check that file name passed is an md device.
-+ * @dev: file name that has to be checked.
-+ * Return: 1 if file passed is an md device, 0 if not.
-+ */
-+int is_mddev(char *dev)
-+{
-+ int fd = open_mddev(dev, 1);
-+
-+ if (fd >= 0) {
-+ close(fd);
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
- char *find_free_devnm(int use_partitions)
- {
- static char devnm[32];
---
-2.38.1
-
diff --git a/0017-Mdmonitor-Improve-logging-method.patch b/0017-Mdmonitor-Improve-logging-method.patch
deleted file mode 100644
index 3c7eed2..0000000
--- a/0017-Mdmonitor-Improve-logging-method.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From f5ff2988761625b43eb15555993f2797af29f166 Mon Sep 17 00:00:00 2001
-From: Kinga Tanska <kinga.tanska at intel.com>
-Date: Mon, 6 Jun 2022 12:32:13 +0200
-Subject: [PATCH 17/83] Mdmonitor: Improve logging method
-
-Change logging, and as a result, mdmonitor in verbose
-mode will report its configuration.
-
-Signed-off-by: Kinga Tanska <kinga.tanska at intel.com>
-Signed-off-by: Oleksandr Shchirskyi <oleksandr.shchirskyi at intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Monitor.c | 25 ++++++++++++++-----------
- 1 file changed, 14 insertions(+), 11 deletions(-)
-
-diff --git a/Monitor.c b/Monitor.c
-index 4e5802b5..6ca1ebe5 100644
---- a/Monitor.c
-+++ b/Monitor.c
-@@ -136,24 +136,27 @@ int Monitor(struct mddev_dev *devlist,
- struct mddev_ident *mdlist;
- int delay_for_event = c->delay;
-
-- if (!mailaddr) {
-+ if (!mailaddr)
- mailaddr = conf_get_mailaddr();
-- if (mailaddr && ! c->scan)
-- pr_err("Monitor using email address \"%s\" from config file\n",
-- mailaddr);
-- }
-- mailfrom = conf_get_mailfrom();
-
-- if (!alert_cmd) {
-+ if (!alert_cmd)
- alert_cmd = conf_get_program();
-- if (alert_cmd && !c->scan)
-- pr_err("Monitor using program \"%s\" from config file\n",
-- alert_cmd);
-- }
-+
-+ mailfrom = conf_get_mailfrom();
-+
- if (c->scan && !mailaddr && !alert_cmd && !dosyslog) {
- pr_err("No mail address or alert command - not monitoring.\n");
- return 1;
- }
-+
-+ if (c->verbose) {
-+ pr_err("Monitor is started with delay %ds\n", c->delay);
-+ if (mailaddr)
-+ pr_err("Monitor using email address %s\n", mailaddr);
-+ if (alert_cmd)
-+ pr_err("Monitor using program %s\n", alert_cmd);
-+ }
-+
- info.alert_cmd = alert_cmd;
- info.mailaddr = mailaddr;
- info.mailfrom = mailfrom;
---
-2.38.1
-
diff --git a/0018-Fix-possible-NULL-ptr-dereferences-and-memory-leaks.patch b/0018-Fix-possible-NULL-ptr-dereferences-and-memory-leaks.patch
deleted file mode 100644
index 24db49f..0000000
--- a/0018-Fix-possible-NULL-ptr-dereferences-and-memory-leaks.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 626bc45396c4959f2c4685c2faa7c4f553f4efdf Mon Sep 17 00:00:00 2001
-From: Mateusz Grzonka <mateusz.grzonka at intel.com>
-Date: Mon, 13 Jun 2022 11:59:34 +0200
-Subject: [PATCH 18/83] Fix possible NULL ptr dereferences and memory leaks
-
-In Assemble there was a NULL check for sra variable,
-which effectively didn't stop the execution in every case.
-That might have resulted in a NULL pointer dereference.
-
-Also in super-ddf, mu variable was set to NULL for some condition,
-and then immidiately dereferenced.
-Additionally some memory wasn't freed as well.
-
-Signed-off-by: Mateusz Grzonka <mateusz.grzonka at intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- Assemble.c | 7 ++++++-
- super-ddf.c | 9 +++++++--
- 2 files changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/Assemble.c b/Assemble.c
-index 9eac9ce0..4b213560 100644
---- a/Assemble.c
-+++ b/Assemble.c
-@@ -1982,7 +1982,12 @@ int assemble_container_content(struct supertype *st, int mdfd,
- }
-
- sra = sysfs_read(mdfd, NULL, GET_VERSION|GET_DEVS);
-- if (sra == NULL || strcmp(sra->text_version, content->text_version) != 0) {
-+ if (sra == NULL) {
-+ pr_err("Failed to read sysfs parameters\n");
-+ return 1;
-+ }
-+
-+ if (strcmp(sra->text_version, content->text_version) != 0) {
- if (content->array.major_version == -1 &&
- content->array.minor_version == -2 &&
- c->readonly &&
-diff --git a/super-ddf.c b/super-ddf.c
-index 8cda23a7..abbc8b09 100644
---- a/super-ddf.c
-+++ b/super-ddf.c
-@@ -5125,13 +5125,16 @@ static struct mdinfo *ddf_activate_spare(struct active_array *a,
- */
- vc = find_vdcr(ddf, a->info.container_member, rv->disk.raid_disk,
- &n_bvd, &vcl);
-- if (vc == NULL)
-+ if (vc == NULL) {
-+ free(rv);
- return NULL;
-+ }
-
- mu = xmalloc(sizeof(*mu));
- if (posix_memalign(&mu->space, 512, sizeof(struct vcl)) != 0) {
- free(mu);
-- mu = NULL;
-+ free(rv);
-+ return NULL;
- }
-
- mu->len = ddf->conf_rec_len * 512 * vcl->conf.sec_elmnt_count;
-@@ -5161,6 +5164,8 @@ static struct mdinfo *ddf_activate_spare(struct active_array *a,
- pr_err("BUG: can't find disk %d (%d/%d)\n",
- di->disk.raid_disk,
- di->disk.major, di->disk.minor);
-+ free(mu);
-+ free(rv);
- return NULL;
- }
- vc->phys_refnum[i_prim] = ddf->phys->entries[dl->pdnum].refnum;
---
-2.38.1
-
diff --git a/0019-imsm-Remove-possibility-for-get_imsm_dev-to-return-N.patch b/0019-imsm-Remove-possibility-for-get_imsm_dev-to-return-N.patch
deleted file mode 100644
index 12dd070..0000000
--- a/0019-imsm-Remove-possibility-for-get_imsm_dev-to-return-N.patch
+++ /dev/null
@@ -1,301 +0,0 @@
-From 756a15f32338fdf0c562678694bc8991ad6afb90 Mon Sep 17 00:00:00 2001
-From: Mateusz Grzonka <mateusz.grzonka at intel.com>
-Date: Mon, 13 Jun 2022 12:00:09 +0200
-Subject: [PATCH 19/83] imsm: Remove possibility for get_imsm_dev to return
- NULL
-
-Returning NULL from get_imsm_dev or __get_imsm_dev will cause segfault.
-Guarantee that it never happens.
-
-Signed-off-by: Mateusz Grzonka <mateusz.grzonka at intel.com>
-Signed-off-by: Jes Sorensen <jsorensen at fb.com>
----
- super-intel.c | 153 +++++++++++++++++++++++++-------------------------
- 1 file changed, 78 insertions(+), 75 deletions(-)
-
-diff --git a/super-intel.c b/super-intel.c
-index ba3bd41f..3788feb9 100644
---- a/super-intel.c
-+++ b/super-intel.c
-@@ -851,6 +851,21 @@ static struct disk_info *get_disk_info(struct imsm_update_create_array *update)
- return inf;
- }
-
-+/**
-+ * __get_imsm_dev() - Get device with index from imsm_super.
-+ * @mpb: &imsm_super pointer, not NULL.
-+ * @index: Device index.
-+ *
-+ * Function works as non-NULL, aborting in such a case,
-+ * when NULL would be returned.
-+ *
-+ * Device index should be in range 0 up to num_raid_devs.
-+ * Function assumes the index was already verified.
-+ * Index must be valid, otherwise abort() is called.
-+ *
-+ * Return: Pointer to corresponding imsm_dev.
-+ *
-+ */
- static struct imsm_dev *__get_imsm_dev(struct imsm_super *mpb, __u8 index)
- {
- int offset;
-@@ -858,30 +873,47 @@ static struct imsm_dev *__get_imsm_dev(struct imsm_super *mpb, __u8 index)
- void *_mpb = mpb;
-
- if (index >= mpb->num_raid_devs)
-- return NULL;
-+ goto error;
-
- /* devices start after all disks */
- offset = ((void *) &mpb->disk[mpb->num_disks]) - _mpb;
-
<Skipped 13585 lines>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/mdadm.git/commitdiff/60b906e82e8128f2d7acb59ea8f7c795867a9ccc
More information about the pld-cvs-commit
mailing list