• Benjamin Marzinski's avatar
    dm mpath: don't call dm_get_device in multipath_message · a48f6b82
    Benjamin Marzinski authored
    When mutipath_message is called with an action and a device, it needs to
    find the pgpath that matches that device. dm_get_device() is not the
    right function for this. dm_get_device() will look for a table_device
    matching the requested path in use by either the live or inactive table.
    If it doesn't find the device, dm_get_device() will open it and add it
    to the table. Means that multipath_message will accept any block device,
    add it to the table if not present, and then look through the pgpaths
    to see if it finds a match. Afterwards it will remove the device if it
    was not previously in the table devices list.
    
    This is the only function that can modify the device list of a table
    besides the constructors and destructors, and it can only do this when
    it was passed an invalid message.  Instead, multipath_message() should
    call dm_devt_from_path() to get the device dev_t, and match that against
    its pgpaths.
    Signed-off-by: default avatarBenjamin Marzinski <bmarzins@redhat.com>
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    a48f6b82
dm-mpath.c 55.8 KB