From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1THsYw-0000R3-84 for qemu-devel@nongnu.org; Sat, 29 Sep 2012 04:38:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1THsYK-0004Bf-Vw for qemu-devel@nongnu.org; Sat, 29 Sep 2012 04:38:14 -0400 Received: from plane.gmane.org ([80.91.229.3]:36354) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1THsYK-0004BU-PO for qemu-devel@nongnu.org; Sat, 29 Sep 2012 04:37:36 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1THsYL-0003th-56 for qemu-devel@nongnu.org; Sat, 29 Sep 2012 10:37:37 +0200 Received: from 93-34-169-1.ip50.fastwebnet.it ([93.34.169.1]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 29 Sep 2012 10:37:37 +0200 Received: from pbonzini by 93-34-169-1.ip50.fastwebnet.it with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 29 Sep 2012 10:37:37 +0200 From: Paolo Bonzini Date: Sat, 29 Sep 2012 10:37:17 +0200 Message-ID: References: <1348906418-16471-1-git-send-email-xiawenc@linux.vnet.ibm.com> <1348906418-16471-4-git-send-email-xiawenc@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit In-Reply-To: <1348906418-16471-4-git-send-email-xiawenc@linux.vnet.ibm.com> Subject: Re: [Qemu-devel] [PATCH V5 3/5] libqblock API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Il 29/09/2012 10:13, Wenchao Xia ha scritto: > +static void qb_setup_info_addr(QBlockStaticInfo *info, > + QBlockStaticInfoAddr *info_addr) > +{ > + uint64_t *virt_size = NULL; > + QBlockLocationInfo *backing_loc = NULL; > + bool *encrypt = NULL; > + QBlockFormatInfo *fmt = &(info->fmt); > + > + switch (fmt->fmt_type) { > + case QB_FMT_COW: > + virt_size = &(fmt->o_cow.virt_size); > + backing_loc = &(fmt->o_cow.backing_loc); > + break; > + case QB_FMT_QED: > + virt_size = &(fmt->o_qed.virt_size); > + backing_loc = &(fmt->o_qed.backing_loc); > + break; > + case QB_FMT_QCOW: > + virt_size = &(fmt->o_qcow.virt_size); > + backing_loc = &(fmt->o_qcow.backing_loc); > + encrypt = &(fmt->o_qcow.encrypt); > + break; > + case QB_FMT_QCOW2: > + virt_size = &(fmt->o_qcow2.virt_size); > + backing_loc = &(fmt->o_qcow2.backing_loc); > + encrypt = &(fmt->o_qcow2.encrypt); > + break; > + case QB_FMT_RAW: > + virt_size = &(fmt->o_raw.virt_size); > + break; > + case QB_FMT_RBD: > + virt_size = &(fmt->o_rbd.virt_size); > + break; > + case QB_FMT_SHEEPDOG: > + virt_size = &(fmt->o_sd.virt_size); > + backing_loc = &(fmt->o_sd.backing_loc); > + break; > + case QB_FMT_VDI: > + virt_size = &(fmt->o_vdi.virt_size); > + break; > + case QB_FMT_VMDK: > + virt_size = &(fmt->o_vmdk.virt_size); > + backing_loc = &(fmt->o_vmdk.backing_loc); > + break; > + case QB_FMT_VPC: > + virt_size = &(fmt->o_vpc.virt_size); > + break; > + default: > + break; > + } > + > + info_addr->virt_size = virt_size; > + info_addr->backing_loc = backing_loc; > + info_addr->encrypt = encrypt; > + return; > +} > + > +const uint64_t *qb_get_virt_size(const QBlockStaticInfo *info) > +{ > + return info->member_addr->virt_size; Please change this to: QBlockStaticInfoAddr addrs; qb_setup_info_addr(info, &addrs); return *addrs->virt_size; and similarly for the others. QBlockStaticInfoAddr should not be a public struct. I'm sorry if this wasn't clear. I'll review the rest on Monday. Paolo > +} > + > +const QBlockLocationInfo *qb_get_backing_loc(const QBlockStaticInfo *info) > +{ > + return info->member_addr->backing_loc; > +} > + > +const bool *qb_get_encrypt(const QBlockStaticInfo *info) > +{ > + return info->member_addr->encrypt; > +} > +