CA-116160: Python exception in HBA SR create.

len() on dictionary iterkeys is not valid in Python 2.6.
Replaced it with len() directly on the dictionary.

Signed-off-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
Reviewed-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>

GitHub: closes #47 on xapi-project/sm
CA-118899: Support UTF-8 iSCSI target names.

Signed-off-by: Rob Dobson <rob@rdobson.co.uk>
Acked-by: Thanos Makatos <thanos.makatos@citrix.co.uk>

GitHub: closes #44 on xapi-project/sm
CA-119833: snapwatchd fails to link on some systems

snapwatchd fails to link a shared .so with -shared:

  /usr/bin/ld: xslib.o: relocation R_X86_64_32 against `.rodata.str1.1'
  can not be used when making a shared object
  xslib.o: could not read symbols: Bad value

We need to explicitly compile our objects as position-independent
code with -fPIC

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Acked-by: Germano Percossi <germano.percossi@citrix.com>

GitHub: closes #49 on xapi-project/sm
[CA-118876] & [SCTX-1536]: Always use the back-up VHD footer.

Signed-off-by: Thanos Makatos <thanos.makatos@citrix.com>
Reviewed-by: Keith Petley <keith.petley@citrix.com>

GitHub: closes #51 on xapi-project/sm
[CP-5830]: Productise removal of lvm2-master-mode.patch

Removed the --master switch from lvm commands. We now use two separate
lvm conf files for master and slave nodes. Appropriate conf file is
chosen through an environment variable.

This changeset includes the fix made for [CA-116958] in addition to the
original work done for patch removal.

Signed-off-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #48 on xapi-project/sm
CA-116545: SR detach could fail during a Find Open process check

This could happen if one pid, out of a list of pids, cease to exist.
Ignoring the error helps us move forward through the list checking
for any pid / file handles

    Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
    Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>
    GitHub: closes #39 on xapi-project/sm
CP-6336: Removal of dm-multipath-conf

Migration of dm-multipath-conf.patch content from dm-multipath to sm
with basic conf file.
Previously we patched device-mapper-multipath to use a different
configuration file.

Those changes are now integrated into our own configuration file
that is installed using "update-alternatives" with a backup copy
if the original file is a regular file.

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>

GitHub: closes #52 on xapi-project/sm
CP-6337: Added multipath.conf manipulator

This script is a basic multipath.conf to add and remove
WWIDs in the blacklist_exceptions section

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Keith Petley <keith.petley@citrix.com>
CP-6337: Added locking mechanism to wwid_conf

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Keith Petley <keith.petley@citrix.com>
CP-6337: Use reconfigure and wwid utils

This patch ensure the new mechanism for explicit multipath
mapping is active.
The corresponding patch in dm-multipath can be removed.

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Keith Petley <keith.petley@citrix.com>
CP-6337: Ensure multipath kernel modules are present

Once started the multipath daemon does not load the needed
kernel modules.
In the past it was not a problem because they are loaded as soon as
a device is added using the CLI.
Now we need some checks before doing this and they fail if this modules
are not loaded.

Loading modules while starting multipath is the standard behaviour in
more recent versions of multipath.
We just ensure this is always true.

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Keith Petley <keith.petley@citrix.com>
Merge changes for CP-6337

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>

GitHub: closes #54 on xapi-project/sm
CA-120469: Fail gracefully in case rmdir returns ENOTEMPTY

Parallel vm-suspend operations on vm that has got vdi's in the same SR
could result in reference files, ignoring rmdir error (ENOTEMPTY)
instead of lsdir looks a better option.

Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Reviewed-by:Germano Percossi <germano.percossi@citrix.com>

GitHub: closes #53 on xapi-project/sm
CP-5818: Productise removal of lvm2-lvcreate-inactive-flag.patch

Snapshot and leaf coalesce operations use journaling files with
additional info like parent UUID in the name of the file. Since the
resultant file name is too long for LVM, the file was created in an
inactive mode. This patch changes the logic to create a journal file
with a shorter name and writes additional informaton into the file.
Inactive flag for lvcreate is no longer required.

This changeset includes the fix made for ticket [CA-117034].

Signed-off-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #50 on xapi-project/sm
CA-107356: Fix tapdisk unpause issue in case of VM migration failed.

VDI has driver name set to nbd in case VM migration failed. While
unpause tapdisk, it was always using mirror driver name. In a snapshot
failure scenario, the fix will pass None as driver name to unpause
tapdisk.

Signed-off-by: Sisimon Soman <sisimon.soman@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #27 on xapi-project/sm
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>