From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44390) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTTLs-0006KW-Mu for qemu-devel@nongnu.org; Mon, 15 Sep 2014 06:17:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XTTLj-0006fl-MN for qemu-devel@nongnu.org; Mon, 15 Sep 2014 06:17:44 -0400 Received: from mail-lb0-x22a.google.com ([2a00:1450:4010:c04::22a]:45113) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTTLj-0006fg-FB for qemu-devel@nongnu.org; Mon, 15 Sep 2014 06:17:35 -0400 Received: by mail-lb0-f170.google.com with SMTP id c11so4241797lbj.29 for ; Mon, 15 Sep 2014 03:17:34 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <5416BCB0.30502@redhat.com> Date: Mon, 15 Sep 2014 12:17:20 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1410758605-29375-1-git-send-email-famz@redhat.com> <1410758605-29375-3-git-send-email-famz@redhat.com> In-Reply-To: <1410758605-29375-3-git-send-email-famz@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 2/2] virtio-scsi: Optimize virtio_scsi_init_req List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng , qemu-devel@nongnu.org Il 15/09/2014 07:23, Fam Zheng ha scritto: > SCSIRequest *sreq; > size_t resp_size; > enum SCSIXferMode mode; > - QEMUIOVector resp_iov; > union { > VirtIOSCSICmdResp cmd; > VirtIOSCSICtrlTMFResp tmf; > @@ -68,23 +75,27 @@ static inline SCSIDevice *virtio_scsi_device_find(VirtIOSCSI *s, uint8_t *lun) > static VirtIOSCSIReq *virtio_scsi_init_req(VirtIOSCSI *s, VirtQueue *vq) > { > VirtIOSCSIReq *req; > - VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s); > - > - req = g_malloc0(sizeof(*req) + vs->cdb_size); > + VirtIOSCSICommon *vs = (VirtIOSCSICommon *)s; > + const size_t zero_skip = offsetof(VirtIOSCSIReq, elem) > + + sizeof(VirtQueueElement); > > + req = g_slice_alloc(sizeof(*req) + vs->cdb_size); Looks good, but why do you need to zero the union? You only need to zero sreq, resp_size and mode, don't you (and at this point, memset becomes superfluous)? Paolo