Re: [PATCH 1/2] uio: add ioctl to uio
From: Xiaoguang Wang
Date: Thu Feb 17 2022 - 07:30:47 EST
hi,
On Thu, Feb 17, 2022 at 10:29:21AM +0800, Guixin Liu wrote:
In TCMU, if backstore holds its own userspace buffer, for read cmd, the
data needs to be copied from userspace buffer to tcmu data area first,
and then needs to be copied from tcmu data area to scsi sgl pages again.
To solve this problem, add ioctl to uio to let userspace backstore can
copy data between scsi sgl pages and its own buffer directly.
Reviewed-by: Xiaoguang Wang <xiaoguang.wang@xxxxxxxxxxxxxxxxx>
Signed-off-by: Guixin Liu <kanie@xxxxxxxxxxxxxxxxx>
---
drivers/uio/uio.c | 22 ++++++++++++++++++++++
include/linux/uio_driver.h | 1 +
No, sorry, thie uio driver will not be adding ioctls to them. If you
need an ioctl, then you should not be using the UIO api but rather use a
custom character driver instead.
I found that early in 2015, there was developer trying to add ioctl
interface
to uio framework:
https://lore.kernel.org/lkml/20151005080149.GB1747@xxxxxxxxx/
Some of my customers use tcm_loop & tcmu to simulate block devices, it's
tcmu
driver that uses uio framework. There maybe more extra work if we tries
to replace
uio with a new character driver.
Currently tcmu has performance bottleneck, Guixin's patch uses ioctl
interface
to bypass tcmu data area. I also have implemented a tcmu zero-copy
feature that
allows tcmu driver map io request sgl's pages to user space, which uses
ioctl
to do this mapping work, similar to network
getsockopt(TCP_ZEROCOPY_RECEIVE).
I also understand your concerns about ioctl interface. Except that replacing
uio with a new character driver in tcmu, are there any less complicated
methods
to complete our needs? Thanks.
Regards,
Xiaoguang Wang
thanks,
greg k-h