Hello everyone. When I was setting a server of mine, I've simplified a bit raid / raid-partitions hooks, as well as rc.sysinit part responsible for array assembly.
Assuming that proper mdadm.conf is present (and, imo, it should be, and by the looks of rc.sysinit, that's what is required either way) - any assembly can be handled by mdadm, with all nodes / symlinks creation and/or fixing by it (what can be further controlled by CREATE line), in a single hook. Even without mdadm.conf, it's still possible to create one on the fly, but naming can be a problem here, especially if version <1 superblock is used. Of course, no old md= configuration in kernel commandline is needed either. So - I was thinking about making it a bit more generic (i.e. detection of which modules to load (with a help of grep or some grep'ish command), some control from rc.conf - regarding naming, symlinks) and then submitting additional files / diffs. If you accepted this, the major question for me would be about udev and how should I set it functioning along the way with mdadm. To be honest, in my setup md (and dm as well) is at this moment ignored by udev - both mdadm (and lvm) handle all node related tasks well, and udev is somewhat duplicating their functionality. Besides, looking at lvm, i.e. in rc.sysinit, vgscan --mknodes is still required, as lvchange/vgchange won't trigger uevents when volumes are available (result of earlier cpio image's actions). Still, while dm plays along with udev nicely (and no need to change it), I've had some tiny problems in md case (which were the initial reason for me to change default hooks / rc.sysinit) - delayed uevents for partitions (mentioned in #7699 - but it's acutally a generic issue, not Arch dependent), no default rules for partitionable arrays in Arch, as well as creating links in different way compared to mdadm (md/device -> device instead of device -> md/device). Also, without external program, I don't see a way to properly name raid partitions through udev (md/dNpM +symlink from md_dNpM - not mentioning setting arrays with custom names). Comparing to lvm - both udev and lvm manage links at the same time. Both vgN/* and mapper/vgN-* are managed/fixed by lvm. Udev overlaps here on mapper/vgN-* area. Something similar to lvm's dmsetup could be made here, so udev and mdadm are "in sync". But it feels like doing something just for the sake of doing it, while mdadm gets all the job done, and well. Two other "newcomer" questions: 1) While we're at udev subject, I was curious - why not use xx-some.rules scheme, where xx are numbers and possibly letters ? The point is - shouldn't part like "early udev rules" be really parsed and run before everything else ? Currently, udev.rules due to its 'u' letter in the front, is usually parsed after everything else, be it files with numbered (i.e. 99-fuse.rules) or unnumbered names (i.e. device-mapper.rules). 2) ca. month ago I made small bug report about dumpkeys / loadkeys ( #7641 , low priority though, so I guess it takes its time). Normally, when dumpkeys is used without -c, it always assumes standard 8859-1 charset during dump, and following loadkeys --unicode will not load the map properly. Just well.. reminding about it :) PS. Thanks for Arch (64). Quite a felxible beast and nice so far to use :) _______________________________________________ arch mailing list [email protected] http://archlinux.org/mailman/listinfo/arch
