[Sheepdog] Sheep, with no local storage?
Floris Bos
bos at je-eigen-domein.nl
Sun Oct 3 23:12:46 CEST 2010
Hi,
On Sunday, October 03, 2010 10:14:29 pm Robert Terhaar wrote:
> I emailed with Kazutaka off-list about this- duplicating here.
>
>
> Is it required to run a local sheep storage in order to use the sheepdog
> qemu block driver? It seems that 'localhost:7000' is hard-coded into the
> top of sheepdog.c in the qemu source.
It seems hostname/port is extracted in parse_vdiname() and put in "s->addr"
and "s->port":
http://git.savannah.gnu.org/cgit/qemu.git/tree/block/sheepdog.c#n937
Most functions use that when connecting, like this:
==
fd = connect_to_sdog(s->addr, s->port);
==
So opening an EXISTING VDI located on an external sheepdog server should work,
by specifying the [hostname]:[port] in the VDI name, like Kazutaka said.
However I think that CREATING new VDIs on an external sheepdog server is not
implemented/broken.
do_sd_create() does not use s->addr, but a function parameter.
http://git.savannah.gnu.org/cgit/qemu.git/tree/block/sheepdog.c#n1244
==
static int do_sd_create(char *filename, int64_t vdi_size,
uint32_t base_vid, uint32_t *vdi_id, int snapshot,
const char *addr, const char *port)
{
SheepdogVdiReq hdr;
SheepdogVdiRsp *rsp = (SheepdogVdiRsp *)&hdr;
int fd, ret;
unsigned int wlen, rlen = 0;
char buf[SD_MAX_VDI_LEN];
fd = connect_to_sdog(addr, port);
==
And do_sd_create() is called with the "addr" parameter hardcoded to null in
sd_create(), making it always use the default of localhost:7000 when creating
new VDIs:
http://git.savannah.gnu.org/cgit/qemu.git/tree/block/sheepdog.c#n937
==
return do_sd_create((char *)filename, vdi_size, vid, NULL, 0, NULL, NULL);
==
Yours sincerely,
Floris Bos
More information about the sheepdog
mailing list