[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 11/13] hw/block/nvme: move zoned constraints checks
From: |
Klaus Jensen |
Subject: |
[PATCH v5 11/13] hw/block/nvme: move zoned constraints checks |
Date: |
Wed, 10 Mar 2021 10:53:45 +0100 |
From: Klaus Jensen <k.jensen@samsung.com>
Validation of the max_active and max_open zoned parameters are
independent of any other state, so move them to the early
nvme_ns_check_constraints parameter checks.
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
hw/block/nvme-ns.c | 52 +++++++++++++++++++++++++---------------------
1 file changed, 28 insertions(+), 24 deletions(-)
diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c
index 5995d475ecdd..192c6c923ab4 100644
--- a/hw/block/nvme-ns.c
+++ b/hw/block/nvme-ns.c
@@ -214,30 +214,6 @@ static int nvme_ns_zoned_check_calc_geometry(NvmeNamespace
*ns, Error **errp)
return -1;
}
- if (ns->params.max_active_zones) {
- if (ns->params.max_open_zones > ns->params.max_active_zones) {
- error_setg(errp, "max_open_zones (%u) exceeds max_active_zones
(%u)",
- ns->params.max_open_zones, ns->params.max_active_zones);
- return -1;
- }
-
- if (!ns->params.max_open_zones) {
- ns->params.max_open_zones = ns->params.max_active_zones;
- }
- }
-
- if (ns->params.zd_extension_size) {
- if (ns->params.zd_extension_size & 0x3f) {
- error_setg(errp,
- "zone descriptor extension size must be a multiple of 64B");
- return -1;
- }
- if ((ns->params.zd_extension_size >> 6) > 0xff) {
- error_setg(errp, "zone descriptor extension size is too large");
- return -1;
- }
- }
-
return 0;
}
@@ -386,6 +362,34 @@ static int nvme_ns_check_constraints(NvmeNamespace *ns,
Error **errp)
return -1;
}
+ if (ns->params.zoned) {
+ if (ns->params.max_active_zones) {
+ if (ns->params.max_open_zones > ns->params.max_active_zones) {
+ error_setg(errp, "max_open_zones (%u) exceeds "
+ "max_active_zones (%u)", ns->params.max_open_zones,
+ ns->params.max_active_zones);
+ return -1;
+ }
+
+ if (!ns->params.max_open_zones) {
+ ns->params.max_open_zones = ns->params.max_active_zones;
+ }
+ }
+
+ if (ns->params.zd_extension_size) {
+ if (ns->params.zd_extension_size & 0x3f) {
+ error_setg(errp, "zone descriptor extension size must be a "
+ "multiple of 64B");
+ return -1;
+ }
+ if ((ns->params.zd_extension_size >> 6) > 0xff) {
+ error_setg(errp,
+ "zone descriptor extension size is too large");
+ return -1;
+ }
+ }
+ }
+
return 0;
}
--
2.30.1
- [PATCH v5 02/13] hw/block/nvme: add metadata support, (continued)
- [PATCH v5 02/13] hw/block/nvme: add metadata support, Klaus Jensen, 2021/03/10
- [PATCH v5 06/13] hw/block/nvme: support multiple lba formats, Klaus Jensen, 2021/03/10
- [PATCH v5 07/13] hw/block/nvme: prefer runtime helpers instead of device parameters, Klaus Jensen, 2021/03/10
- [PATCH v5 03/13] hw/block/nvme: end-to-end data protection, Klaus Jensen, 2021/03/10
- [PATCH v5 05/13] hw/block/nvme: add non-mdts command size limit for verify, Klaus Jensen, 2021/03/10
- [PATCH v5 09/13] hw/block/nvme: parameterize nvme_ns_nlbas, Klaus Jensen, 2021/03/10
- [PATCH v5 11/13] hw/block/nvme: move zoned constraints checks,
Klaus Jensen <=
- [PATCH v5 08/13] hw/block/nvme: pull lba format initialization, Klaus Jensen, 2021/03/10
- [PATCH v5 12/13] hw/block/nvme: split zone check/set geometry, Klaus Jensen, 2021/03/10
- [PATCH v5 10/13] hw/block/nvme: remove invalid zone resource checks, Klaus Jensen, 2021/03/10
- [PATCH v5 13/13] hw/block/nvme: add support for the format nvm command, Klaus Jensen, 2021/03/10
- Re: [PATCH v5 00/13] hw/block/nvme: metadata and end-to-end data protection support, Klaus Jensen, 2021/03/15