From: Minwoo Im <minwoo.im.dev@gmail.com>
To: Klaus Jensen <its@irrelevant.dk>
Cc: Keith Busch <kbusch@kernel.org>, Kevin Wolf <kwolf@redhat.com>,
qemu-devel@nongnu.org, qemu-block@nongnu.org,
Max Reitz <mreitz@redhat.com>
Subject: Re: [RFC PATCH V2 02/11] hw/block/nvme: open code for volatile write cache
Date: Tue, 19 Jan 2021 17:04:01 +0900 [thread overview]
Message-ID: <20210119080401.GH5939@localhost.localdomain> (raw)
In-Reply-To: <YAaLBWVT+g5q/paE@apples.localdomain>
On 21-01-19 08:32:21, Klaus Jensen wrote:
> On Jan 17 23:53, Minwoo Im wrote:
> > Volatile Write Cache(VWC) feature is set in nvme_ns_setup() in the
> > initial time. This feature is related to block device backed, but this
> > feature is controlled in controller level via Set/Get Features command.
> >
> > This patch removed dependency between nvme and nvme-ns to manage the VWC
> > flag value. Also, it open coded the Get Features for VWC to check all
> > namespaces attached to the controller, and if false detected, return
> > directly false.
> >
> > Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
> > ---
> > hw/block/nvme-ns.c | 4 ----
> > hw/block/nvme.c | 15 ++++++++++++---
> > hw/block/nvme.h | 1 -
> > 3 files changed, 12 insertions(+), 8 deletions(-)
> >
> > diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c
> > index 32662230130b..c403cd36b6bd 100644
> > --- a/hw/block/nvme-ns.c
> > +++ b/hw/block/nvme-ns.c
> > @@ -89,10 +89,6 @@ static int nvme_ns_init_blk(NvmeCtrl *n, NvmeNamespace *ns, Error **errp)
> > return -1;
> > }
> >
> > - if (blk_enable_write_cache(ns->blkconf.blk)) {
> > - n->features.vwc = 0x1;
> > - }
> > -
> > return 0;
> > }
> >
> > diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> > index cf0fe28fe6eb..b2a9c48a9d81 100644
> > --- a/hw/block/nvme.c
> > +++ b/hw/block/nvme.c
> > @@ -3033,6 +3033,7 @@ static uint16_t nvme_get_feature(NvmeCtrl *n, NvmeRequest *req)
> > NvmeGetFeatureSelect sel = NVME_GETFEAT_SELECT(dw10);
> > uint16_t iv;
> > NvmeNamespace *ns;
> > + int i;
> >
> > static const uint32_t nvme_feature_default[NVME_FID_MAX] = {
> > [NVME_ARBITRATION] = NVME_ARB_AB_NOLIMIT,
> > @@ -3108,7 +3109,17 @@ static uint16_t nvme_get_feature(NvmeCtrl *n, NvmeRequest *req)
> > result = ns->features.err_rec;
> > goto out;
> > case NVME_VOLATILE_WRITE_CACHE:
> > - result = n->features.vwc;
> > + for (i = 1; i <= n->num_namespaces; i++) {
> > + ns = nvme_ns(n, i);
> > + if (!ns) {
> > + continue;
> > + }
> > +
> > + result = blk_enable_write_cache(ns->blkconf.blk);
> > + if (!result) {
> > + break;
> > + }
> > + }
>
> I did a small tweak here and changed `if (!result)` to `if (result)`. We
> want to report that a volatile write cache is present if ANY of the
> namespace backing devices have a write cache.
Oh.... Thanks for the fix!
next prev parent reply other threads:[~2021-01-19 8:05 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-17 14:53 [RFC PATCH V2 00/11] hw/block/nvme: support multi-path for ctrl/ns Minwoo Im
2021-01-17 14:53 ` [RFC PATCH V2 01/11] hw/block/nvme: remove unused argument in nvme_ns_init_zoned Minwoo Im
2021-01-18 20:00 ` Klaus Jensen
2021-01-17 14:53 ` [RFC PATCH V2 02/11] hw/block/nvme: open code for volatile write cache Minwoo Im
2021-01-18 20:04 ` Klaus Jensen
2021-01-19 7:32 ` Klaus Jensen
2021-01-19 8:04 ` Minwoo Im [this message]
2021-02-11 6:45 ` Sai Pavan Boddu
2021-02-11 6:58 ` Sai Pavan Boddu
2021-01-17 14:53 ` [RFC PATCH V2 03/11] hw/block/nvme: remove unused argument in nvme_ns_init_blk Minwoo Im
2021-01-18 20:05 ` Klaus Jensen
2021-01-17 14:53 ` [RFC PATCH V2 04/11] hw/block/nvme: split setup and register for namespace Minwoo Im
2021-01-18 20:08 ` Klaus Jensen
2021-01-17 14:53 ` [RFC PATCH V2 05/11] hw/block/nvme: remove unused argument in nvme_ns_setup Minwoo Im
2021-01-18 20:09 ` Klaus Jensen
2021-01-17 14:53 ` [RFC PATCH V2 06/11] hw/block/nvme: introduce nvme-subsys device Minwoo Im
2021-01-17 14:53 ` [RFC PATCH V2 07/11] hw/block/nvme: support to map controller to a subsystem Minwoo Im
2021-01-17 14:53 ` [RFC PATCH V2 08/11] hw/block/nvme: add CMIC enum value for Identify Controller Minwoo Im
2021-01-17 14:53 ` [RFC PATCH V2 09/11] hw/block/nvme: support for multi-controller in subsystem Minwoo Im
2021-01-17 14:53 ` [RFC PATCH V2 10/11] hw/block/nvme: add NMIC enum value for Identify Namespace Minwoo Im
2021-01-18 20:25 ` Klaus Jensen
2021-01-19 2:12 ` Minwoo Im
2021-01-17 14:53 ` [RFC PATCH V2 11/11] hw/block/nvme: support for shared namespace in subsystem Minwoo Im
2021-01-18 21:14 ` [RFC PATCH V2 00/11] hw/block/nvme: support multi-path for ctrl/ns Klaus Jensen
2021-01-19 3:21 ` Minwoo Im
2021-01-19 6:04 ` Klaus Jensen
2021-01-19 7:51 ` Minwoo Im
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210119080401.GH5939@localhost.localdomain \
--to=minwoo.im.dev@gmail.com \
--cc=its@irrelevant.dk \
--cc=kbusch@kernel.org \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.