[sheepdog] [Qemu-devel] [PATCH 3/3] sheepdog: resend write requests when SD_RES_READONLY is received
Stefan Hajnoczi
stefanha at gmail.com
Thu Apr 25 15:56:13 CEST 2013
On Thu, Apr 25, 2013 at 07:37:43PM +0900, MORITA Kazutaka wrote:
> +/* update inode with the latest state */
> +static int coroutine_fn reload_vdi_object(BDRVSheepdogState *s)
> +{
> + SheepdogInode *inode;
> + int ret = 0, fd;
> + uint32_t vid;
> +
> + inode = (SheepdogInode *)g_malloc(sizeof(s->inode));
> +
> + fd = connect_to_sdog(s);
> + if (fd < 0) {
> + ret = -EIO;
> + goto out;
> + }
> +
> + ret = find_vdi_name(s, s->name, 0, "", &vid, false);
> + if (ret) {
> + goto out;
> + }
> +
> + ret = read_object(fd, (char *)inode, vid_to_vdi_oid(vid),
> + s->inode.nr_copies, sizeof(*inode), 0, s->cache_flags);
> + if (ret < 0) {
> + goto out;
> + }
> +
> + if (inode->vdi_id != s->inode.vdi_id) {
> + memcpy(&s->inode, inode, sizeof(s->inode));
> + }
> +
> +out:
> + free(inode);
g_malloc() must be paired with g_free().
> + /* link to the pendng list if there is another CoW request to
s/pendng/pending/
More information about the sheepdog
mailing list