All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH V3 0/8] hw/block/nvme: support multi-path for ctrl/ns
@ 2021-01-19 17:01 Minwoo Im
  2021-01-19 17:01 ` [RFC PATCH V3 1/8] hw/block/nvme: introduce nvme-subsys device Minwoo Im
                   ` (8 more replies)
  0 siblings, 9 replies; 21+ messages in thread
From: Minwoo Im @ 2021-01-19 17:01 UTC (permalink / raw)
  To: qemu-devel, qemu-block
  Cc: Keith Busch, Klaus Jensen, Minwoo Im, Kevin Wolf, Max Reitz

Hello,

This patch series is third one to support multi-controller and namespace
sharing in multi-path.  This series introduced subsystem scheme to
manage controller(s) and namespace(s) in the subsystem.

This series has new patches from the V2:  'detached' parameter has been
added to the nvme-ns device.  This will decide whether to attach the
namespace to controller(s) in the current subsystem or not.  If it's
given with true, then it will be just allocated in the subsystem, but
not attaching to any controllers in the subsystem.  Otherwise, it will
automatically attach to all the controllers in the subsystem.  The other
t hing is that the last patch implemented Identify Active Namespace ID
List command handler apart from the Allocated Namespace ID List.

Run with:
  -device nvme,serial=qux,id=nvme3
  -device nvme-ns,id=ns3,drive=drv12,nsid=3,bus=nvme3

  -device nvme-subsys,id=subsys0
  -device nvme,serial=foo,id=nvme0,subsys=subsys0
  -device nvme,serial=bar,id=nvme1,subsys=subsys0
  -device nvme,serial=baz,id=nvme2,subsys=subsys0
  -device nvme-ns,id=ns1,drive=drv10,nsid=1,subsys=subsys0,detached=true
  -device nvme-ns,id=ns2,drive=drv11,nsid=2,bus=nvme2

nvme-cli:
  root@vm:~/work# nvme list -v                                                                                                      
  NVM Express Subsystems                                                                                                 
                                                                                                                                     
  Subsystem        Subsystem-NQN                                                                                    Controllers
  ---------------- ------------------------------------------------------------------------------------------------ ----------------
  nvme-subsys0     nqn.2019-08.org.qemu:qux                                                                         nvme0
  nvme-subsys1     nqn.2019-08.org.qemu:subsys0                                                                     nvme1, nvme2, nvme3
                                                                                                                                   
  NVM Express Controllers                                                                                           
                                                                                                                  
  Device   SN                   MN                                       FR       TxPort Address        Subsystem    Namespaces
  -------- -------------------- ---------------------------------------- -------- ------ -------------- ------------ ----------------
  nvme0    qux                  QEMU NVMe Ctrl                           1.0      pcie   0000:00:06.0   nvme-subsys0
  nvme1    foo                  QEMU NVMe Ctrl                           1.0      pcie   0000:00:07.0   nvme-subsys1
  nvme2    bar                  QEMU NVMe Ctrl                           1.0      pcie   0000:00:08.0   nvme-subsys1
  nvme3    baz                  QEMU NVMe Ctrl                           1.0      pcie   0000:00:09.0   nvme-subsys1 nvme1n1
                                                                                  
  NVM Express Namespaces                                                 
                                                                       
  Device       NSID     Usage                      Format           Controllers
  ------------ -------- -------------------------- ---------------- ----------------
  nvme0n1      3        268.44  MB / 268.44  MB    512   B +  0 B   nvme0
  nvme1n1      2        268.44  MB / 268.44  MB    512   B +  0 B   nvme3

Now we have [allocated|not-allocated]/[attached/detached] scheme for
namespaces and controllers.  The next series is going to be to support
namespace management and attachment with few Identify command handlers.

Please review.

Thanks!

Since RFC V2:
  - Rebased on nvme-next branch with trivial patches from the previous
    version(V2) applied. (Klaus)
  - Fix enumeration type name convention with NvmeIdNs prefix. (Klaus)
  - Put 'cntlid' to NvmeCtrl instance in nvme_init_ctrl() which was
    missed in V2.
  - Added 'detached' parameter to nvme-ns device to decide whether to
    attach or not to controller(s) in the subsystem. (Klaus)
  - Implemented Identify Active Namespace ID List aprt from Identify
    Allocated Namespace ID List by removing fall-thru statement.

Since RFC V1:
  - Updated namespace sharing scheme to be based on nvme-subsys
    hierarchy.

Minwoo Im (8):
  hw/block/nvme: introduce nvme-subsys device
  hw/block/nvme: support to map controller to a subsystem
  hw/block/nvme: add CMIC enum value for Identify Controller
  hw/block/nvme: support for multi-controller in subsystem
  hw/block/nvme: add NMIC enum value for Identify Namespace
  hw/block/nvme: support for shared namespace in subsystem
  hw/block/nvme: add 'detached' param not to attach namespace
  hw/block/nvme: Add Identify Active Namespace ID List

 hw/block/meson.build   |   2 +-
 hw/block/nvme-ns.c     |  32 ++++++++--
 hw/block/nvme-ns.h     |  13 ++++
 hw/block/nvme-subsys.c | 111 +++++++++++++++++++++++++++++++++
 hw/block/nvme-subsys.h |  32 ++++++++++
 hw/block/nvme.c        | 137 ++++++++++++++++++++++++++++++++++++++---
 hw/block/nvme.h        |  19 ++++++
 include/block/nvme.h   |   8 +++
 8 files changed, 340 insertions(+), 14 deletions(-)
 create mode 100644 hw/block/nvme-subsys.c
 create mode 100644 hw/block/nvme-subsys.h

-- 
2.17.1



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2021-01-21  9:55 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-19 17:01 [RFC PATCH V3 0/8] hw/block/nvme: support multi-path for ctrl/ns Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 1/8] hw/block/nvme: introduce nvme-subsys device Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 2/8] hw/block/nvme: support to map controller to a subsystem Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 3/8] hw/block/nvme: add CMIC enum value for Identify Controller Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 4/8] hw/block/nvme: support for multi-controller in subsystem Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 5/8] hw/block/nvme: add NMIC enum value for Identify Namespace Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 6/8] hw/block/nvme: support for shared namespace in subsystem Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 7/8] hw/block/nvme: add 'detached' param not to attach namespace Minwoo Im
2021-01-19 18:25   ` Klaus Jensen
2021-01-20  0:47     ` Minwoo Im
2021-01-19 17:01 ` [RFC PATCH V3 8/8] hw/block/nvme: Add Identify Active Namespace ID List Minwoo Im
2021-01-20 14:07   ` Niklas Cassel
2021-01-20 14:17     ` Klaus Jensen
2021-01-20 21:58     ` Minwoo Im
2021-01-21  9:53       ` Niklas Cassel
2021-01-19 18:18 ` [RFC PATCH V3 0/8] hw/block/nvme: support multi-path for ctrl/ns Klaus Jensen
2021-01-19 19:26   ` Keith Busch
2021-01-20  0:45     ` Minwoo Im
2021-01-20  0:44   ` Minwoo Im
2021-01-20  7:52     ` Klaus Jensen
2021-01-20 11:46       ` Minwoo Im

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.