Manage: in clustered environments, when raid1 is recovering , add new disk failed?#37
Open
Irelifenfaith wants to merge 1195 commits into
Open
Manage: in clustered environments, when raid1 is recovering , add new disk failed?#37Irelifenfaith wants to merge 1195 commits into
Irelifenfaith wants to merge 1195 commits into
Conversation
There at least two places where it is done directly, so replace them with function. Print message about creating external array, add "/dev/" prefix to refer directly to devnode. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
The approach proposed here is to test drive policies outside validate_geometry() separately per every drive and add determined policies to list. The implementation reuses dev_policy we have in mdadm. This concept addresses following problems: - test drives if they fit together to criteria required by metadata handler, - test all drives assigned to the container even if some of them are not target of the request, mdmon is free to use any drive in the same container, - extensibility, new policies can be added to handler easy, - fix issues related to imsm controller domain verifying. Add superswitch function. It is used in next patches. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Add support for three scenarios: - obtaining array wide policies via fd, - obtaining array wide policies via struct mdinfo, - getting policies for particular drive from the request. Add proper functions and make them extern. These functions are used in next patches. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Generate and compare policies, abort if policies do not match. It is tested for both create modes, with container and disk list specified directly. It is used if supertype supports it. For a case when disk list is specified, container may contain more devices, so additional check on container is done to analyze all disks. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Only IMSM is going to use device policies so it is added to manage_add_external(). Test policies before adding the drive to container. The change blocks adding new device to the container which already contains not matching devices Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
spare_criteria is expanded to contain policies which will be generated by handler's get_spare_criteria() function. It provides a way to test device for metadata specific policies earlier than during add_do_super(), when device is already removed from previous array/container for Monitor. For Incremental, it ensures that all criteria are tested when trying spare. It is not tested when device contains valid metadata. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
This patch removes get_disk_controller_domain_imsm() in favour of test_and_add_device_policies_imsm(). It is used by create, add and mdmonitor. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
This function is unused now. Drop it. Controller for IMSM is a device policy and is separated from user defined domains. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
This reverts commit 3bf9495 ("policy.c: Avoid to take spare without defined domain by imsm"). IMSM does not require to be special now because it doesn't create disk controller domain. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
It is a file with repo content list. It is outdated already. Remove it. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
libudev may not be presented at all, do not require it. Reported-by: Boian Bonev <bbonev@ipacct.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Add limits.h include for NAME_MAX definition. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
It is not set, so it should be 0 but it may vary on compilation settings. Set it always to 0. metadata should care to set UUID and read in proper endianness so it doesn't follow super1 concept of swapuuid to depend on endianness. It is not an attempt to fix endianness issues. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Mentioned commit (see Fixes) causes that UUID is not swapped as expected for native superblock. Fix this problem. For detail, we should avoid superblock calls, we can have information about supertype from map, use that. Simplify fname_from_uuid() by removing dependencies to metadata handler, it is not needed. Decision is taken at compile time, expect super1 but this function is not used by super1. Add warning about that. Remove separator, it is always ':'. Fixes: 60c1953 ("Detail: remove duplicated code") Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
9003 was passed directly to sysfs_set_array() since md_get_version() always returned this value. md_get_version() was removed long ago. Remove dead version check from sysfs_set_array(). Remove "vers" argument and fix function calls. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
If sc is not initialized, there is possibility that sc.pols is not zeroed and it causes segfault. Add missing initialization. Add missing dev_policy_free() in two places. Fixes: f656201 ("mdadm: drop get_required_spare_criteria()") Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Commit e15e8b0 ("Remove all "if zeros"") did not remove all "if 0" code blocks. This commit is cleanup for that commit. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Move pr_vrb define from super-intel.c to mdadm.h to make it widely available. This change will be used in the next patches. Signed-off-by: Blazej Kucman <blazej.kucman@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
For NVMe devices with Opal support, encryption information, status and ability are determined based on Opal Level 0 discovery response. Technical documentation used is given in the implementation. Ability in general describes what type of encryption is supported, Status describes in what state the disk with encryption support is. The current patch includes only the implementation of reading encryption information, functions will be used in one of the next patches. Motivation for adding this functionality is to block mixing of disks in IMSM arrays with encryption enabled and disabled. The main goal is to not allow stealing data by rebuilding array to not encrypted drive which can be read elsewhere. Value ENA_OTHER from enum encryption_ability will be used in the next patch. Signed-off-by: Blazej Kucman <blazej.kucman@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Functionality reads information about SATA disk encryption. Technical documentation used is given in the implementation. The implementation is able to recognized two encryption standards for SATA drives, OPAL and ATA security. If the SATA drive supports OPAL, encryption status and ability are determined based on Opal Level 0 discovery response, for ATA security, based on ATA identify response. If SATA supports OPAL, ability is set to "SED", for ATA security to "Other". SED(Self-Encrypting Drive) is commonly used to describe drive which using OPAL or Enterprise standards developed by Trusted Computing Group. Ability "Other" is used for ATA security because we rely only on information from ATA identify which describe the overall state of encryption. It is allowed to mix disks with different encryption ability such as "SED" and "Other" and it is not security gap. Motivation for adding this functionality is to block mixing of disks in IMSM arrays with encryption enabled and disabled. The main goal is to not allow stealing data by rebuilding array to not encrypted drive which can be read elsewhere. For SATA Opal drives, libata allow_tmp parameter enabled is required, which is necessary for Opal Security commands to work, therefore, if the parameter is not enabled, SATA Opal disk cannot be used in case the encryption will be checked by metadata. Implemented functions will be used in one of the next patches. In one of the next patches, a flag will be added to enable disabling SATA Opal encryption checking due to allow_tpm kernel setting dependency. Signed-off-by: Blazej Kucman <blazej.kucman@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Add ENCRYPTION_NO_VERIFY config key and allow to disable checking encryption status for given type of drives. The key is introduced because of SATA Opal disks for which TPM commands must be enabled in libata kernel module, (libata.allow_tpm=1), otherwise it is impossible to verify encryption status. TPM commands are disabled by default. Currently the key only supports the "sata_opal" value, if necessary, the functionality is ready to support more types of disks. This functionality will be used in the next patches. Signed-off-by: Blazej Kucman <blazej.kucman@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Print SATA/NVMe disk encryption information in --detail-platform.
Encryption Ability and Status will be printed for each disk.
There is one exception, Opal SATA drives encryption is not checked when
ENCRYPTION_NO_VERIFY key with "sata_opal" value is set in conf, for this
reason such drives are treated as without encryption support.
To test this feature, drives SATA/NVMe with Opal support or SATA drives
with encryption support have to be used.
Example outputs of --detail-platform:
Non Opal, encryption enabled, SATA drive:
Port0 : /dev/sdc (CVPR050600G3120LGN)
Encryption(Ability|Status): Other|Unlocked
NVMe drive without Opal support:
NVMe under VMD : /dev/nvme2n1 (PHLF737302GB1P0GGN)
Encryption(Ability|Status): None|Unencrypted
Unencrypted SATA drive with OPAL support:
- default allow_tpm, we will get an error from mdadm:
Port6 : /dev/sdi (CVTS4246015V180IGN)
mdadm: Detected SATA drive /dev/sdi with Trusted Computing support.
mdadm: Cannot verify encryption state. Requires libata.tpm_enabled=1.
mdadm: Failed to get drive encrytpion information.
- default "allow_tpm" and config entry "ENCRYPTION_NO_VERIFY sata_opal":
Port6 : /dev/sdi (CVTS4246015V180IGN)
Encryption(Ability|Status): None|Unencrypted
- added "libata.allow_tpm=1" to boot parameters(requires reboot),
the status will be read correctly:
Port6 : /dev/sdi (CVTS4246015V180IGN)
Encryption(Ability|Status): SED|Unencrypted
Signed-off-by: Blazej Kucman <blazej.kucman@intel.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
IMSM cares about drive encryption state. It is not allowed to mix disks with different encryption state within one md device. This policy will verify that attempt to use disks with different encryption states will fail. Verification is performed for devices NVMe/SATA Opal and SATA. There is one exception, Opal SATA drives encryption is not checked when ENCRYPTION_NO_VERIFY key with "sata_opal" value is set in conf, for this reason such drives are treated as without encryption support. Signed-off-by: Blazej Kucman <blazej.kucman@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Bring changelog back to life. Remove ANNOUCEs. It will use markdown format, to have one style. All releases are migrated to new changelog. It was a exercise I have taken, to familiarize with the mdadm history. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Describe rules maintainer should follow. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Describe supported metadata types, add step-by-step patch sending instruction, mention minimally supported kernel version and licensing. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Define FALLOC_FL_ZERO_RANGE if needed as FALLOC_FL_ZERO_RANGE is only defined for aarch64 on uclibc-ng resulting in the following or1k build failure since commit 577fd10: Create.c: In function 'write_zeroes_fork': Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function) 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE, | ^~~~~~~~~~~~~~~~~~~~ Fixes: - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
This patch alters mutiple functions calls so the context is passed to external reshape functions. There are two main reasons behind it: - reduces number of arguments passed and unifies them, - imsm code will make use of context in incoming patches. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
reshape_super() takes too many arguments. Change passing params in favor of single struct. Add devname pointer and change direction members to struct shape and use it for reshape_super(). Create reshape_array_size() and reshape_array_non_size() to handle reshape_super() calls. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
As for now, IMSM supports only 4 drive RAID 1+0. This patch is first in series to add support for literal RAID 10 (with more than 4 drives) to imsm. Allow setting RAID 10 as raid level for imsm arrays. Add update_imsm_raid_level() to handle raid level updates. Set RAID10 as default level for imsm R0 to R10 migrations. Replace magic numbers with defined values for RAID level checks/assigns. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
This commit increases sleep times from 4 seconds to 6 as some of the tests seem to be randomly failing due to this. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
The issue here is that some of the tests sporadically fail due to things being still processed. Default 1s delays proven not to be sufficient for newly created CI, as tests tend to ocassionally fail. This patch increases default 1s sleep to 2s, to hopefully get rid of sporadical fails. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
Handle variable going out of scope leaks the handle. Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
Keep it documented in code. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Add dedicated enum to reflect possible values for mentioned file. Not all values are mapped. Add map to present sysfs keywords. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Incremental_remove() does not execute Manage_subdevs() now. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
In mdadm, we have more flexible apporach to typedefs. Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Create a maintainers file to keep track of people to contact when dealing with mdadm questions/issues. Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
Remove external bitmap support from manual. Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
This commit removes --freeze-reshape logic, it basicaly reverts commit b76b30e ("Do not continue reshape during initrd phase"). --freeze-reshape was supposed to be used to restore critical sector in incremental and assemble operations without starting a reshape process, but it's meaning has been lost through the years and it is not currently used. A replacement for this logic will be added in incoming patches, so reshapes won't be started in initrd phrase. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
Display if there's an ongoing reshape happening in mdadm --detail --export output. This change is needed for incoming patches that will change "grow continue" udev rules, to be based on actual array state. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
There are numerous issues for --grow --continue in switchroot phrase, they include: * Events being missed for restarting grow-continue service. This is apparent mostly on OS on RAID scenarios. When a checkpoint (next step) is committed, we have no reliable way to gracefully stop reshape until it reaches that checkpoint. During boot, there's heavy I/O utilisation, which causes sync speed drop, and naturally checkpoint takes longer to reach. This further causes systemd to forcefully kill grow-continue service due to timeouts, which results in udev event being missed for grow-continue service restart. * Grow-continue (seemingly) was not designed to be restarted without reassembly, some things like stopping chunksize (to lower) migration were straight up not working until recently. This patch makes grow-continue (actual reshape) start after switchroot phrase. This way we should not encounter issues related to restarting the service. Add checks not start a reshape if in initrd, let it initialise only. Change grow-continue udev rule to be triggered whenever there's a reshape happening in metadata, rely on udev event to kick reshape after switchroot. Add handle_forking helper function for reshapes to avoid duplicating code. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
mdadm --grow --continue has no functionality to restore critical sectors if reshape was stopped during operation. This functionality belongs to assemble or incremental. This patch adds hints to error messages, to try to reassemble array in case of reshape failure to restore critical sector, so assemble can handle restoration. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
Refactor continue_via_systemd() and it's calls to make it more readable. No functional changes. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
It reports building error: raid6check.c:324:26: error: implicit declaration of function xmalloc Add xmalloc.h to raid6check.c file to fix this. Signed-off-by: Xiao Ni <xni@redhat.com> Link: https://lore.kernel.org/r/20250117071540.4094-1-xni@redhat.com Signed-off-by: Song Liu <song@kernel.org>
During the boot process if mdadm is called in udev context, sbin paths
like /sbin, /usr/sbin, /usr/local/sbin normally not defined in PATH env
variable, calling system("modprobe md_mod") in create_named_array() may
fail with 'sh: modprobe: command not found' error message.
We don't want to move modprobe binary into udev private directory, so
setting the PATH env is a more proper method to avoid the above issue.
This patch sets PATH env variable with "/sbin:/usr/sbin:/usr/local/sbin"
before calling system("modprobe md_mod"). The change only takes effect
within the udev worker context, not seen by global udev environment.
Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
dracut installs in the initrd a custom udev rule for MD devices (59-persistent-storage-md.rules) only to set the db_persist option (see [1]). The main purpose is that if an MD device is activated in the initrd, its properties are kept on the udev database after the transition from the initrd to the rootfs. This was added to fix detection issues when LVM is on top. This patch would allow to remove the custom udev rule shipped by dracut (63-md-raid-arrays.rules is already being installed in the initrd), and it will also benefit other initrd generators that do not want to create custom udev rules. [1] https://github.com/dracutdevs/dracut/blob/master/modules.d/90mdraid Signed-off-by: Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
For the case mdadm --grow with --add, the s.btype should not be initialized yet, hence BitmapUnknown should be checked instead of BitmapNone. Noted that this behaviour should only support by md-linear, which is removed from kernel, howerver, it turns out md-linear is used widely in home NAS and we're planning to reintroduce it soon. Fixes: 581ba13 ("mdadm: remove bitmap file support") Signed-off-by: Yu Kuai <yukuai3@huawei.com> Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
The legacy option ROM memory range from 0xc0000-0xeffff is not defined on UEFI machines so don't attempt to scan it. This avoids lockdown log spam when Secure Boot is enabled (avoids use of /dev/mem). Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
A dummy function is defined because availability of ss->update_super is not always verified. This fix addresses a crash reported when assembling a RAID array using mdadm with DDF metadata. For more details, see the discussion at: https://lore.kernel.org/all/ CALHdMH30LuxR4tz9jP2ykDaDJtZ3P7L3LrZ+9e4Fq=Q6NwSM=Q@mail.gmail.com/ The discussion centers on an issue with mdadm where attempting to assemble a RAID array caused a null pointer dereference. The problem was traced to a missing update_super() function in super-ddf.c, which led to a crash in Assemble.c. Signed-off-by: lilinzhe <llz@antiy.cn>
Implemented fallback logic to search the last 32MB of the device for the DDF header (magic). If found, proceeds to load the DDF metadata from the located position. When clearing metadata as required by the mdadm --zero (function Kill), also erase the last 32MB of data; otherwise, it may result in an infinite loop. According to the specification, the Anchor Header should be placed at the end of the disk. However,some widely used RAID hardware, such as LSI and PERC, do not position it within the last 512 bytes of the disk. Signed-off-by: lilinzhe <llz@antiy.cn>
It is unused for years. Clear it. Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
Move documentation to documentation/bitmap.md. Add Neil's copyrights, add missing license. Remove unused macros. Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
Make a room for release MAINTAINERS file. Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
Remove Mateusz. Intergrate it with README.md Signed-off-by: Mariusz Tkaczyk <mtkaczyk@kernel.org>
When manager thread detects new array, it will invoke manage_new(). For imsm array, it will further invoke imsm_open_new(). Since commit bbab094("imsm: write bad block log on metadata sync"), it preallocates bad block log when opening the array, that requires increasing the mpb buffer size. For that, imsm_open_new() invokes function imsm_update_metadata_locally(), which first uses imsm_prepare_update() to allocate a larger mpb buffer and store it at "mpb->next_buf", and then invoke imsm_process_update() to copy the content from current mpb buffer "mpb->buf" to "mpb->next_buf", and then free the current mpb buffer and set the new buffer as current. There is a small race window, when monitor thread is syncing metadata, it gets current buffer pointer in imsm_sync_metadata()->write_super_imsm(), but before flushing the buffer to disk, manager thread does above switching buffer which frees current buffer, then monitor thread will run into use-after-free issue and could cause on-disk metadata corruption. If system keeps running, further metadata update could fix the corruption, because after switching buffer, the new buffer will contain good metadata, but if panic/power cycle happens while disk metadata is corrupted, the system will run into bootup failure if array is used as root, otherwise the array can not be assembled after boot if not used as root. This issue will not happen for imsm array with only one member array, because the memory array has not be opened yet, monitor thread will not do any metadata updates. This can happen for imsm array with at lease two member array, in the following two scenarios: 1. Restarting mdmon process with at least two member array This will happen during system boot up or user restart mdmon after mdadm upgrade 2. Adding new member array to exist imsm array with at least one member array. To fix this, delay the switching buffer operation to monitor thread. Fixes: bbab094 ("imsm: write bad block log on metadata sync") Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Signed-off-by: Xiao Ni <xni@redhat.com>
When adding a disk to a RAID1 array, the metadata is read from the existing member disks for sync. However, only the bad_blocks flag are copied, the bad_blocks records are not copied, so the bad_blocks records are all zeros. The kernel function super_1_load() detects bad_blocks flag and reads the bad_blocks record, then sets the bad block using badblocks_set(). After the kernel commit 1726c7746783 (badblocks: improve badblocks_set() for multiple ranges handling) if the length of a bad_blocks record is 0, it will return a failure. Therefore the device addition will fail. So when adding a new disk, some flags cannot be sync and need to be clead. Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
It is not currently possible to create a RAID0 with 0.90 metadata. This is because 0.90 cannot specify the layout of RAID0 (it is traditionally ignored) and different kernels do different things with RAID0 layouts. However it should be possible to use --layout=dangerous as that acknowledges the risk. It also should be possible to create a RAID0 with all devices the same size because in that case all layouts are identical. The metadata handler can only check that all devices are the same size quite late - in write_init_super(). By that time the default is currently set - set to a value that super0 cannot handle. So this patch delays the setting of the default value and leave it for the metadata handler (or for the Build handler). super1 selects ORIG in that case. intel and ddf don't support non-uniform RAID0 so they don't need any change. super0 now checks the sizes of devices if the default RAID0 layout was requested and rejects the request in they are not the same. validiate_geometry0 now allows "dangerous" layouts for raid0. Signed-off-by: NeilBrown <neil@brown.name>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I use the kernel is Linux version4.14.78, In clustered environments, when raid1 is recovering(not resyncing),I try to add new disk with the command mdadm --manage /dev/md125 -a /dev/sdd, in this case, userspace report the error,is it a bug ?