[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 08/10] hw/nvme: enable ONCS and rescap function
From: |
Changqi Lu |
Subject: |
[PATCH v6 08/10] hw/nvme: enable ONCS and rescap function |
Date: |
Thu, 13 Jun 2024 15:13:25 +0800 |
This commit enables ONCS to support the reservation
function at the controller level. Also enables rescap
function in the namespace by detecting the supported reservation
function in the backend driver.
Signed-off-by: Changqi Lu <luchangqi.123@bytedance.com>
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
hw/nvme/ctrl.c | 3 ++-
hw/nvme/ns.c | 5 +++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 127c3d2383..182307a48b 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -8248,7 +8248,8 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice
*pci_dev)
id->nn = cpu_to_le32(NVME_MAX_NAMESPACES);
id->oncs = cpu_to_le16(NVME_ONCS_WRITE_ZEROES | NVME_ONCS_TIMESTAMP |
NVME_ONCS_FEATURES | NVME_ONCS_DSM |
- NVME_ONCS_COMPARE | NVME_ONCS_COPY);
+ NVME_ONCS_COMPARE | NVME_ONCS_COPY |
+ NVME_ONCS_RESRVATIONS);
/*
* NOTE: If this device ever supports a command set that does NOT use 0x0
diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c
index ea8db175db..320c9bf658 100644
--- a/hw/nvme/ns.c
+++ b/hw/nvme/ns.c
@@ -20,6 +20,7 @@
#include "qemu/bitops.h"
#include "sysemu/sysemu.h"
#include "sysemu/block-backend.h"
+#include "block/block_int.h"
#include "nvme.h"
#include "trace.h"
@@ -33,6 +34,7 @@ void nvme_ns_init_format(NvmeNamespace *ns)
BlockDriverInfo bdi;
int npdg, ret;
int64_t nlbas;
+ uint8_t blk_pr_cap;
ns->lbaf = id_ns->lbaf[NVME_ID_NS_FLBAS_INDEX(id_ns->flbas)];
ns->lbasz = 1 << ns->lbaf.ds;
@@ -55,6 +57,9 @@ void nvme_ns_init_format(NvmeNamespace *ns)
}
id_ns->npda = id_ns->npdg = npdg - 1;
+
+ blk_pr_cap = blk_bs(ns->blkconf.blk)->file->bs->bl.pr_cap;
+ id_ns->rescap = block_pr_cap_to_nvme(blk_pr_cap);
}
static int nvme_ns_init(NvmeNamespace *ns, Error **errp)
--
2.20.1
- Re: [PATCH v6 02/10] block/raw: add persistent reservation in/out driver, (continued)
- [PATCH v6 01/10] block: add persistent reservation in/out api, Changqi Lu, 2024/06/13
- [PATCH v6 03/10] scsi/constant: add persistent reservation in/out protocol constants, Changqi Lu, 2024/06/13
- [PATCH v6 04/10] scsi/util: add helper functions for persistent reservation types conversion, Changqi Lu, 2024/06/13
- [PATCH v6 05/10] hw/scsi: add persistent reservation in/out api for scsi device, Changqi Lu, 2024/06/13
- [PATCH v6 06/10] block/nvme: add reservation command protocol constants, Changqi Lu, 2024/06/13
- [PATCH v6 07/10] hw/nvme: add helper functions for converting reservation types, Changqi Lu, 2024/06/13
- [PATCH v6 08/10] hw/nvme: enable ONCS and rescap function,
Changqi Lu <=
- [PATCH v6 09/10] hw/nvme: add reservation protocal command, Changqi Lu, 2024/06/13
- [PATCH v6 10/10] block/iscsi: add persistent reservation in/out driver, Changqi Lu, 2024/06/13
- PING: [PATCH v6 00/10] Support persistent reservation operations, 卢长奇, 2024/06/18
- Message not available
- PING: [PATCH v6 00/10] Support persistent reservation operations, 卢长奇, 2024/06/26