Merge branch 'CA-134784' into xs64bit

GitHub: closes #174 on xapi-project/sm
CA-135017: notify toolstack about tapdisk unpause errors in coalesce

Coalesce is an asynchronous operation so if a tapdisk refresh fails the
VM will lose the disk but the administrator will realise that when the
VM hangs. This patch notifies the toolstack as soon as the failure
occurs.

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

GitHub: closes #147 on xapi-project/sm
CP-5962: Revert the commit with the temporary fix for [CA-95530]

There is a problem when raw LUNs containing LVM partitions
created by the guest with a much more recent version of LVM
than the one on Dom0 are scanned by XenServer.
When this problem happens, LVM tools get stuck scanning
consuming 100% of the CPU.

This bug has not been observed any more, so removing the temporary
hack introduced in sm.hg(c099f4902946) in clearwater.

Regardless of the bug, this workaround cannot be in place if
the rawhba SR (aka Borehamwood) is installed by default.

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
CP-5962: Borehamwood code into main ISO and not into Supp pack

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

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

GitHub: closes #187 xapi-project/sm
CP-8633: Remove support for MPP RDAC LUNs

This change makes sure that no calls to MPP RDAC drivers (which are not
supported anymore) are made through the storage layer. A check for RDAC LUN
always returns false but not before logging a warning if the RDAC LUN path
is found to be populated.

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

GitHub: closes #179 xapi-project/sm
CP-5962: after rawhba installation the SR is not enabled by default

Even though it is packaged in the main ISO and installed
by default, this patch will prevent the SR type to
be usable unless the proper script is run

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

GitHub: closes #192 xapi-project/sm
CA-139484: introduce TapdiskFailed exception type

Signed-off-by: Thanos Makatos <thanos.makatos@citrix.com>
Reviewed-by: Siddharth Vinothkumar <siddharth.vinothkumar@citrix.com>

GitHub: closes #193 on xapi-project/sm
CA-139739: encode NFS shares

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

GitHub: closes #194 on xapi-project/sm
CA-119888: Fix logical volume deletion error.

Signed-off-by: Siddharth Vinothkumar <siddharth.vinothkumar@citrix.com>
Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>

GitHub: closes #191 on xapi-project/sm
UnitTest: log to stdout

By printing the log messages to stdout, they will be captured by nose,
thus not disturbing the user. Should a test fail, the messages will
still be displayed.

Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
Acked-by: Germano Percossi <germano.percossi@citrix.com>
UnitTest: Enable custom context

Should the user want to use a custom context implementation, he can use
the with_custom_context decorator to do that. It enables users to
inherit from TestContext, extend its functionality, and use the extended
version in a test. This could be useful if someone wanted to use a
custom implementation for `open`.

Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
Acked-by: Germano Percossi <germano.percossi@citrix.com>
CA-140596: [UnitTest] Test to reproduce gc error

This test will reproduce the issue that was seen in the referenced
ticket. Whenever a new Lock instance is created, and the file() call
fails, the instance's lockfile attribute remained uninitialised. As the
instance has a custom destructor, that will be called by the garbage
collector. That function assumes that the instance has a lockfile
attribute, and thus prints a message.

Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
Acked-by: Germano Percossi <germano.percossi@citrix.com>
CA-140596: Fix lockfile attribute in Lock

As Lock's destructor was assuming that lockfile attribute exists, it
printed out an AttributeError on stdout while the GC was cleaning it up.
This fix initialises the lockfile field in the constructor.

Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>
CA-140596: Add seam for file call

Extract the file call to a separate method, so that the extracted method
could be used in tests as a seam, emulating situations like: what would
happen if the file call failed.

Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>
CA-140596: [UnitTest] Test file not found in Lock

These are test cases covering the lock module, and also testing what
happens if file() raises an IOError. This can happen as a race
condition, if two locks - A and B are created in the same namespace and
by the time A gets to open the lockfile, B already cleaned up the
namespace.

Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
Acked-by: Germano Percossi <germano.percossi@citrix.com>
CA-140596: Fix file creation error

If creating the lockfile failed with IOError having ENOENT error code,
that means that another lock within the same namespace already cleaned
up the namespace. With this change, should IOError happen with ENOENT,
the lock will re-create the namespace, and the file 10 times, and only
bubble up the exception if it failed all those retries.

Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
Reviewed-by: Germano Percossi <germano.percossi@citrix.com>
Merge fixes for CA-140596 (plus unit test improvements) into xs64bit

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

GitHub: closes #197 on xapi-project/sm
UnitTest: tests for NFSSR.py, ISOSR.py and nfs.py

Test mount calls.

Signed-off-by: Robert Breker <robert.breker@citrix.com>
Signed-off-by: Mate Lakat <mate.lakat@citrix.com>
CA-135612: Add experimental support for NFSv4

This enables the specification of the NFS version (3,4) in the
device-config of ISOSRs(type=nfs) and NFSSRs.

For example:

    device-config:nfsversion=4

Signed-off-by: Robert Breker <robert.breker@citrix.com>
Signed-off-by: Mate Lakat <mate.lakat@citrix.com>