On Mon, 02 Mar 2015 11:32:16 -0500 Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> wrote: > NeilBrown <neilb@xxxxxxx> writes: > > On Wed, 18 Feb 2015 17:11:33 -0500 Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> > > wrote: > > > >> NeilBrown <neilb@xxxxxxx> writes: > >> > On Wed, 18 Feb 2015 13:12:09 -0500 Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> > >> > wrote: > >> > > >> >> Jes.Sorensen@xxxxxxxxxx writes: > >> >> > From: Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> > >> >> > > >> >> > I have received some issues for when creating an array using a > >> >> > /dev/mdX name, the matching symlink in /dev/md/X isn't > >> >> > created. Whereas if you create /dev/md/X, /dev/mdX is created > >> >> > automatically. > >> >> > > >> >> > I was trying to see if there was a better way of dealing with this, > >> >> > but I couldn't find one. If you have suggestions for a better solution > >> >> > I am all ears. > >> >> > > >> >> > Thoughts? > >> >> > >> >> Hi Neil, > >> >> > >> >> Any thoughts on this one? > >> > > >> > Thanks for the reminder.... > >> > > >> > I'm not sure that I really see the problem. > >> > > >> > "I ask it to create /dev/mdX and it doesn't create /dev/md/X". > >> > > >> > Well ... no. You didn't ask it to. If you want it to create /dev/md/X, > >> > then ... ask it to. > >> > > >> > /dev/mdX is the canonical name. It always gets created. > >> > /dev/md/X is a convenient alias. It gets created if requested. > >> > > >> > Is there really a problem here worth solving? > >> > > >> > Maybe I missed something. > >> > >> I have had complaints in Fedora from the installer people that they rely > >> on the /dev/md/ name being created when they create a new device. It is > >> also inconsistent because /dev/md/<X> will be created if you run > >> 'mdadm -As' later on. > > > > If they rely on the /dev/md/ name being created, then surely they should ask > > for it to be created. > > Is it really harder to run "mdadm -C /dev/md/0" than "mdadm -C /dev/md0" ?? > > > > If you create an array as "/dev/md0", then after subsequent "mdadm > > -As" /dev/md0 will exist. > > If you create an array as "/dev/md/0", then after subsequent mdadm > > -As", /dev/md/0 will exist. > > > > The fact that something unasked for also exists is a bonus. > > > >> > >> I don't see it as a major issue, but I can see why it is frustrating for > >> some and I think there is something to be said for being consistent in > >> behavior. > > > > I think the behaviour is perfectly consistent. It just follows rules that > > are slightly less trivial that some people appear to want. > > > > However.... > > If you changed > > > > mp = map_by_uuid(&map, info->uuid); > > if (mp && mp->path && > > strncmp(mp->path, "/dev/md/", 8) == 0) { > > printf("MD_DEVNAME="); > > print_escape(mp->path+8); > > putchar('\n'); > > } > > > > > > in Detail.c so that when mp->path were "/dev/md0", MD_DEVNAME became "0", > > then you should get the result that you are after, and I probably wouldn't > > object to the patch. > > Neil, > > Finally had time to go back and look at this - I don't quite understand > your request here. > > As far as I can see, the above code isn't run at all during device > creation, so I don't get how modifying it as you suggest will make > /dev/md/111 appear if I create /dev/md111? > > Cheers, > Jes Wheels within wheels of deception and indirection.... mdadm doesn't create the devices directly, udev does that. IMPORT{program}="BINDIR/mdadm --detail --export $devnode" ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" So the symlink from /dev/md gets created iff "mdadm --detail --export" reports an MD_DEVNAME. Hence the change suggested. mdadm *can* create the devices itself, but only if udev isn't running, or mdamd has been explicitly told to ignore udev. Normally that doesn't happen. NeilBrown
Attachment:
pgp5ibGdN5Sli.pgp
Description: OpenPGP digital signature