qemu/block
Bharata B Rao 8d6d89cb63 block: Support GlusterFS as a QEMU block backend.
This patch adds gluster as the new block backend in QEMU. This gives
QEMU the ability to boot VM images from gluster volumes. Its already
possible to boot from VM images on gluster volumes using FUSE mount, but
this patchset provides the ability to boot VM images from gluster volumes
by by-passing the FUSE layer in gluster. This is made possible by
using libgfapi routines to perform IO on gluster volumes directly.

VM Image on gluster volume is specified like this:

file=gluster[+transport]://[server[:port]]/volname/image[?socket=...]

'gluster' is the protocol.

'transport' specifies the transport type used to connect to gluster
management daemon (glusterd). Valid transport types are
tcp, unix and rdma. If a transport type isn't specified, then tcp
type is assumed.

'server' specifies the server where the volume file specification for
the given volume resides. This can be either hostname, ipv4 address
or ipv6 address. ipv6 address needs to be within square brackets [ ].
If transport type is 'unix', then 'server' field should not be specifed.
The 'socket' field needs to be populated with the path to unix domain
socket.

'port' is the port number on which glusterd is listening. This is optional
and if not specified, QEMU will send 0 which will make gluster to use the
default port. If the transport type is unix, then 'port' should not be
specified.

'volname' is the name of the gluster volume which contains the VM image.

'image' is the path to the actual VM image that resides on gluster volume.

Examples:

file=gluster://1.2.3.4/testvol/a.img
file=gluster+tcp://1.2.3.4/testvol/a.img
file=gluster+tcp://1.2.3.4:24007/testvol/dir/a.img
file=gluster+tcp://[1:2:3:4:5:6:7:8]/testvol/dir/a.img
file=gluster+tcp://[1:2:3:4:5:6:7:8]:24007/testvol/dir/a.img
file=gluster+tcp://server.domain.com:24007/testvol/dir/a.img
file=gluster+unix:///testvol/dir/a.img?socket=/tmp/glusterd.socket
file=gluster+rdma://1.2.3.4:24007/testvol/a.img

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2012-09-28 17:58:12 +02:00
..
blkdebug.c blkdebug: optionally tie errors to a specific sector 2012-07-09 15:53:02 +02:00
blkverify.c block: replace unchecked strdup/malloc/calloc with glib 2012-01-26 11:39:03 +01:00
bochs.c block: take lock around bdrv_read implementations 2011-10-21 17:34:14 +02:00
cloop.c block/cloop: Use g_free instead of free 2011-11-04 14:24:12 +01:00
cow.c block: Fix spelling in comment (ineffcient -> inefficient) 2012-04-19 15:48:52 +02:00
curl.c block/curl: Fix wrong free statement 2012-09-12 15:50:09 +02:00
dmg.c block: take lock around bdrv_read implementations 2011-10-21 17:34:14 +02:00
gluster.c block: Support GlusterFS as a QEMU block backend. 2012-09-28 17:58:12 +02:00
iscsi.c Merge remote-tracking branch 'kwolf/for-anthony' into staging 2012-09-25 16:06:16 -05:00
Makefile.objs block: Support GlusterFS as a QEMU block backend. 2012-09-28 17:58:12 +02:00
nbd.c cleanup qemu_co_sendv(), qemu_co_recvv() and friends 2012-06-11 23:12:11 +04:00
parallels.c block: take lock around bdrv_read implementations 2011-10-21 17:34:14 +02:00
qcow2-cache.c qcow2: always operate caches in writeback mode 2012-06-15 14:03:43 +02:00
qcow2-cluster.c qcow2: implement lazy refcounts 2012-08-06 22:39:14 +02:00
qcow2-refcount.c qcow2: preserve free_byte_offset when qcow2_alloc_bytes() fails 2012-07-09 15:53:01 +02:00
qcow2-snapshot.c qcow2: fix #ifdef'd qcow2_check_refcounts() callers 2012-07-09 15:53:01 +02:00
qcow2.c block: qcow2 image file reopen 2012-09-24 15:15:12 +02:00
qcow2.h qcow2: implement lazy refcounts 2012-08-06 22:39:14 +02:00
qcow.c block: qcow image file reopen 2012-09-24 15:15:12 +02:00
qed-check.c qed: mark image clean after repair succeeds 2012-08-10 10:25:12 +02:00
qed-cluster.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-gencb.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
qed-l2-cache.c qed: do not evict in-use L2 table cache entries 2012-03-12 15:14:06 +01:00
qed-table.c block: bdrv_aio_* do not return NULL 2011-12-15 12:40:07 +01:00
qed.c block: qed image file reopen 2012-09-24 15:15:12 +02:00
qed.h qed: mark image clean after repair succeeds 2012-08-10 10:25:12 +02:00
raw-posix-aio.h prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
raw-posix.c block: raw-posix image file reopen 2012-09-24 15:15:12 +02:00
raw-win32.c block: do not parse BDRV_O_CACHE_WB in block drivers 2012-09-24 15:15:11 +02:00
raw.c block: raw image file reopen 2012-09-24 15:15:12 +02:00
rbd.c block: do not parse BDRV_O_CACHE_WB in block drivers 2012-09-24 15:15:11 +02:00
sheepdog.c block: do not parse BDRV_O_CACHE_WB in block drivers 2012-09-24 15:15:11 +02:00
stream.c stream: complete early if end of backing file is reached 2012-08-29 15:23:35 +02:00
vdi.c block: vdi image file reopen 2012-09-24 15:15:12 +02:00
vmdk.c block: vmdk image file reopen 2012-09-24 15:15:12 +02:00
vpc.c block: vpc image file reopen 2012-09-24 15:15:12 +02:00
vvfat.c block: Convert close calls to qemu_close 2012-08-15 10:48:57 +02:00