[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/9] hw/block/nvme: support per-namespace smart log
From: |
Klaus Jensen |
Subject: |
Re: [PATCH 3/9] hw/block/nvme: support per-namespace smart log |
Date: |
Fri, 2 Oct 2020 10:48:03 +0200 |
On Sep 30 15:04, Keith Busch wrote:
> Let the user specify a specific namespace if they want to get access
> stats for a specific namespace.
>
> Signed-off-by: Keith Busch <kbusch@kernel.org>
> ---
> hw/block/nvme.c | 66 +++++++++++++++++++++++++++-----------------
> include/block/nvme.h | 1 +
> 2 files changed, 41 insertions(+), 26 deletions(-)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 8d2b5be567..41389b2b09 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> static uint16_t nvme_smart_info(NvmeCtrl *n, uint8_t rae, uint32_t buf_len,
> uint64_t off, NvmeRequest *req)
> {
> uint32_t nsid = le32_to_cpu(req->cmd.nsid);
> -
> + struct nvme_stats stats = { 0 };
> + NvmeSmartLog smart = { 0 };
> uint32_t trans_len;
> + NvmeNamespace *ns;
> time_t current_ms;
> - uint64_t units_read = 0, units_written = 0;
> - uint64_t read_commands = 0, write_commands = 0;
> - NvmeSmartLog smart;
> -
> - if (nsid && nsid != 0xffffffff) {
> - return NVME_INVALID_FIELD | NVME_DNR;
> - }
>
> if (off >= sizeof(smart)) {
> return NVME_INVALID_FIELD | NVME_DNR;
> }
>
> - for (int i = 1; i <= n->num_namespaces; i++) {
> - NvmeNamespace *ns = nvme_ns(n, i);
> - if (!ns) {
> - continue;
> - }
> -
> - BlockAcctStats *s = blk_get_stats(ns->blkconf.blk);
> + if (nsid != 0xffffffff) {
> + ns = nvme_ns(n, nsid);
> + if (!ns)
> + return NVME_INVALID_NSID | NVME_DNR;
Btw, this is failing style check (missing braces).
signature.asc
Description: PGP signature