From nobody Sun Jun 7 22:18:16 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=mihalicyn.com ARC-Seal: i=1; a=rsa-sha256; t=1780569122; cv=none; d=zohomail.com; s=zohoarc; b=fAY5dQ+XS4Q7xOb7YRkB7bqCN5N7cm9U+RLN0WHC18jefI/0kDZhzyi5TapCTn5a6neTIjx+gMXDgLIBqSSdLxGc0XSKpIl1ImpwHKNKNwSWAv4bW5NvQ8Q3IpK/1JCoplrvadcHYK+fN/unrXV+8XQQBOWtOJXVZUzWsrECj/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780569122; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SwI26bAPD++fDBpapjaelr4YYzGf4tn+w+2LSRNSEKk=; b=Aaf5WbScHfGFZVXJxGo6ziLwQ7ccAYkfyY2DN4eTGy69XeLfCe0viOhFwZX/aS/4G6NUa/zANT4z3a55qXKXjsuqEKHg/6J6NnvhepYN8BgYnF/B/ZPDCxhJv8Q+lnp+sDGDHwCaqdbXop4Pxcm6LliCVhMYJyQWg5k008ajoB0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780569121922127.72972001857102; Thu, 4 Jun 2026 03:32:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wV5Mj-00075H-BZ; Thu, 04 Jun 2026 06:31:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wV5Md-0006t0-Sk for qemu-devel@nongnu.org; Thu, 04 Jun 2026 06:31:52 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wV5Mb-0001kn-9X for qemu-devel@nongnu.org; Thu, 04 Jun 2026 06:31:51 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-45ee5cdbd28so1114377f8f.1 for ; Thu, 04 Jun 2026 03:31:48 -0700 (PDT) Received: from alex-laptop.lan (p200300cf57228c0000000000000009a8.dip0.t-ipconnect.de. [2003:cf:5722:8c00::9a8]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcae2sm15928661f8f.6.2026.06.04.03.31.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 03:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mihalicyn.com; s=mihalicyn; t=1780569108; x=1781173908; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SwI26bAPD++fDBpapjaelr4YYzGf4tn+w+2LSRNSEKk=; b=drikDSnk4z0xryU/KYJwSNnG3+zY2sVUJutpUSKzuahffeamrIvmaBZgKb0aCrZb16 gbqXHPbF/qepfr39tJ4YlxYorZ/yjEBqXRSfrwrLiClcZRCUo+E7idXXiIek8fLrtLiR boG4HlLXdWvHWsMGAVjpeOB27xzfzzR0fdZYs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780569108; x=1781173908; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SwI26bAPD++fDBpapjaelr4YYzGf4tn+w+2LSRNSEKk=; b=gaG15/zL4bkHHwWbY5GeJCClLjlnIsghxvpyA5eb0SCWHjEJgAURohLl8huwYjZxqN A9cj7Daa5T9Z35+vDyEoVzaY2+QKq+hJHQzJegGho/JOkycSwj1MTnAMlAqpYtP8r4cB LFazLlBIX06m2dDlsFCZD0LCwnY8HR4dM3Dhf1JMCQy/EqKDS4wpR1Fdbbx4AXDXcmBK RJrRWAm1+dqYbzzBqaU1J76pnC6kmejdQhAhnV7RUqh62j3zYHDkMMKrvHl9QD2iF/OX 1/y951Sz7lVnwvXWfzb13L0UGUTS/iW97W7wY+tHEDfwqmuntqaVvv/TLa5mpH0U+pma UDBA== X-Gm-Message-State: AOJu0Yzg/SPjxO/gzC3dQ0ff+dNecuOUy6UQyNnTZdPiWCjeHXwuWe0r iQOMRI04SgzTuIQRFVGq7xnECf5oqcsToK4OwBxAlBZB1pgYOVY3iZyDXwTimG3+1ZIZIbqhJ2f JwrgI X-Gm-Gg: Acq92OHMEijRo1e+aCOLQI05JoI16dnhjv1ffAbMRS0Aqij5gBB+i0juJs6hQAI56Zt rdzMIyhC6vjxkKOIhBQ4ASV3lXjASyFvlFlqhN40xonEq2IvCFVxbJKIzhoXFNr/O2IkAFXT2a9 gsU6gPdUIg/yfHQWV45ArvyDtrm9ul+iuj9YL05wgWC28PLujJ8F/Or5nWrpD/gMLLAcHUTrLk+ +unkRYjXD0MjsVMG2jHxaBRHR4TEkEn5qgRy0Zsr3Bimg0Y+2zbhjgCEkFe7KgvNyvj/yJHKVjT 110hnVA9ea1MBBY6gFB++lfptOJMr1wa6xpox3z19Xu8iJkRhWOYzy8hy8ImBV6hfUDDeNCSW5v RAcpMjfU1J1HRVDZ7Mn1WkZ7lgNebuw3rWeP8VlFwBOd/JdfbzZHh6eIN317Z33rD/oeVDwpQEA HKdw8KE+31kisLJLEHIOOYndz8DRebyEt9ph2uL8NenTxVeMWRK/ooyfe5/ZpH5HEaYqLjG0hvd DtnnhrUhJ0UAA== X-Received: by 2002:a05:6000:703:b0:460:133f:2a4e with SMTP id ffacd0b85a97d-46027317db6mr5118188f8f.13.1780569107809; Thu, 04 Jun 2026 03:31:47 -0700 (PDT) From: Alexander Mikhalitsyn To: qemu-devel@nongnu.org Cc: Keith Busch , =?UTF-8?q?St=C3=A9phane=20Graber?= , Klaus Jensen , qemu-block@nongnu.org, Jesper Devantier , Alexander Mikhalitsyn Subject: [PATCH 1/2] hw/nvme: initialize ns->subsys for n->namespace Date: Thu, 4 Jun 2026 12:31:42 +0200 Message-ID: <20260604103143.462071-2-alexander@mihalicyn.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260604103143.462071-1-alexander@mihalicyn.com> References: <20260604103143.462071-1-alexander@mihalicyn.com> 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=alexander@mihalicyn.com; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @mihalicyn.com) X-ZM-MESSAGEID: 1780569123982158500 Content-Type: text/plain; charset="utf-8" From: Alexander Mikhalitsyn We must properly initialize n->namespace.subsys too. Will be important in the following patches. Signed-off-by: Alexander Mikhalitsyn --- hw/nvme/ctrl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 815f39173c8..391f8260fc2 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -9331,6 +9331,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **= errp) ns =3D &n->namespace; ns->params.nsid =3D 1; ns->ctrl =3D n; + ns->subsys =3D n->subsys; =20 if (nvme_ns_setup(ns, errp)) { return; --=20 2.47.3 From nobody Sun Jun 7 22:18:16 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=mihalicyn.com ARC-Seal: i=1; a=rsa-sha256; t=1780569159; cv=none; d=zohomail.com; s=zohoarc; b=cwz7hrTUtAusPzrPmSavHeBvzFWGGgP5qgDXPU5xKsYEz34VqBnDQWMrx+e8Odreh9ZY+7FSvsp2EoF1xh4YBnOTMjSNNu8PFqmKytCKKd4oAy1uGLy1par1HzHstejldPhjWw0zYBeFgZ8HA+4CdyzcvakIVv1yGog55e0NtVM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780569159; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8mOZX98Bpq7qkTpATuY0W3VavSaB0r+4FZ5Ng89RLv8=; b=iImn6v70a2X+xQcEGPrqwD16tHWRZEtj8F+IRPUi38oDzxOvTVmzGTX2uuyStMTnUBztwM/Gv/IPW9O2NL94sBRLADtUdj3GfC/5AYBLS9n2Zh2MoW+pcb0+zOXZd3U+yp8E0S4LYHONZvxNgNAcNSz5h6DaqRb5/o9n9HhP1ug= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780569159331843.0109682045436; Thu, 4 Jun 2026 03:32:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wV5Mj-00074P-52; Thu, 04 Jun 2026 06:31:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wV5Mf-0006tn-Ak for qemu-devel@nongnu.org; Thu, 04 Jun 2026 06:31:53 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wV5Md-0001mG-Cj for qemu-devel@nongnu.org; Thu, 04 Jun 2026 06:31:52 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-45ef616daf6so517836f8f.3 for ; Thu, 04 Jun 2026 03:31:51 -0700 (PDT) Received: from alex-laptop.lan (p200300cf57228c0000000000000009a8.dip0.t-ipconnect.de. [2003:cf:5722:8c00::9a8]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcae2sm15928661f8f.6.2026.06.04.03.31.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 03:31:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mihalicyn.com; s=mihalicyn; t=1780569109; x=1781173909; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8mOZX98Bpq7qkTpATuY0W3VavSaB0r+4FZ5Ng89RLv8=; b=bvskS59Vpq8zuJaNJbZHk4jvjH0Pcwv6LMPEWbRdgXjfkNEctbZ5gRZJLdkvO1/P/+ e6rVHwg8TH5qbGP9BSTdrL0Cd0qcvkZ59hCPxzb2EpclQOXEE4L3kT102/K/4dGLnOa3 qjakW6m5zdAIen4poa/JE30OK+LEyd7iriouQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780569109; x=1781173909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8mOZX98Bpq7qkTpATuY0W3VavSaB0r+4FZ5Ng89RLv8=; b=eIhOwbvq2fNG+n/QiSi1TQ42za25sFfJVJO6jPO/GQ59DVKoyL68g1ScacxdqDTZ5X +ENF4CUJfo1FfNa/KRu530cPlybXLRaCeGxaXcHhEp+Hpw6Kva1hUACs/DXAh30Iwsr3 NiNVRCKwBzzpMhla7WvT3ikD+eGfD0vUZ4RMthqdBF/PVYxNkjPOLkioMcGaRre671oQ w0QdkGTlDxAN+Vx/kjxFsS0gzi9rOr0CRMlSxYQJkSO+1UF4xtC3K/mQ7mh+pgRd5UZz BuaK9SQyEA3ALvwIhPv4uNnTDAIUaCcviiFd3TZcEEiF217ehlRhjg8MfaKjiXwhv1c3 /Q7A== X-Gm-Message-State: AOJu0YyBriXnBUUkYX+J6F/nmHUv0eLMb4eK//MF/i/DA39Q/uN9nvUG gBFKnwwQJf0p1c266zOQMZ97k2UACDo9Rk85Idx5pkLOn2yT0vjZg8929YTNnSOxLqUcaCRcBfd t5xLU X-Gm-Gg: Acq92OH4lMiB9M+ekLS33wBXlCCXK96daivK8skZuImZE3Zm5KlBsCRHh3PVARR0kp6 vockL+AgqdjvNs0nk+Nw1lOsh8qZKgemQ3vgzwLvV9iCEX3UQTo0ZRGtpovkzcYR0rWk7Dr1vAs 0nDrdtL1Uy9A3P/r38fSX3lObpxzGB4Nb7OM6BWd7DaL61ps+bNlVrUNFFKZexGa6NrU4DN0JtW wyNqL5H0mBjWCv37nuL5Xkeelsqcd7tl0X5VqBw0vauf6dLLqGBAfZZ8AU/4Iqansxy4nPgOCwg b6TH8G7YAY9wUAd5ubi4MpwfdfkCLrr+Oz3sFFUbjd+YEMjPJfpY/9DfMMHib0AUJKHDaIq1veM 9ht2+l4aYUgFmmt2yolUTfZG1Vh27ep24H/Ry2X7CkAXWpONBAZE+/TG0k3sogl1dEA9bai9sTC WLWk2iLSGlVUDW9Xo5FfXmo4Qe/x2bUAhBSDHWqxP9h5lW6mNWMJUXvuCDfUM4mf0zuLyR8zZ9c 0RXNtI+HGc3gA== X-Received: by 2002:a5d:5747:0:b0:43d:7c6c:a0dd with SMTP id ffacd0b85a97d-4602186d090mr8239365f8f.35.1780569108858; Thu, 04 Jun 2026 03:31:48 -0700 (PDT) From: Alexander Mikhalitsyn To: qemu-devel@nongnu.org Cc: Keith Busch , =?UTF-8?q?St=C3=A9phane=20Graber?= , Klaus Jensen , qemu-block@nongnu.org, Jesper Devantier , Alexander Mikhalitsyn Subject: [PATCH 2/2] hw/nvme: support online resize Date: Thu, 4 Jun 2026 12:31:43 +0200 Message-ID: <20260604103143.462071-3-alexander@mihalicyn.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260604103143.462071-1-alexander@mihalicyn.com> References: <20260604103143.462071-1-alexander@mihalicyn.com> 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=alexander@mihalicyn.com; helo=mail-wr1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @mihalicyn.com) X-ZM-MESSAGEID: 1780569162341158500 Content-Type: text/plain; charset="utf-8" From: Alexander Mikhalitsyn Implement (BlockDevOps *)->resize_cb() for NVMe namespace to enable online resize support. We must handle cases when multiple namespaces are attached to a single controller, or namespace is shared across a few different controllers by iterating over controllers attached to a NvmeSubsystem and properly notify every controller about a size change. Signed-off-by: Alexander Mikhalitsyn --- hw/nvme/ctrl.c | 9 +++++++ hw/nvme/ns.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++- hw/nvme/nvme.h | 2 ++ 3 files changed, 75 insertions(+), 1 deletion(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 391f8260fc2..d329276e127 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -6898,6 +6898,15 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n, Nvme= Request *req) return NVME_SUCCESS; } =20 +void nvme_ctrl_notify_ns_resize(NvmeCtrl *ctrl, NvmeNamespace *ns) +{ + if (!test_and_set_bit(ns->params.nsid, ctrl->changed_nsids)) { + nvme_enqueue_event(ctrl, NVME_AER_TYPE_NOTICE, + NVME_AER_INFO_NOTICE_NS_ATTR_CHANGED, + NVME_LOG_CHANGED_NSLIST); + } +} + typedef struct NvmeFormatAIOCB { BlockAIOCB common; BlockAIOCB *aiocb; diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index b0106eaa5c8..ee05b4f3ddf 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -162,6 +162,67 @@ lbaf_found: return 0; } =20 +static void nvme_ns_resize_cb(void *opaque) +{ + NvmeNamespace *ns =3D opaque; + int64_t size; + int cntlid, notified_ctrls; + + size =3D blk_getlength(ns->blkconf.blk); + if (size < 0) { + error_report("can't get size of block device %s: %s", + blk_name(ns->blkconf.blk), strerror(-size)); + return; + } + + ns->size =3D size; + nvme_ns_init_format(ns); + + if (!ns->attached) + return; + + /* + * Okay, the namespace is attached so we need to notify all controllers + * about size change. + * + * Let's just take ns->subsys, iterate over all controllers and find + * to which of them our namespace is attached. + */ + + assert(ns->subsys); + assert(ns->subsys->ctrls); + + notified_ctrls =3D 0; + for (cntlid =3D 0; cntlid < ARRAY_SIZE(ns->subsys->ctrls); cntlid++) { + NvmeCtrl *ctrl; + + /* notified everyone? */ + if (notified_ctrls =3D=3D ns->attached) + break; + + ctrl =3D nvme_subsys_ctrl(ns->subsys, cntlid); + if (!ctrl) { + continue; + } + + for (uint32_t nsid =3D 1; nsid <=3D NVME_MAX_NAMESPACES; nsid++) { + NvmeNamespace *ns_iter =3D ctrl->namespaces[nsid]; + + if (!ns_iter || ns_iter !=3D ns) + continue; + + nvme_ctrl_notify_ns_resize(ctrl, ns); + + notified_ctrls++; + break; + } + } +} + +static const BlockDevOps nvme_ns_block_ops =3D { + .resize_cb =3D nvme_ns_resize_cb, +}; + static int nvme_ns_init_blk(NvmeNamespace *ns, Error **errp) { bool read_only; @@ -171,10 +232,12 @@ static int nvme_ns_init_blk(NvmeNamespace *ns, Error = **errp) } =20 read_only =3D !blk_supports_write_perm(ns->blkconf.blk); - if (!blkconf_apply_backend_options(&ns->blkconf, read_only, false, err= p)) { + if (!blkconf_apply_backend_options(&ns->blkconf, read_only, true, errp= )) { return -1; } =20 + blk_set_dev_ops(ns->blkconf.blk, &nvme_ns_block_ops, ns); + if (ns->blkconf.discard_granularity =3D=3D -1) { ns->blkconf.discard_granularity =3D MAX(ns->blkconf.logical_block_size, MIN_DISCARD_GRANULARITY); diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index 5ef3ebee29e..ac94cc72c0f 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -748,4 +748,6 @@ void nvme_atomic_configure_max_write_size(bool dn, uint= 16_t awun, void nvme_ns_atomic_configure_boundary(bool dn, uint16_t nabsn, uint16_t nabspf, NvmeAtomic *atomic= ); =20 +void nvme_ctrl_notify_ns_resize(NvmeCtrl *ctrl, NvmeNamespace *ns); + #endif /* HW_NVME_NVME_H */ --=20 2.47.3