[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 4/6] Report VPD 0xB2 Logical Block Provisioning


  • To: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>, "win-pv-devel@xxxxxxxxxxxxxxxxxxxx" <win-pv-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Owen Smith <owen.smith@xxxxxxxxxx>
  • Date: Wed, 4 Mar 2026 08:27:05 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YjyNN3coXQFWp32Xlkw9kw1Yj9mB9oWnK7gIaf46/Og=; b=ye5F2Mq4L6htp8C85sfD2risPF81oL8y44bAL0eF6liJPUumyLNhZRMhL6W6NumfEDTIOOH/xY4MyamXtpoKvpijE7Koc/wnlRHakMoMC03Fesl49DKo8Fd93Vfc91LayplIkLoEZel3SXt8OhskZ8rhy7czyMHpRwYMaYnqXdhAd5vkI4ZGk2q3P8OHU9LWolY0yY3PHOVfmNrr6BIJgtvHZpGjYi2LlmZiELgp93nr2Njq/I/7AlkEwgqUtT2EjqI6Cue4JVl6KTJHbf5f37MWCZ/w5ksdqg9IZcUcgabotVoYtFctYFnMv6j5cK5ROOCTzi3gbanKuw9gu2mX1g==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QkFlHSsm6rL0ctYul3055hwJxhmi6aaLdLCsTIrsAPajeuMg9FvJ1g2QOM15uN0qS8IvujDv5hG+1V3Lb9ZKRyYNBNq3wo4XAn0edkDESVrV6MLX20uqiLnWuScsBptj9u9agbKPLY/3Ndd+66BbzvLTLtt4ZwKDTxX3lPmLJl2URhsa05f/ZaANefA48wuH5EzbSo3BS2EUuXVRGP7DRzwYUuBTvXmdMRmeLEenlnZ0E01WEDOGgSzLc7739EUIJ6c+6NoBq4WadhWsdjx4Sfli/DmaxXODRaybDvMQXLXbgKreImjZhsrZhVrzu9a35ld+5q4/QSR4iTyziEiqVw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Delivery-date: Wed, 04 Mar 2026 08:27:11 +0000
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>
  • Msip_labels:
  • Thread-index: AQHcpw8IwcpJhHFteUOIIiZRVuMZ0LWeEzxu
  • Thread-topic: [RFC PATCH 4/6] Report VPD 0xB2 Logical Block Provisioning

Reviewed-by: Owen Smith <owen.smith@xxxxxxxxxx>

________________________________________
From: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
Sent: 26 February 2026 10:59 AM
To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
Cc: Tu Dinh; Owen Smith
Subject: [RFC PATCH 4/6] Report VPD 0xB2 Logical Block Provisioning

This VPD page is required for the detection of discard features by
Classpnp.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
---
 src/xenvbd/target.c | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/src/xenvbd/target.c b/src/xenvbd/target.c
index 5109281..3d48ade 100644
--- a/src/xenvbd/target.c
+++ b/src/xenvbd/target.c
@@ -680,6 +680,7 @@ static const UCHAR SupportedPages[] = {
     VPD_DEVICE_IDENTIFIERS,
     VPD_BLOCK_LIMITS,
     VPD_BLOCK_DEVICE_CHARACTERISTICS,
+    VPD_LOGICAL_BLOCK_PROVISIONING,
 };

 static FORCEINLINE VOID
@@ -879,6 +880,39 @@ TargetInquiryB1(
     Srb->SrbStatus = SRB_STATUS_SUCCESS;
 }

+static VOID
+TargetInquiryB2(
+    IN  PXENVBD_TARGET                      Target,
+    IN  PSCSI_REQUEST_BLOCK                 Srb
+    )
+{
+    PVPD_LOGICAL_BLOCK_PROVISIONING_PAGE    Data = Srb->DataBuffer;
+    ULONG                                   Length = Srb->DataTransferLength;
+
+    UNREFERENCED_PARAMETER(Target);
+
+    Srb->SrbStatus = SRB_STATUS_ERROR;
+
+    if (Data == NULL)
+        return;
+
+    RtlZeroMemory(Data, Length);
+
+    if (Length < sizeof(VPD_LOGICAL_BLOCK_PROVISIONING_PAGE))
+        return;
+
+    Data->PageCode = VPD_LOGICAL_BLOCK_PROVISIONING;
+    Data->PageLength[1] = 4;
+
+    // Even if the current backend doesn't support discard, we might want to
+    // offer discard again when the backend changes. So we have to say that
+    // discard is unconditionally supported here.
+    Data->LBPU = 1;
+
+    Srb->DataTransferLength = sizeof(VPD_LOGICAL_BLOCK_PROVISIONING_PAGE);
+    Srb->SrbStatus = SRB_STATUS_SUCCESS;
+}
+
 static DECLSPEC_NOINLINE VOID
 TargetInquiry(
     IN  PXENVBD_TARGET      Target,
@@ -902,6 +936,9 @@ TargetInquiry(
         case VPD_BLOCK_DEVICE_CHARACTERISTICS:
             TargetInquiryB1(Target, Srb);
             break;
+        case VPD_LOGICAL_BLOCK_PROVISIONING:
+            TargetInquiryB2(Target, Srb);
+            break;
         default:
             Srb->SrbStatus = SRB_STATUS_ERROR;
             break;
--
2.51.2.windows.1



--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.