diff options
author | Coly Li <colyli@suse.de> | 2019-07-31 07:29:29 +0200 |
---|---|---|
committer | Jes Sorensen <jsorensen@fb.com> | 2019-08-12 22:16:36 +0200 |
commit | d11abe4bd5cad39803726ddff1888674e417bda5 (patch) | |
tree | e93976438518db6defd35a3533d7ecfb3e3f13bd /ReadMe.c | |
parent | mdadm.h: include sysmacros.h unconditionally (diff) | |
download | mdadm-d11abe4bd5cad39803726ddff1888674e417bda5.tar.xz mdadm-d11abe4bd5cad39803726ddff1888674e417bda5.zip |
mdadm: add --no-devices to avoid component devices detail information
When people assemble a md raid device with a large number of
component deivces (e.g. 1500 DASD disks), the raid device detail
information generated by 'mdadm --detail --export $devnode' is very
large. It is because the detail information contains information of
all the component disks (even the missing/failed ones).
In such condition, when udev-md-raid-arrays.rules is triggered and
internally calls "mdadm --detail --no-devices --export $devnode",
user may observe systemd error message ""invalid message length". It
is because the following on-stack raw message buffer in systemd code
is not big enough,
systemd/src/libudev/libudev-monitor.c
_public_ struct udev_device *udev_monito ...
struct ucred *cred;
union {
struct udev_monitor_netlink_header nlh;
char raw[8192];
} buf;
Even change size of raw[] from 8KB to larger size, it may still be not
enough for detail message of a md raid device with much larger number of
component devices.
To fix this problem, an extra option '--no-devices' is added (the
original idea is proposed by Neil Brown). When printing detailed
information of a md raid device, if '--no-devices' is specified, then
all component devices information will not be printed, then the output
message size can be restricted to a small number, even with the systemd
only has 8KB on-disk raw buffer, the md raid array udev rules can work
correctly without failure message.
Signed-off-by: Coly Li <colyli@suse.de>
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
Diffstat (limited to 'ReadMe.c')
-rw-r--r-- | ReadMe.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -181,6 +181,7 @@ struct option long_options[] = { /* For Detail/Examine */ {"brief", 0, 0, Brief}, + {"no-devices",0, 0, NoDevices}, {"export", 0, 0, 'Y'}, {"sparc2.2", 0, 0, Sparc22}, {"test", 0, 0, 't'}, |