From nobody Mon Feb 9 09:53:06 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1632720750252851.6194047265811; Sun, 26 Sep 2021 22:32:30 -0700 (PDT) Received: from localhost ([::1]:53138 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mUjFc-0006Cx-E6 for importer@patchew.org; Mon, 27 Sep 2021 01:32:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34158) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mUj2F-00038r-FV; Mon, 27 Sep 2021 01:18:39 -0400 Received: from wnew3-smtp.messagingengine.com ([64.147.123.17]:50781) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mUj2B-0000Az-Ve; Mon, 27 Sep 2021 01:18:39 -0400 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailnew.west.internal (Postfix) with ESMTP id 714AC2B0120B; Mon, 27 Sep 2021 01:18:33 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Mon, 27 Sep 2021 01:18:34 -0400 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 27 Sep 2021 01:18:30 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm1; bh=TY2HX/At9ES/Y Rcp44HLh/CPfHci73ZM/lQlQhq7/Fo=; b=g2f0VmxSGhI9w5yofmtMelsZ4ctxz hP5qhTVbEVwFrC9m6DVmsETZOTTpwYP5ueQuYkYXn3dD5bKj8A5VgqJ+ZhvkNUFE Y9hcgzizAJnxNIfGqICpvHe9ymvA1wsV+nq8l6CxrVCV853VBbyxRPcx/wdbJ0hw sfHa6eazmxSad7TltrcwXvjZBhTDLyu7p3c/oAy3/kf7CqSCJuO1irKvnMr5KXHj 3EJEnEVQxTvyFzOjeZtTEqbk3A0ZNJuKExMHkKyEcwC1BPqXxaDeOEr0RakrRRZP hB0mVm7sWQBzQamriFyfGOvI6m13jPA4U4Lh0ZmAfHlW8Chp3R4UZYk1g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=TY2HX/At9ES/YRcp44HLh/CPfHci73ZM/lQlQhq7/Fo=; b=Z+1/TF3k N/A8B1w/DTsbPdzUWsPdpxhSrKj4ElYQ5/aYDUqiR1MWhAO2BqBlfRw5/G+m+M+k Ato6WROr3eG+/eDS1Aw1nqoLKrhDBmBty6teROqlD91WZuUIX8lRDLinlq8TUlrn /+HkF1O+fLZctSH+H8FSDN+43ooZZdobtkNKoogDL4CvmUyN2nmyfbASBASNXP9D OpZHNeSjPY5wXvO9o/uGqXxUD3FpPkvhCGZiqdDhyENJEEDTGxdlub/Rky/hq7u5 ITIbkdNP5ubyT9PEyMAVsCgnFvPK9hKPfc3kJLMb64d7k5RIco4QsPz/AvuZ8Y1C 88p+XUigDPQ3sQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrudejjedgledvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefmlhgruhhs ucflvghnshgvnhcuoehithhssehirhhrvghlvghvrghnthdrughkqeenucggtffrrghtth gvrhhnpeeuleetgeeiuefhgfekfefgveejiefgteekiedtgfdtieefhfdthfefueffvefg keenucevlhhushhtvghrufhiiigvpedunecurfgrrhgrmhepmhgrihhlfhhrohhmpehith hssehirhhrvghlvghvrghnthdrughk X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH RFC v2 07/16] hw/nvme: move BlockBackend to NvmeNamespaceNvm Date: Mon, 27 Sep 2021 07:17:50 +0200 Message-Id: <20210927051759.447305-8-its@irrelevant.dk> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210927051759.447305-1-its@irrelevant.dk> References: <20210927051759.447305-1-its@irrelevant.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=64.147.123.17; envelope-from=its@irrelevant.dk; helo=wnew3-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Markus Armbruster , Klaus Jensen , Hanna Reitz , Hannes Reinecke , Stefan Hajnoczi , Klaus Jensen , Keith Busch , Paolo Bonzini , Eric Blake Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1632720751550100001 Content-Type: text/plain; charset="utf-8" From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/nvme/ctrl.c | 66 +++++++++++++++++++++++++------------------------- hw/nvme/dif.c | 14 +++++------ hw/nvme/nvme.h | 6 +++++ 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 026dfaa71bda..3e561a13f76f 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1465,7 +1465,7 @@ static int nvme_block_status_all(NvmeNamespace *ns, u= int64_t slba, uint32_t nlb, int flags) { NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); - BlockDriverState *bs =3D blk_bs(ns->blkconf.blk); + BlockDriverState *bs =3D blk_bs(nvme_blk(ns)); =20 int64_t pnum =3D 0, bytes =3D nvme_l2b(nvm, nlb); int64_t offset =3D nvme_l2b(nvm, slba); @@ -1865,7 +1865,7 @@ void nvme_rw_complete_cb(void *opaque, int ret) { NvmeRequest *req =3D opaque; NvmeNamespace *ns =3D req->ns; - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); BlockAcctCookie *acct =3D &req->acct; BlockAcctStats *stats =3D blk_get_stats(blk); =20 @@ -1891,7 +1891,7 @@ static void nvme_rw_cb(void *opaque, int ret) NvmeNamespace *ns =3D req->ns; NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); =20 - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); =20 trace_pci_nvme_rw_cb(nvme_cid(req), blk_name(blk)); =20 @@ -1942,7 +1942,7 @@ static void nvme_verify_cb(void *opaque, int ret) NvmeRequest *req =3D ctx->req; NvmeNamespace *ns =3D req->ns; NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); BlockAcctCookie *acct =3D &req->acct; BlockAcctStats *stats =3D blk_get_stats(blk); NvmeRwCmd *rw =3D (NvmeRwCmd *)&req->cmd; @@ -2000,7 +2000,7 @@ static void nvme_verify_mdata_in_cb(void *opaque, int= ret) uint32_t nlb =3D le16_to_cpu(rw->nlb) + 1; size_t mlen =3D nvme_m2b(nvm, nlb); uint64_t offset =3D nvme_moff(nvm, slba); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); =20 trace_pci_nvme_verify_mdata_in_cb(nvme_cid(req), blk_name(blk)); =20 @@ -2046,7 +2046,7 @@ static void nvme_compare_mdata_cb(void *opaque, int r= et) uint32_t reftag =3D le32_to_cpu(rw->reftag); struct nvme_compare_ctx *ctx =3D req->opaque; g_autofree uint8_t *buf =3D NULL; - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); BlockAcctCookie *acct =3D &req->acct; BlockAcctStats *stats =3D blk_get_stats(blk); uint16_t status =3D NVME_SUCCESS; @@ -2126,7 +2126,7 @@ static void nvme_compare_data_cb(void *opaque, int re= t) NvmeCtrl *n =3D nvme_ctrl(req); NvmeNamespace *ns =3D req->ns; NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); BlockAcctCookie *acct =3D &req->acct; BlockAcctStats *stats =3D blk_get_stats(blk); =20 @@ -2272,7 +2272,7 @@ static void nvme_dsm_md_cb(void *opaque, int ret) nvme_dsm_cb(iocb, 0); } =20 - iocb->aiocb =3D blk_aio_pwrite_zeroes(ns->blkconf.blk, nvme_moff(nvm, = slba), + iocb->aiocb =3D blk_aio_pwrite_zeroes(nvme_blk(ns), nvme_moff(nvm, slb= a), nvme_m2b(nvm, nlb), BDRV_REQ_MAY_U= NMAP, nvme_dsm_cb, iocb); return; @@ -2320,7 +2320,7 @@ next: goto next; } =20 - iocb->aiocb =3D blk_aio_pdiscard(ns->blkconf.blk, nvme_l2b(nvm, slba), + iocb->aiocb =3D blk_aio_pdiscard(nvme_blk(ns), nvme_l2b(nvm, slba), nvme_l2b(nvm, nlb), nvme_dsm_md_cb, iocb); return; @@ -2341,7 +2341,7 @@ static uint16_t nvme_dsm(NvmeCtrl *n, NvmeRequest *re= q) trace_pci_nvme_dsm(nr, attr); =20 if (attr & NVME_DSMGMT_AD) { - NvmeDSMAIOCB *iocb =3D blk_aio_get(&nvme_dsm_aiocb_info, ns->blkco= nf.blk, + NvmeDSMAIOCB *iocb =3D blk_aio_get(&nvme_dsm_aiocb_info, nvme_blk(= ns), nvme_misc_cb, req); =20 iocb->req =3D req; @@ -2371,7 +2371,7 @@ static uint16_t nvme_verify(NvmeCtrl *n, NvmeRequest = *req) NvmeRwCmd *rw =3D (NvmeRwCmd *)&req->cmd; NvmeNamespace *ns =3D req->ns; NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); uint64_t slba =3D le64_to_cpu(rw->slba); uint32_t nlb =3D le16_to_cpu(rw->nlb) + 1; size_t len =3D nvme_l2b(nvm, nlb); @@ -2421,7 +2421,7 @@ static uint16_t nvme_verify(NvmeCtrl *n, NvmeRequest = *req) block_acct_start(blk_get_stats(blk), &req->acct, ctx->data.iov.size, BLOCK_ACCT_READ); =20 - req->aiocb =3D blk_aio_preadv(ns->blkconf.blk, offset, &ctx->data.iov,= 0, + req->aiocb =3D blk_aio_preadv(nvme_blk(ns), offset, &ctx->data.iov, 0, nvme_verify_mdata_in_cb, ctx); return NVME_NO_COMPLETE; } @@ -2472,7 +2472,7 @@ static void nvme_copy_bh(void *opaque) NvmeCopyAIOCB *iocb =3D opaque; NvmeRequest *req =3D iocb->req; NvmeNamespace *ns =3D req->ns; - BlockAcctStats *stats =3D blk_get_stats(ns->blkconf.blk); + BlockAcctStats *stats =3D blk_get_stats(nvme_blk(ns)); =20 if (iocb->idx !=3D iocb->nr) { req->cqe.result =3D cpu_to_le32(iocb->idx); @@ -2555,7 +2555,7 @@ static void nvme_copy_out_cb(void *opaque, int ret) qemu_iovec_reset(&iocb->iov); qemu_iovec_add(&iocb->iov, mbounce, mlen); =20 - iocb->aiocb =3D blk_aio_pwritev(ns->blkconf.blk, nvme_moff(nvm, iocb->= slba), + iocb->aiocb =3D blk_aio_pwritev(nvme_blk(ns), nvme_moff(nvm, iocb->slb= a), &iocb->iov, 0, nvme_copy_out_completed_c= b, iocb); =20 @@ -2647,7 +2647,7 @@ static void nvme_copy_in_completed_cb(void *opaque, i= nt ret) qemu_iovec_reset(&iocb->iov); qemu_iovec_add(&iocb->iov, iocb->bounce, len); =20 - iocb->aiocb =3D blk_aio_pwritev(ns->blkconf.blk, nvme_l2b(nvm, iocb->s= lba), + iocb->aiocb =3D blk_aio_pwritev(nvme_blk(ns), nvme_l2b(nvm, iocb->slba= ), &iocb->iov, 0, nvme_copy_out_cb, iocb); =20 return; @@ -2695,7 +2695,7 @@ static void nvme_copy_in_cb(void *opaque, int ret) qemu_iovec_add(&iocb->iov, iocb->bounce + nvme_l2b(nvm, nlb), nvme_m2b(nvm, nlb)); =20 - iocb->aiocb =3D blk_aio_preadv(ns->blkconf.blk, nvme_moff(nvm, slba), + iocb->aiocb =3D blk_aio_preadv(nvme_blk(ns), nvme_moff(nvm, slba), &iocb->iov, 0, nvme_copy_in_completed_cb, iocb); return; @@ -2761,7 +2761,7 @@ static void nvme_copy_cb(void *opaque, int ret) qemu_iovec_reset(&iocb->iov); qemu_iovec_add(&iocb->iov, iocb->bounce, len); =20 - iocb->aiocb =3D blk_aio_preadv(ns->blkconf.blk, nvme_l2b(nvm, slba), + iocb->aiocb =3D blk_aio_preadv(nvme_blk(ns), nvme_l2b(nvm, slba), &iocb->iov, 0, nvme_copy_in_cb, iocb); return; =20 @@ -2780,7 +2780,7 @@ static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *r= eq) NvmeNamespace *ns =3D req->ns; NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); NvmeCopyCmd *copy =3D (NvmeCopyCmd *)&req->cmd; - NvmeCopyAIOCB *iocb =3D blk_aio_get(&nvme_copy_aiocb_info, ns->blkconf= .blk, + NvmeCopyAIOCB *iocb =3D blk_aio_get(&nvme_copy_aiocb_info, nvme_blk(ns= ), nvme_misc_cb, req); uint16_t nr =3D copy->nr + 1; uint8_t format =3D copy->control[0] & 0xf; @@ -2847,9 +2847,9 @@ static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *r= eq) =20 qemu_iovec_init(&iocb->iov, 1); =20 - block_acct_start(blk_get_stats(ns->blkconf.blk), &iocb->acct.read, 0, + block_acct_start(blk_get_stats(nvme_blk(ns)), &iocb->acct.read, 0, BLOCK_ACCT_READ); - block_acct_start(blk_get_stats(ns->blkconf.blk), &iocb->acct.write, 0, + block_acct_start(blk_get_stats(nvme_blk(ns)), &iocb->acct.write, 0, BLOCK_ACCT_WRITE); =20 req->aiocb =3D &iocb->common; @@ -2868,7 +2868,7 @@ static uint16_t nvme_compare(NvmeCtrl *n, NvmeRequest= *req) NvmeRwCmd *rw =3D (NvmeRwCmd *)&req->cmd; NvmeNamespace *ns =3D req->ns; NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); uint64_t slba =3D le64_to_cpu(rw->slba); uint32_t nlb =3D le16_to_cpu(rw->nlb) + 1; uint8_t prinfo =3D NVME_RW_PRINFO(le16_to_cpu(rw->control)); @@ -2971,7 +2971,7 @@ static void nvme_flush_ns_cb(void *opaque, int ret) trace_pci_nvme_flush_ns(iocb->nsid); =20 iocb->ns =3D NULL; - iocb->aiocb =3D blk_aio_flush(ns->blkconf.blk, nvme_flush_ns_cb, i= ocb); + iocb->aiocb =3D blk_aio_flush(nvme_blk(ns), nvme_flush_ns_cb, iocb= ); return; } =20 @@ -3073,7 +3073,7 @@ static uint16_t nvme_read(NvmeCtrl *n, NvmeRequest *r= eq) uint64_t data_size =3D nvme_l2b(nvm, nlb); uint64_t mapped_size =3D data_size; uint64_t data_offset; - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); uint16_t status; =20 if (nvme_ns_ext(nvm)) { @@ -3151,7 +3151,7 @@ static uint16_t nvme_do_write(NvmeCtrl *n, NvmeReques= t *req, bool append, uint64_t data_offset; NvmeZone *zone; NvmeZonedResult *res =3D (NvmeZonedResult *)&req->cqe; - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); uint16_t status; =20 if (nvme_ns_ext(nvm)) { @@ -3542,7 +3542,7 @@ static void nvme_zone_reset_epilogue_cb(void *opaque,= int ret) moff =3D nvme_moff(nvm, iocb->zone->d.zslba); count =3D nvme_m2b(nvm, zoned->zone_size); =20 - iocb->aiocb =3D blk_aio_pwrite_zeroes(ns->blkconf.blk, moff, count, + iocb->aiocb =3D blk_aio_pwrite_zeroes(nvme_blk(ns), moff, count, BDRV_REQ_MAY_UNMAP, nvme_zone_reset_cb, iocb); return; @@ -3593,7 +3593,7 @@ static void nvme_zone_reset_cb(void *opaque, int ret) =20 trace_pci_nvme_zns_zone_reset(zone->d.zslba); =20 - iocb->aiocb =3D blk_aio_pwrite_zeroes(ns->blkconf.blk, + iocb->aiocb =3D blk_aio_pwrite_zeroes(nvme_blk(ns), nvme_l2b(nvm, zone->d.zslba), nvme_l2b(nvm, zoned->zone_size= ), BDRV_REQ_MAY_UNMAP, @@ -3673,7 +3673,7 @@ static uint16_t nvme_zone_mgmt_send(NvmeCtrl *n, Nvme= Request *req) case NVME_ZONE_ACTION_RESET: trace_pci_nvme_reset_zone(slba, zone_idx, all); =20 - iocb =3D blk_aio_get(&nvme_zone_reset_aiocb_info, ns->blkconf.blk, + iocb =3D blk_aio_get(&nvme_zone_reset_aiocb_info, nvme_blk(ns), nvme_misc_cb, req); =20 iocb->req =3D req; @@ -4076,7 +4076,7 @@ struct nvme_stats { =20 static void nvme_set_blk_stats(NvmeNamespace *ns, struct nvme_stats *stats) { - BlockAcctStats *s =3D blk_get_stats(ns->blkconf.blk); + BlockAcctStats *s =3D blk_get_stats(nvme_blk(ns)); =20 stats->units_read +=3D s->nr_bytes[BLOCK_ACCT_READ] >> BDRV_SECTOR_BIT= S; stats->units_written +=3D s->nr_bytes[BLOCK_ACCT_WRITE] >> BDRV_SECTOR= _BITS; @@ -4942,7 +4942,7 @@ static uint16_t nvme_get_feature(NvmeCtrl *n, NvmeReq= uest *req) continue; } =20 - result =3D blk_enable_write_cache(ns->blkconf.blk); + result =3D blk_enable_write_cache(nvme_blk(ns)); if (result) { break; } @@ -5114,11 +5114,11 @@ static uint16_t nvme_set_feature(NvmeCtrl *n, NvmeR= equest *req) continue; } =20 - if (!(dw11 & 0x1) && blk_enable_write_cache(ns->blkconf.blk)) { - blk_flush(ns->blkconf.blk); + if (!(dw11 & 0x1) && blk_enable_write_cache(nvme_blk(ns))) { + blk_flush(nvme_blk(ns)); } =20 - blk_set_enable_write_cache(ns->blkconf.blk, dw11 & 1); + blk_set_enable_write_cache(nvme_blk(ns), dw11 & 1); } =20 break; @@ -5368,7 +5368,7 @@ static void nvme_format_ns_cb(void *opaque, int ret) if (iocb->offset < nvm->size) { bytes =3D MIN(BDRV_REQUEST_MAX_BYTES, nvm->size - iocb->offset); =20 - iocb->aiocb =3D blk_aio_pwrite_zeroes(ns->blkconf.blk, iocb->offse= t, + iocb->aiocb =3D blk_aio_pwrite_zeroes(nvme_blk(ns), iocb->offset, bytes, BDRV_REQ_MAY_UNMAP, nvme_format_ns_cb, iocb); =20 diff --git a/hw/nvme/dif.c b/hw/nvme/dif.c index 26c7412eb523..1b8f9ba2fb44 100644 --- a/hw/nvme/dif.c +++ b/hw/nvme/dif.c @@ -171,7 +171,7 @@ uint16_t nvme_dif_mangle_mdata(NvmeNamespace *ns, uint8= _t *mbuf, size_t mlen, uint64_t slba) { NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); BlockDriverState *bs =3D blk_bs(blk); =20 int64_t moffset =3D 0, offset =3D nvme_l2b(nvm, slba); @@ -227,7 +227,7 @@ static void nvme_dif_rw_cb(void *opaque, int ret) NvmeBounceContext *ctx =3D opaque; NvmeRequest *req =3D ctx->req; NvmeNamespace *ns =3D req->ns; - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); =20 trace_pci_nvme_dif_rw_cb(nvme_cid(req), blk_name(blk)); =20 @@ -311,7 +311,7 @@ static void nvme_dif_rw_mdata_in_cb(void *opaque, int r= et) uint32_t nlb =3D le16_to_cpu(rw->nlb) + 1; size_t mlen =3D nvme_m2b(nvm, nlb); uint64_t offset =3D nvme_moff(nvm, slba); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); =20 trace_pci_nvme_dif_rw_mdata_in_cb(nvme_cid(req), blk_name(blk)); =20 @@ -341,7 +341,7 @@ static void nvme_dif_rw_mdata_out_cb(void *opaque, int = ret) NvmeRwCmd *rw =3D (NvmeRwCmd *)&req->cmd; uint64_t slba =3D le64_to_cpu(rw->slba); uint64_t offset =3D nvme_moff(nvm, slba); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); =20 trace_pci_nvme_dif_rw_mdata_out_cb(nvme_cid(req), blk_name(blk)); =20 @@ -362,7 +362,7 @@ uint16_t nvme_dif_rw(NvmeCtrl *n, NvmeRequest *req) NvmeRwCmd *rw =3D (NvmeRwCmd *)&req->cmd; NvmeNamespace *ns =3D req->ns; NvmeNamespaceNvm *nvm =3D NVME_NAMESPACE_NVM(ns); - BlockBackend *blk =3D ns->blkconf.blk; + BlockBackend *blk =3D nvme_blk(ns); bool wrz =3D rw->opcode =3D=3D NVME_CMD_WRITE_ZEROES; uint32_t nlb =3D le16_to_cpu(rw->nlb) + 1; uint64_t slba =3D le64_to_cpu(rw->slba); @@ -451,7 +451,7 @@ uint16_t nvme_dif_rw(NvmeCtrl *n, NvmeRequest *req) block_acct_start(blk_get_stats(blk), &req->acct, ctx->data.iov.siz= e, BLOCK_ACCT_READ); =20 - req->aiocb =3D blk_aio_preadv(ns->blkconf.blk, offset, &ctx->data.= iov, 0, + req->aiocb =3D blk_aio_preadv(nvme_blk(ns), offset, &ctx->data.iov= , 0, nvme_dif_rw_mdata_in_cb, ctx); return NVME_NO_COMPLETE; } @@ -497,7 +497,7 @@ uint16_t nvme_dif_rw(NvmeCtrl *n, NvmeRequest *req) block_acct_start(blk_get_stats(blk), &req->acct, ctx->data.iov.size, BLOCK_ACCT_WRITE); =20 - req->aiocb =3D blk_aio_pwritev(ns->blkconf.blk, offset, &ctx->data.iov= , 0, + req->aiocb =3D blk_aio_pwritev(nvme_blk(ns), offset, &ctx->data.iov, 0, nvme_dif_rw_mdata_out_cb, ctx); =20 return NVME_NO_COMPLETE; diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index c5e08cf9e1c1..525bfd0ca831 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -155,6 +155,7 @@ enum { typedef struct NvmeNamespaceNvm { NvmeIdNs id_ns; =20 + BlockBackend *blk; int64_t size; int64_t moff; =20 @@ -193,6 +194,11 @@ typedef struct NvmeNamespace { #define NVME_NAMESPACE_NVM(ns) (&(ns)->nvm) #define NVME_NAMESPACE_ZONED(ns) (&(ns)->zoned) =20 +static inline BlockBackend *nvme_blk(NvmeNamespace *ns) +{ + return NVME_NAMESPACE_NVM(ns)->blk; +} + static inline uint32_t nvme_nsid(NvmeNamespace *ns) { if (ns) { --=20 2.33.0