All of lore.kernel.org
 help / color / mirror / Atom feed
From: Klaus Jensen <its@irrelevant.dk>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <fam@euphon.net>,
	qemu-block@nongnu.org, Klaus Jensen <k.jensen@samsung.com>,
	Max Reitz <mreitz@redhat.com>, Keith Busch <kbusch@kernel.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Klaus Jensen <its@irrelevant.dk>
Subject: [PATCH v5 00/12] hw/block/nvme: zoned namespace command set
Date: Fri, 27 Nov 2020 00:45:49 +0100	[thread overview]
Message-ID: <20201126234601.689714-1-its@irrelevant.dk> (raw)

From: Klaus Jensen <k.jensen@samsung.com>

Oi,

Things seem to have slowed down a bit on the zoned front, so in the
interest of moving things forward and catalyzing the process, I'm
posting a v5 of my series (v4 never got posted, but it's in my repo for
posterity, see below). I picked some preparatory patches from Dmitry and
rebased on that.

These patches apply on top of the "pmr/cmb coexist", "compare" and
"simple copy" series that I've posted previously.

An applied version is available here:

  https://irrelevant.dk/g/pci-nvme.git/tag/?h=zoned-v5

Changed for v5
~~~~~~~~~~~~~~

  * Rebased to work with the DULBE support, recently merged in
    nvme-next.

  * "hw/block/nvme: Separate read and write handlers"
  * "hw/block/nvme: Merge nvme_write_zeroes() with nvme_write()"
  * "hw/block/nvme: Generate namespace UUIDs"
    - Picked from Dmitry' series.

  * "hw/block/nvme: add commands supported and effects log page"
  * "hw/block/nvme: support namespace types"
    - Refactored and cribbed Keith's approach to CSE from the kb-zns
      branch and getting rid of the ugly macro initializers.

  * "hw/block/nvme: add persistence for zone info"
    - Marked RFC for obvious reasons.

Changes for v4
~~~~~~~~~~~~~~

  * "hw/block/nvme: add the zone management send command"
    - Use a pwrite_zeroes for zone reset instead of a discard.

Changes for v3
~~~~~~~~~~~~~~

  * Rebased on nvme-next with "[PATCH v2] hw/block/nvme: add dulbe
    support" applied.

  * "hw/block/nvme: add support for dulbe and block utilization tracking"
    - Dropped from this series. This series instead builds on the
      support for DULBE that I added in "[PATCH v2] hw/block/nvme: add
      dulbe support", previously posted.

  * "hw/block/nvme: add the zone management send command"
    - Use asynchronous discards.

  * "hw/block/nvme: add basic read/write for zoned namespaces"
  * "hw/block/nvme: add the zone management receive command"
  * "hw/block/nvme: add the zone management send command"
  * "hw/block/nvme: add the zone append command"
  * "hw/block/nvme: track and enforce zone resources"
  * "hw/block/nvme: allow open to close zone transitions by controller"
    - In compliance with the concensus I dropped zone persistence
      support from all patches.

Changes for v2
~~~~~~~~~~~~~~

  * "hw/block/nvme: add support for dulbe and block utilization tracking"
    - Factor out pstate init/load into separate functions.

    - Fixed a stupid off-by-1 bug that would trigger when resetting the
      last zone.

    - I added a more formalized pstate file format that includes a
      header. This is pretty similar to what is done in Dmitry's series,
      but with fewer fields. The device parameters for nvme-ns are still
      the "authoritative" ones, so if any parameters that influence LBA
      size, number of zones, etc. do not match, an error indicating the
      discrepancy will be produced. IIRC, Dmitry's version does the
      same.

      It is set up such that newer versions can load pstate files from
      older versions. The file format header is not unlike a standard
      nvme datastructure with reserved areas. This means that when
      adding new command sets that require persistent state, it is not
      needed to bump the version number, unless the header has to change
      dramatically.  This is demonstrated when the zoned namespace
      command set support is added in "hw/block/nvme: add basic
      read/write for zoned namespaces".

  * "hw/block/nvme: add basic read/write for zoned namespaces"
    - The device will now transition all opened zones to Closed on
      "normal shutdown". You can force the "transition to Full" behavior
      by killing QEMU from the monitor.

  * "hw/block/nvme: add the zone append command"
    - Slightly reordered the logic so a LBA Out of Range error is
      returned before Invalid Field in Command for normal read/write
      commands.

  * "hw/block/nvme: support zone active excursions"
    - Dropped. Optional and non-critical.

  * "hw/block/nvme: support reset/finish recommended limits"
    - Dropped. Optional and non-critical.

Dmitry Fomichev (3):
  hw/block/nvme: Separate read and write handlers
  hw/block/nvme: Merge nvme_write_zeroes() with nvme_write()
  hw/block/nvme: Generate namespace UUIDs

Gollu Appalanaidu (1):
  hw/block/nvme: add commands supported and effects log page

Klaus Jensen (8):
  hw/block/nvme: support namespace types
  hw/block/nvme: add basic read/write for zoned namespaces
  hw/block/nvme: add the zone management receive command
  hw/block/nvme: add the zone management send command
  hw/block/nvme: add the zone append command
  hw/block/nvme: track and enforce zone resources
  hw/block/nvme: allow open to close zone transitions by controller
  hw/block/nvme: add persistence for zone info

 docs/specs/nvme.txt   |   32 +
 hw/block/nvme-ns.h    |  127 +++-
 hw/block/nvme.h       |   10 +
 include/block/nvme.h  |  218 +++++-
 block/nvme.c          |    4 +-
 hw/block/nvme-ns.c    |  341 ++++++++-
 hw/block/nvme.c       | 1613 ++++++++++++++++++++++++++++++++++++++---
 hw/block/trace-events |   35 +-
 8 files changed, 2246 insertions(+), 134 deletions(-)

-- 
2.29.2



             reply	other threads:[~2020-11-26 23:49 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-26 23:45 Klaus Jensen [this message]
2020-11-26 23:45 ` [PATCH v5 01/12] hw/block/nvme: Separate read and write handlers Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 02/12] hw/block/nvme: Merge nvme_write_zeroes() with nvme_write() Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 03/12] hw/block/nvme: add commands supported and effects log page Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 04/12] hw/block/nvme: Generate namespace UUIDs Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 05/12] hw/block/nvme: support namespace types Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 06/12] hw/block/nvme: add basic read/write for zoned namespaces Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 07/12] hw/block/nvme: add the zone management receive command Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 08/12] hw/block/nvme: add the zone management send command Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 09/12] hw/block/nvme: add the zone append command Klaus Jensen
2020-11-26 23:45 ` [PATCH v5 10/12] hw/block/nvme: track and enforce zone resources Klaus Jensen
2020-11-26 23:46 ` [PATCH v5 11/12] hw/block/nvme: allow open to close zone transitions by controller Klaus Jensen
2020-11-26 23:46 ` [PATCH RFC v5 12/12] hw/block/nvme: add persistence for zone info Klaus Jensen
2020-11-30 12:33   ` Stefan Hajnoczi
2020-11-30 12:59     ` Klaus Jensen
2020-11-30 13:18       ` Klaus Jensen
2020-11-30 14:58       ` Stefan Hajnoczi

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=20201126234601.689714-1-its@irrelevant.dk \
    --to=its@irrelevant.dk \
    --cc=fam@euphon.net \
    --cc=k.jensen@samsung.com \
    --cc=kbusch@kernel.org \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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.