On 7/31/19 1:29 AM, Coly Li wrote: > 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@xxxxxxx> > Reviewed-by: NeilBrown <neilb@xxxxxxxx> Applied! Thanks, Jes