]> sourceware.org Git - lvm2.git/commit
udev: fix pvscan --cache -aay to trigger on relevant events
authorPeter Rajnoha <prajnoha@redhat.com>
Tue, 10 Sep 2013 13:49:05 +0000 (15:49 +0200)
committerPeter Rajnoha <prajnoha@redhat.com>
Tue, 10 Sep 2013 14:27:58 +0000 (16:27 +0200)
commit8d1d83504dcf9c86ad42d34d3bd0b201d7bab8f6
tree7ccc698f67d0ae4cb6b00676fa5686cf56987149
parent9ba40da7ae908fb36cb9927cde60a1a45cacce80
udev: fix pvscan --cache -aay to trigger on relevant events

This patch fixes the way the special devices are handled
(special in this context means that they're not usable
after the usual ADD event like other generic devices):

  - DM and MD devices are pvscanned only when they are just set up.
    This is the first CHANGE event that makes the device  usable
    (the DM_UDEV_PRIMARY_SOURCE_FLAG is set for DM and the
     md/array_state sysfs attribute is present for MD).
    Whether the device is activated is remembered via
    DM_ACTIVATED (for DM) and LVM_MD_PV_ACTIVATED (for MD)
    udev environment variable. This is then used to decide
    whether we should fire the pvscan on ADD event to
    support coldplugging. For any (artificial) ADD event
    generated during coldplug, the device must be already
    set up properly to fire the pvscan on it.

  - Similar for loop devices. For loop devices, only CHANGE
    events are relevant (so there's a CHANGE after the loop
    device is set up as well as detached). Whether the loop
    has just been activated is detected via loop/backing_file
    sysfs attribute presence. The activation state is remembered
    via LVM_LOOP_PV_ACTIVATED udev environment variable.

  - Do not pvscan multipath device components (underlying paths).

  - Do not pvscan RAID device components.

  - Also, set LVM_SCANNED="1" udev environment variable for
    debug purposes (it's visible in the lvmdump -u that takes
    the current udev database). This variable is set once
    the pvscan is triggered.

The table below summarises when the pvscan is triggered
(marked with X, X* means fire only if the special dev is properly set up):

      | real ADD | real CHANGE | artificial ADD | artificial CHANGE | remove
=============================================================================
DM    |          |      X      |       X*       |                   |   X
MD    |          |      X      |       X*       |                   |
loop  |          |      X      |       X*       |                   |
other |    X     |             |       X        |                   |   X
udev/10-dm.rules.in
udev/13-dm-disk.rules.in
udev/69-dm-lvm-metad.rules.in
This page took 0.032481 seconds and 5 git commands to generate.