summaryrefslogtreecommitdiffstats
path: root/ReadMe.c
diff options
context:
space:
mode:
authorColy Li <colyli@suse.de>2019-07-31 07:29:29 +0200
committerJes Sorensen <jsorensen@fb.com>2019-08-12 22:16:36 +0200
commitd11abe4bd5cad39803726ddff1888674e417bda5 (patch)
treee93976438518db6defd35a3533d7ecfb3e3f13bd /ReadMe.c
parentmdadm.h: include sysmacros.h unconditionally (diff)
downloadmdadm-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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ReadMe.c b/ReadMe.c
index 12ccf83c..eaf10423 100644
--- a/ReadMe.c
+++ b/ReadMe.c
@@ -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'},