From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4878589369475560761==" MIME-Version: 1.0 From: Daniel Verkamp Subject: Re: [SPDK] BDEV Registration Date: Thu, 20 Oct 2016 14:59:49 -0700 Message-ID: In-Reply-To: BBF528F7-1D11-45DB-B933-0F1BDC56D85F@cloudsimple.com List-ID: To: spdk@lists.01.org --===============4878589369475560761== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 10/20/2016 01:11 PM, Kumaraparameshwaran Rathnavel wrote: > Hi All, > > I have just started using SPDK. I am in need to implement a NVMe/F target= implementation using SPDK. I need to use the Virtual Subsystem. I see that= there is support for RAM disks and I am using it as reference to my Virtua= l implementation . > > There is a function called SPDK_BDEV_MODULE_REGISTER in the file lib/bdev= /malloc/blockdev_malloc.c. > > How is this function getting called? Who calls this function > > Regards > Param Hi Param, You can find the interface for writing new bdev modules in the header lib/bdev/bdev_module.h - this is where SPDK_BDEV_MODULE_REGISTER() is = defined. This macro creates a constructor function that adds your bdev = module's function pointer table (defined using a spdk_bdev_module_if) to = a global list. Later, when the bdev subsystem is initialized, each bdev module will = have its module_init function called, where it should create its bdevs = and register them using spdk_bdev_register(). Currently, all of the = bdevs in SPDK use our configuration file library to read from a common = conf file when determining which bdevs are created and what options to = use (e.g. the malloc bdev uses the [Malloc] section of the configuration = file). When registering a bdev, you must provide another set of function = pointers in fn_table which perform operations on the individual bdevs, = like creating a new I/O channel and submitting I/O requests on a channel. To hook up your bdev module in the NVMe over Fabrics target, you will = also want to modify mk/spdk.modules.mk to add your new module to the = BLOCKDEV_MODULES list. This adds linker options to all of the = applications in the SPDK tree that use bdev modules. Please let us know if you have any further questions - the bdev module = API is still somewhat in flux and not well documented. Thanks, -- Daniel --===============4878589369475560761==--