提交 feba8ae2 编写于 作者: M MORITA Kazutaka 提交者: Michael Roth

sheepdog: fix return value of do_load_save_vm_state

bdrv_save_vmstate and bdrv_load_vmstate should return the vmstate size
on success, and -errno on error.
Signed-off-by: NMORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
(cherry picked from commit 6f3c714e)
Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
上级 c9c24792
...@@ -1957,7 +1957,7 @@ static int do_load_save_vmstate(BDRVSheepdogState *s, uint8_t *data, ...@@ -1957,7 +1957,7 @@ static int do_load_save_vmstate(BDRVSheepdogState *s, uint8_t *data,
int64_t pos, int size, int load) int64_t pos, int size, int load)
{ {
int fd, create; int fd, create;
int ret = 0; int ret = 0, remaining = size;
unsigned int data_len; unsigned int data_len;
uint64_t vmstate_oid; uint64_t vmstate_oid;
uint32_t vdi_index; uint32_t vdi_index;
...@@ -1968,11 +1968,11 @@ static int do_load_save_vmstate(BDRVSheepdogState *s, uint8_t *data, ...@@ -1968,11 +1968,11 @@ static int do_load_save_vmstate(BDRVSheepdogState *s, uint8_t *data,
return fd; return fd;
} }
while (size) { while (remaining) {
vdi_index = pos / SD_DATA_OBJ_SIZE; vdi_index = pos / SD_DATA_OBJ_SIZE;
offset = pos % SD_DATA_OBJ_SIZE; offset = pos % SD_DATA_OBJ_SIZE;
data_len = MIN(size, SD_DATA_OBJ_SIZE); data_len = MIN(remaining, SD_DATA_OBJ_SIZE);
vmstate_oid = vid_to_vmstate_oid(s->inode.vdi_id, vdi_index); vmstate_oid = vid_to_vmstate_oid(s->inode.vdi_id, vdi_index);
...@@ -1993,9 +1993,9 @@ static int do_load_save_vmstate(BDRVSheepdogState *s, uint8_t *data, ...@@ -1993,9 +1993,9 @@ static int do_load_save_vmstate(BDRVSheepdogState *s, uint8_t *data,
} }
pos += data_len; pos += data_len;
size -= data_len; remaining -= data_len;
ret += data_len;
} }
ret = size;
cleanup: cleanup:
closesocket(fd); closesocket(fd);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册