rbd: Stub out new exclusive image feature

When an image is flagged with the exclusive feature, only a
single client can modify the image.  This is groundwork for
an RBD object map optimization and for RBD mirroring.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
encoding: wrap ENCODE_START/FINISH arguments

Wrapped the bufferlist argument with parentheses to prevent
compile errors when attempting to pass a dereferenced bufferlist
pointer to the ENCODE_START/FINISH macros.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
rbd: Create image exclusive lock watch/notify handler

The new watch/notify handler replaces the existing header
update watch/notify handler and add support for managing
image exclusive lock leadership.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
rbd: Integrate librbd with new exclusive lock feature

Operations that update the image now require the exclusive lock
if the feature is enabled.  AIO write and discard operations will
automatically request the exclusive lock from the current leader
to support live-migration.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
rbd: Allow CLI to optionally create shared images

Images that are flagged as shared cannot use the RBD
object map nor RBD mirroring features.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
librados: Fix tracepoint compile error

Signed-off-by: Jason Dillaman <dillaman@redhat.com>