[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Udev support for device-mapper/LVM2 in rawhide



Hi,

this is just an announce that finally we will make a new rawhide
release tomorrow with udev support enabled in device-mapper and LVM2
packages (upcoming device-mapper-1.02.39-2, lvm2-2.02.54-2).

This is a scratch you can check and test if you would like to:

  https://koji.fedoraproject.org/koji/taskinfo?taskID=1774341

We will provide the rules as well as the udev synchronisation
feature (udev_sync) in libdevmapper directly. We have extended its
interface so it's possible to wait for udev to process the events
that are related to actions done on DM devices (create, rename,
resume, remove). This way we can prevent races between libdevmapper
and udev itself.

However, we had to change the layout in /dev based on comments from
udev team:

 - /dev/mapper directory is now filled with symlinks (not nodes)
   with names given by actual DM device names

 - these symlinks point to /dev/dm-X nodes, X is a number. This is
   an internal kernel name that should not be visible in userspace,
   but there's this udev requirement that node names must match the
   kernel names so...

 - as for LVM - we use symlinks in /dev/<vgname> but now these ones
   point to /dev/dm-X not /dev/mapper/<actual_dm_name>

Any other software using libdevmapper should work without any
problems while still not using udev_sync feature (libdevmapper
will detect this and it will fallback to old way of node creation
under /dev - that is by libdevmapper itself, the rules will
be selectively switched off automatically in these situations).
However, we expect that everybody using libdevmapper will switch
to using udev_sync interface as well gradually.

There were some problems last time we brought this into the F12 rawhide
a month ago (the most critical were dracut and anaconda). We have
identified these problems and everything should be fixed now (there
are proper hooks in dracut to install the new rules and we provided
a quick workaround in libdevmapper for parted utility that caused
the anaconda to fail, there's also a fix on its way to parted upstream
itself).

Maybe I should mention other known problems we track and we know about:

 - mount utility uses inappropriate DM names in mtab (because it follows
   the symlinks and takes the internal dm-X names). The consequence is
   that utilities reading mtab will show these dm-X names instead of
   actual DM names (like the output of "df"). The fix is in upstream
   util-linux-ng already (as of 26th October) so I hope it will
   propagate into rawhide soon.

 - since we create the nodes on "change" udev event (and we have to!)
   and suppress the node creation on "add" event, there's a problem
   while using "udevadm trigger". The trigger generates "add" events
   by default and when called, the DM nodes are removed (because
   of the node suppression on add and udev removes the nodes if we
   use the suppression and the nodes exist already). We have to work out
   a proper solution with udev team here, but if you run into this
   problem, you can have those DM nodes back by calling:

     udevadm trigger --action=change --property-match=DM_UDEV_RULES_VSN=*

   or (but this works for kernels >= 2.6.29 only):

     udevadm trigger --action=change --attr-match=dm/name

   or:

     udevadm control --env=STARTUP=1
     udevadm trigger
     udevadm control --env=STARTUP=


 - there's a problem with GRUB2 that can't deal with the symlinks in
   /dev/mapper (it's the grub-probe that fails iirc). Since there are
   more things to fix in grub2 with respect to DM devices, we have
   to work more closely with grub team to solve this issue and other
   issues.


Hopefully I've mentioned eveything that's important. If you have any
questions, please, feel free to raise your comments here. The plan is
to switch this on tomorrow, but if there's anyone who sees a problem
here and who would like to test it more and needs more time, please,
let me know.

Thanks

Peter


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]