CA-127463: After a snapshot failure, VHDs are left in PAUSED state

In the event of a snapshot failure, both tapdisk and VHDs are left in
paused state. During the recovery cycle using journaler mechanism, the
VHDs are brought back to a stable state, but further vdi deactivate will
fail with VHDs in paused state. Currently there is no mechanism to
unpause the VHDs and the tapdisk.

Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #79 on xapi-project/sm
CA-128175: vhd-util check on ~TB sized disk taking long.

vhd-util check by default does a quadratic check on the BAT that takes a long time
(In the order of 10 mins) to finish. This inadvertently could block leaf
coalesce. Skipping of quadratic BAT check was introduced via CA-90801
for non-leaf coalesce case.

Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #82 on xapi-project/sm
CA-120162: don't fail if the GC can't be kicked

When a VDI.delete needs to abort the GC and restart it, a deadlock might
occur which leads to reporting that VDI.delete failed while it has
partially succeeded, as the actual deletion of the VDI will happen
sooner or later. Fixing the deadlock is not straightforward, so the best
effort solution is to simply ignore such failures.

Signed-off-by: Thanos Makatos <thanos.makatos@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>

GitHub: closes #83 on xapi-project/sm
CA-116748: Fix VSS Snapshot for 64 bit.

- Removed swig dependency by adding a new xslib.py which defines
  wrappers for the api's defined by xen.lowlevel.xs library to communicate with xenstore.
- Removed xslib.c, xslib.h, xslib.i
- Fix drivers/vss_control.
- Removed xslib dependency from srmetadata.py.
- Fix journaler.py dependencies.
- Fix Makefile.

Signed-off-by: Siddharth Vinothkumar <siddharth.vinothkumar@citrix.com>
Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Reviewed-by: Keith Petley <keith.petley@citrix.com>

GitHub: closes #85 on xapi-project/sm
CP-7830: Move all references to iscsiadm inside iscsilib

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

GitHub: closes #86 on xapi-project/sm
CA-128373: move lvm.conf patch from dom0.hg to sm

Patch in dom0.hg/patches.dom0/patch-etc_lvm_lvm.conf takes care of
CA-16427 and CA-57153. Because of CP-5830, we end up with inconsistent
lvm.conf files. We drop the patch from dom0.hg and now configure
lvm.conf during SM RPM installation time, the same way we do for CP-5830.

NB the way we configure lvm.conf is very fragile, we should use
Germano's Python script for Borehamwood (it lives in
tampa-lcm/sm.hg/mk/sm.spec.in).

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

GitHub: closes #87 on xapi-project/sm
CA-122205: Resolve race between VDI.activate and GC.

The issue here is journaler._getAllEntries() that activates, opens and
deactivates journaler tagged LV files from the LVHDSR.attach
call. A parallel running GC could remove the journaler LV during this
time, resulting in _getAllEntries to throw an exception EIO. Ignoring
such errors in such cases, since it reduces the false positives.

Signed-off-by: Siddharth Vinothkumar <siddharth.vinothkumar@citrix.com>
Reviewed-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Reviewed-by: Thomas Sanders <thomas.sanders@citrix.com>

GitHub: closes #81 on xapi-project/sm
CA-122205: Addressing build errors, also backing out blktap2 changes

The blktap2.py changes in commit 68286d16 are not relevant to this issue,
it could be worked on later.

Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Acked-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #89 on xapi-project/sm
[CA-128364] & [CP-7396]: Fix tapdisk rrd plugin deregister call.

Signed-off-by: Siddharth Vinothkumar <siddharth.vinothkumar@citrix.com>
Reviewed-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>

GitHub: closes #88 on xapi-project/sm
[CA-129187] & [CA-116748]: remove xs path to ignore error if path does not exist

Also modified the way exception is raised, use Exception class
instead of string

Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #90 on xapi-project/sm
CA-114341: check return value of LVHD plugins

Initially the return value of the call to the plugin was checked (when
the plugin was called via the xe command), and when xe was replaced the
check was removed. It is unclear why this happened (no justification in
the commit messages), so it might be an omission.

Signed-off-by: Thanos Makatos <thanos.makatos@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>
CA-114341: GC: acquire VDI lock non-blocking

The GC needs to acquire the SR and VDI locks in the reverse order
VDI.activate/deactivate do, which leads to temporary deadlock that is
resolved when the VDI.activate/deactivate give up. This patch makes the
GC to simply try to acquire the VDI lock, if it fails to do so it skips
the VDI, and that leads to the GC releasing the SR lock.

Signed-off-by: Thanos Makatos <thanos.makatos@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>
Merge CA-114341

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

GitHub: closes #84 on xapi-project/sm
CA-122205: Continuation to the previous commits

Tests have uncovered additional failures, expanding error handler
to catch ENOENT againt OSError and EIO against CommandException

Signed-off-by: Vineeth Thampi Raveendran <vineeth.thampi@citrix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@citrix.com>

GitHub: closes #94 on xapi-project/sm
CA-117628: allow LVM metadata updates when running through plug-in

This patch uses the LVM configuration file that allows metadata updates when
running LVM commands on the master through the plug-in.

Signed-off-by: Thanos Makatos <thanos.makatos@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>
CA-117628: don't ignore result of VHD footer zeroing errors

Although this commit is not required for fixing the issue, it is still
important as we were previously ignoring the result of it and detected the
actual error much later on.

Signed-off-by: Thanos Makatos <thanos.makatos@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>
Merge CA-117628

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

GitHub: closes #93 on xapi-project/sm
CA-122205: More race conditions.

dmsetup table LV called from _checkActive could error out
if GC running in parallel has removed the LV.

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

GitHub: closes #95 on xapi-project/sm
Revert changes made for CA-122205

Roll back fixes that ignore journal unavailability exceptions.
Issue being fixed under CA-129800 by correcting the original changes
made for CP-5818. Commits being reverted are:

* 2171f7d: "CA-122205: More race conditions."
* 4e92794: "CA-122205: Continuation to the previous commits"
* 84dcbf4: "CA-122205: Addressing build errors, also backing out blktap2 changes"
* 68286d1: "CA-122205: Resolve race between VDI.activate and GC."

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

GitHub: closes #96 on xapi-project/sm
CA-129800: Use VDI id in journal names.

Use VDI id (origUuid) in journal file names instead of clone/leaf id.
This makes it possible to detect existence of journal files for a
certain VDI without needing to open and read the files for
additional information.

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

GitHub: closes #98 on xapi-project/sm