CA-121481: Ensure root disk is not blacklisted if booting from SAN

By default, every device is blacklisted, unless explicitly managed
by the Storage Manager.
When the root disk is managed by multipath, this happens at boot
time and the initrd must be able to add the device to multipath.
This patch ensures that, if the root disk is multipathed, it is
never blacklisted.

This patch can only guarantee that multipath is not broken for
the root disk but it is not responsible for making it multipathed
in the first place.

To make it working at installation time, dracut or mkinitrd should
call it explicitly.

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
CA-121481: No need to use the daemon

The script does not need the daemon to get the needed info.
This script is executed both as a standard boot script and
during the installation ensure the root disk is whitelisted.
In the latter case the daemon is not supposed to be running
but the root disk can be managed by the device mapper.

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
CA-121481: Improved wwid_conf script

Added the following:
- usage message
- command line options
- ability to both add and remove
- force addition or removal

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
CA-121481: make sure 'stat' follows symlinks

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
CA-121481: /dev/root does not exist at installation time

sm-multipath was meant to start at run time only.
We use this function to fix boot from SAN at installation time, too.
We cannot rely on /dev/root so we borrowed some utility functions
from dracut with a slight modification

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
Merge changes for CA-121481

Signed-off-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>

GitHub: closes #56 on xapi-project/sm
CA-115035: mpath-boot and multipathed host other-config keys missing

Before upgrading to the new kernel, the output of
multipath -k"show maps"
and
echo "show maps" |multipathd -k
were different.

Now they are the same but previous code in mpathcount.py was
relying exclusively on the wrong output in the previous version.

Now it is fixed in both cases

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>

GitHub: closes #57 on xapi-project/sm
CA-122445: get_current_initiator_name fails to parse initiatorname.iscsi file on Debian

On Debian, the /etc/iscsi/initiatorname.iscsi file has comments telling you
what to do with the InitiatorName parameter;  the previous code would try
to interpret this comment as the InitiatorName setting and fail to parse it.

Signed-off-by: Euan Harris <euan.harris@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com

GitHub: closes #55 on xapi-project/sm
CA-118742: Drop whitelisting of HBA device drivers from devscan.py

CA-14825 introduced device driver whitelisting when probing HBAs to avoid that
local disks are listed when calling "xe sr-probe type=lvmohba".

Today the use of shared storage using SAS, FC, FCOE and iSCSI is the norm and
it is becoming increasingly difficult to ensure that the whitelisting of device
drivers is current.

Replacing the whitelisting with blacklisting for explicitly local device driver
groups should improve the customer experience, interoperability of SM, reduce
the maintenance effort and at the same time reduce the complexity of the code.

It seems less concerning that users might end up provisioning a local disk, if
it happens to have scsi id, with LVHDoHBA instead of LVHD, than that users end
up not beeing able to provision their shared storage at all. Also the chance of
missing a local device driver appears much lower due to the more consistent
naming.

After all there is the question, whether we should really prevent users from
provisioning local disks using lvhdohba - but changing this is only a 1-line
change, to adapt the blacklist, after this commit.

Signed-off-by: Robert Breker <robert.breker@citrix.com>
Reviewed-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>

GitHub: closes #45 on xapi-project/sm