[dpdk-dev] [PATCH] examples/vhost: introduce a new vhost-user-scsi sample application
Liu, Changpeng
changpeng.liu at intel.com
Fri Jul 7 04:00:38 CEST 2017
> -----Original Message-----
> From: Yuanhan Liu [mailto:yliu at fridaylinux.org]
> Sent: Friday, July 7, 2017 8:51 AM
> To: Liu, Changpeng <changpeng.liu at intel.com>
> Cc: dev at dpdk.org
> Subject: Re: [PATCH] examples/vhost: introduce a new vhost-user-scsi sample
> application
>
> 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.
Okay, will add Qemu version and commit ID.
>
> > +
> > +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?
Typo, hardcoded 4096 now.
>
> > +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.
All the numbers are defined by SCSI specifications, I think this is okay, if you looked into kernel scsi module or
kernel LIO scsi target, they also used the specification numbers directly.
>
> BTW, you might want to build it on a 32bit system. I think this patch
> won't build successfully on it.
I didn't build it with 32bit system before, I don't know the result.
>
> --yliu
More information about the dev
mailing list