multipathd: Don't mark a virtio_blk path offline if it has no sysfs "state" attribute
multipathd currently marks paths as down if they don't have a sysfs
"state" attribute.
Unfortunately, this makes multipathd unusable with Linux virtio_blk
devices, since they don't have this attribute. I need to use multipath
with virtio for consistency with a real configuration when testing a
clustered NAS system - yeah, I'm that guy again... :-)
One way of working around this might be to have path_offline() return
PATH_UP for all devices that don't have a sysfs "state" attribute,
instead of PATH_WILD. However, I'm guessing the current behaviour might
exist for a reason.
The following patch makes path_offline() always return PATH_UP instead
of PATH_WILD for virtio_blk devices. I've implemented the nested if
statements as below to change the code flow as little as possible
when sysfs_get_state() actually succeeds, which I assume is usually the
case. If nobody is feeling paranoid then the check for virtio_blk
could obviously be done before the call to sysfs_get_state().
If people think this patch is too specific then at least it can be
used to start a discussion... ;-)
commit fc2eb79ba3bca70702568cce73be9daffaf3f149
Author: Martin Schwenke <martin@meltin.net>
Date: Thu May 5 14:39:29 2011 +1000
Don't mark a virtio_blk path offline if it has no sysfs "state" attribute.
Signed-off-by: Martin Schwenke <martin@meltin.net>