[dpdk-dev] [PATCH] examples/vhost: introduce a new vhost-user-scsi sample application
Yuanhan Liu
yliu at fridaylinux.org
Fri Jul 7 02:50:35 CEST 2017
On Thu, Jun 29, 2017 at 05:28:32PM +0800, Changpeng Liu wrote:
> +.. note::
> + You must check whether you Qemu can support "vhost-user-scsi" or not,
> + the latest Qemu code is recommended.
You should specify the least QEMU version that supports vhost-user scsi here.
> +
> +Common Issues
> +-------------
> +
> +* QEMU fails to allocate memory on hugetlbfs, with an error like the
> + following::
> +
> + file_ram_alloc: can't mmap RAM pages: Cannot allocate memory
> +
> + When running QEMU the above error indicates that it has failed to allocate
> + memory for the Virtual Machine on the hugetlbfs. This is typically due to
> + insufficient hugepages being free to support the allocation request. The
> + number of free hugepages can be checked as follows:
> +
> + .. code-block:: console
> +
> + cat /sys/kernel/mm/hugepages/hugepages-<pagesize>/nr_hugepages
> +
> + The command above indicates how many hugepages are free to support QEMU's
> + allocation request.
> +
> +* vhost-user will not work with a QEMU version without shared memory mapping:
> +
> + Make sure ``share=on`` QEMU option is given.
They are common pitfalls of vhost-user examples. You don't have to repeat
it again here. Instead, you could add a link to the vhost-example doc and
let this section only cover issues belong to vhost-user scsi.
> +* vhost_scsi can not start with block size 512 Bytes:
> +
> + Currently DPDK vhost library was designed for NET device(althrough the APIs
> + are generic now), for 512 Bytes block device, Qemu BIOS(x86 BIOS Enhanced
> + Disk Device) will enumerate all block device and do some IO to those block
> + devices with 512 Bytes sector size. DPDK vhost library can not process such
> + scenarios(both BIOS and OS will enumerate the block device), so as a
> + workaround, the vhost_scsi example application hardcoded the block size
> + with 512 Bytes.
A bit confused here. You said we can not use 512 bytes while you hardcode it
with 512 bytes?
> +static void
> +scsi_task_build_sense_data(struct vhost_scsi_task *task, int sk,
> + int asc, int ascq)
> +{
> + uint8_t *cp;
> + int resp_code;
> +
> + resp_code = 0x70; /* Current + Fixed format */
Could you add macros for those magic numbers? I saw quite a lot of them.
BTW, you might want to build it on a 32bit system. I think this patch
won't build successfully on it.
--yliu
More information about the dev
mailing list