Hi Pawel, Thank you for your quick reply. I appreciate your help.
I’m sorry for the late response. I am glad to tell you that I have a working demo at last. I have managed to solve my problem. You were right about the IO channels. Function spdk_scsi_dev_allocate_io_channels() fails to allocate the IO channel for the virtio-scsi bdev target and function spdk_vhost_scsi_start() fails to verify its return value. My actual segfault was due to a race on the unique virtio-scsi bdev request queue between the creation and the destruction of the IO channel in the vhost device backend. This led to the IO channel pointer lun->io_channel being NULL after the vhost-user negotiation, and the bdev layer segfaulted when accessing it in response to an IO request. After discovering this, and spending quite some time debugging it, I searched the bug tracker and the commit history in case I had missed something. It seems this was a recently discovered bug, which has fortunately already been solved: https://github.com/spdk/spdk/commit/9ddf6438310cc97b346d805a5969af7507e84fde#diff-d361b53e911663e8c6c5890fb046a79b I had overlooked pulling from the official repo for a while, so I missed the patch. It works just fine after pulling the newest changes. So, I’ll make sure to work on the latest commits next time :) Thanks again, Nikos On 21/09/2018 10:31 πμ, Wodkowski, PawelX wrote: > Hi Nikos, > > About SPKD backtrace you got. There is something wrong with IO channel > allocation. > SPKD vhost-scsi should check the result of > spdk_scsi_dev_allocate_io_channels() in > spdk_vhost_scsi_dev_add_tgt(). But this result is not checked :( > You can add some check or assert there. > > Paweł