On Wed, 2017-03-08 at 23:42 +0530, Ankur Srivastava wrote: > Hi All, > > I am using null block devices on my Target side and here is my conf > file snap (app/nvmf_tgt/nvmf_tgt -c etc/spdk/nvmf.conf.in) > > [Subsystem1] >   NQN nqn.2016-06.io.spdk:cnode1 >   Core 0 >   Mode Virtual >   Listen RDMA 192.168.25.3:4420 >   SN SPDK00000000000001 >   Namespace Malloc0 > > [Subsystem2] >   NQN nqn.2016-06.io.spdk:cnode2 >   Core 1 >   Mode Virtual >   Listen RDMA 192.168.25.31:4420 >   SN SPDK00000000000001 >   Namespace Malloc1 > > > How can I create multiple controllers and how can I share namespace > like(Malloc0, Malloc1) between different controllers ?? A new controller will be created each time a new NVMe-oF host (initiator) connects to a subsystem. That controller will be able to see all of the namespaces within a subsystem. Note that we don't currently have emulation for NVMe reservations, so coordination will need to be done by the clients. So if you want to have a subsystem with two shared namespaces and two clients connected, just write: [Subsystem1] NQN nqn.2016-06.io.spdk:cnode1 Core 0 Mode Virtual Listen RDMA 192.168.25.3:4420 SN SPDK0000000000001 Namespace Malloc0 Namespace Malloc1 Start up the target with that config and then connect two clients to the same subsystem. They'll each see their own controller but share namespaces. The best way to think about NVMe controllers in NVMe-oF is that they're just sessions in the networking sense of the word. We even call them spdk_nvmf_session in our code, as opposed to spdk_nvmf_controller. This isn't an implementation choice that SPDK is making either - that's really the intended meaning of a controller in the NVMe-oF specification which sometimes refers to them as "controller sessions". > > > Regards > Ankur > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk