ceph/rbd: has a pretty strange error handling - install custom run_command function

Always use a custom error sub to get the real errors out of rbd command instead of the typical:

 2014-02-06 11:20:20.187190 7f3b6c37c760 -1 librbd: removing snapshot from header failed: (16) Device or resource busy

before:
rbd: snapshot 'abc' is protected from removal.
TASK ERROR: rbd snapshot vm-173-disk-1' error: 2014-02-06 11:06:02.438336 7f6f4ac92760 -1 librbd: removing snapshot from header failed: (16) Device or resource busy

now:
TASK ERROR: rbd: snapshot 'abc' is protected from removal.

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
coding style cleanup
fix ' escaping of $snap parameter

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
Storage Plugins: extend clone_image by snap parameter and add support to RBDPlugin

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
cleanups
pass snapname to vdisk_clone and plugin clone_image

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
rbd: unprotect snapshots before deletion

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
RBD: enable clone of snaps

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
bump version to 3.0-21
glusterfs: new option server2 to specify backup volfile server
bump version to 3.0-22
allow iso upload for glusterfs
bump version to 3.0-23
This patch refactors ZFS's LUN management code, removing the existing
LunCmds implementations, in favor of a single lun management infraestructure
which just invokes a 'management helper' (which can be either an script or a
native binary) which is invoked for lun creation/deletion/etc.

The 'protocol' which proxmox uses to communicate with the helper is simply
based on exposing a set of environment variables along with a few command
line arguments which are passed to helper script. This is based on the
same concept around CGI, AGI, and other similar decoupled invocation protocols.

Also, the helper can be invoked either locally or remotelly thru ssh (just
the same way it goes for invoking zfs itself), and some 'commands' expect
some kind of output as response (as it happends with Comstar's code). And
of course, helper's exit code is honored, so a non-zero exit code is
considered an error.

The actual commands supported by the 'helper protocol' are:

* create-lu
  - Arguments: full_zvol_device_path
  - Description: This command should handle creation of a LUN entry for the
                 given ZVOL device, and it is expected to return the LUN's
                 unique-id as output.

* resize-lu
  - Arguments: size uuid_of_lu
  - Description: This command should handle resizing of an specified LU's
		 attached ZVOL device.

* delete-lu
  - Arguments: uuid_of_lu
  - Description: This command should delete the specified LUN entry.

* share-lu
  - Arguments: full_zvol_device_path
  - Description: This command should (if not already done by 'create-lun')
                 expose/publish the LUN attached to the specified ZVOL.
                 Or do nothing if creation and sharing of LUN are both
                 tasks executed by 'create-lun'.

* get-lun-id
  - Arguments: uuid_of_lu
  - Description: This command should return the LUN number of the given
                 LUN unique-id as output.

* get-lun-no
  - Arguments: uuid_of_lu
  - Description: This command should return the given ZVOL/LUN's number.

This actual commands are modelled after the ones invoked by Comstar's LunCmd
perl module, which even if it maybe a bit too coupled to Comstar's/Solaris'
way of doing things. It seems to be flexible enough as to be usefull for other
implementations (as there are already one for Iet and one for BSD's Istgt).
Remove now deprecated LunCmd drivers.
Do not expose every value from storage.cfg as PMXCFG_*, and instead
expose those few 'usefull' values like portal, target, pool, etc.
Everything else should be handled by helper's own configuration
mechanism.
Added existing LunCmd code rewritten as independent scripts
Implemented --remote option to zfs helper scripts, allowing local vs remote execution.
Added missing 'import-lu' command to refactored ZFSPlugin.
Added nw tag to PKGREL