On Wed, Dec 2, 2015 at 1:12 AM, Vasiliy Tolstov <v.tols...@selfip.ru> wrote:
> Signed-off-by: Vasiliy Tolstov <v.tols...@selfip.ru> > --- > block/sheepdog.c | 59 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 57 insertions(+), 2 deletions(-) > Seems that your patch violates the coding style of qemu. You can check the style with scripts/checkpatch.pl. > > diff --git a/block/sheepdog.c b/block/sheepdog.c > index d80e4ed..c3fae50 100644 > --- a/block/sheepdog.c > +++ b/block/sheepdog.c > @@ -2484,8 +2484,63 @@ static int sd_snapshot_delete(BlockDriverState *bs, > const char *name, > Error **errp) > { > - /* FIXME: Delete specified snapshot id. */ > - return 0; > + uint32_t snap_id = 0; > + uint32_t vdi = 0; > + char snap_tag[SD_MAX_VDI_TAG_LEN]; > + Error *local_err = NULL; > + int fd, ret; > + char buf[SD_MAX_VDI_LEN + SD_MAX_VDI_TAG_LEN]; > + BDRVSheepdogState *s = bs->opaque; > + unsigned int wlen = SD_MAX_VDI_LEN + SD_MAX_VDI_TAG_LEN, rlen = 0; > + > + memset(buf, 0, sizeof(buf)); > + memset(snap_tag, 0, sizeof(snap_tag)); > + pstrcpy(buf, SD_MAX_VDI_LEN, s->name); > + snap_id = strtoul(snapshot_id, NULL, 10); > + if (!snap_id) { > + pstrcpy(snap_tag, sizeof(snap_tag), snapshot_id); > + pstrcpy(buf + SD_MAX_VDI_LEN, SD_MAX_VDI_TAG_LEN, > snap_tag); > + } > + > + ret = find_vdi_name(s, s->name, snap_id, snap_tag, &vdi, true, > &local_err); > + if (ret) { > + return ret; > + } > + > + SheepdogVdiReq hdr = { > + .opcode = SD_OP_DEL_VDI, > + .data_length = wlen, > + .flags = SD_FLAG_CMD_WRITE, > + .snapid = snap_id, > + }; > + SheepdogVdiRsp *rsp = (SheepdogVdiRsp *)&hdr; > + > + fd = connect_to_sdog(s, &local_err); > + if (fd < 0) { > + error_report_err(local_err); > + return -1; > + } > + > + ret = do_req(fd, s->aio_context, (SheepdogReq *)&hdr, > + buf, &wlen, &rlen); > + closesocket(fd); > + if (ret) { > + return ret; > + } > + > + switch (rsp->result) { > + case SD_RES_NO_VDI: > + error_report("%s was already deleted", s->name); > + case SD_RES_SUCCESS: > + break; > + default: > + error_report("%s, %s", sd_strerror(rsp->result), s->name); > + return -1; > + } > + > +// ret = reload_inode(s, snap_id, snap_tag); > Comment outed code isn't good. You should remove it (in addition, it wouldn't be required). Thanks, Hitoshi > + > + return ret; > } > > static int sd_snapshot_list(BlockDriverState *bs, QEMUSnapshotInfo > **psn_tab) > -- > 2.5.0 > >