2022-02-17 06:46:23

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 1/2] uio: add ioctl to uio

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 <[email protected]>
> Signed-off-by: Guixin Liu <[email protected]>
> ---
> 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.

thanks,

greg k-h


2022-02-17 15:40:38

by Xiaoguang Wang

[permalink] [raw]
Subject: Re: [PATCH 1/2] uio: add ioctl to uio


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 <[email protected]>
>> Signed-off-by: Guixin Liu <[email protected]>
>> ---
>> 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/[email protected]/

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