linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Ziyang Zhang <ZiyangZhang@linux.alibaba.com>
Cc: linux-kernel@vger.kernel.org,
	Miklos Szeredi <mszeredi@redhat.com>,
	Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>,
	Bernd Schubert <bschubert@ddn.com>,
	Pavel Begunkov <asml.silence@gmail.com>,
	io-uring@vger.kernel.org, Stefan Hajnoczi <stefanha@redhat.com>,
	linux-block@vger.kernel.org, Jens Axboe <axboe@kernel.dk>,
	Dan Williams <dan.j.williams@intel.com>,
	ming.lei@redhat.com
Subject: Re: [PATCH V5 16/16] block: ublk_drv: apply io_uring FUSED_CMD for supporting zero copy
Date: Wed, 29 Mar 2023 17:00:31 +0800	[thread overview]
Message-ID: <ZCP+L0ADCxHo5vSg@ovpn-8-26.pek2.redhat.com> (raw)
In-Reply-To: <2e3c20e0-a0be-eaf3-b288-c3c8fa31d1fa@linux.alibaba.com>

On Wed, Mar 29, 2023 at 10:57:53AM +0800, Ziyang Zhang wrote:
> On 2023/3/28 23:09, Ming Lei wrote:
> > Apply io_uring fused command for supporting zero copy:
> > 
> 
> [...]
> 
> >  
> > @@ -1374,7 +1533,12 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
> >  	if (!ubq || ub_cmd->q_id != ubq->q_id)
> >  		goto out;
> >  
> > -	if (ubq->ubq_daemon && ubq->ubq_daemon != current)
> > +	/*
> > +	 * The fused command reads the io buffer data structure only, so it
> > +	 * is fine to be issued from other context.
> > +	 */
> > +	if ((ubq->ubq_daemon && ubq->ubq_daemon != current) &&
> > +			(cmd_op != UBLK_IO_FUSED_SUBMIT_IO))
> >  		goto out;
> >  
> 
> Hi Ming,
> 
> What is your use case that fused io_uring cmd is issued from another thread?
> I think it is good practice to operate one io_uring instance in one thread
> only.

So far we limit io command has to be issued from the queue context,
which is still not friendly from userspace viewpoint, the reason is
that we can't get io_uring exit notification and ublk's use case is
very special since the queued io command may not be completed forever,
see:

https://lore.kernel.org/linux-fsdevel/ZBxTdCj60+s1aZqA@ovpn-8-16.pek2.redhat.com/

I remember that people raised concern about this implementation.

But for normal IO, it could be issued from io wq simply because of
link(dependency) or whatever, and userspace is still allowed to submit
io from another pthread via same io_uring ctx.


thanks,
Ming


  reply	other threads:[~2023-03-29  9:02 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-28 15:09 [PATCH V5 00/16] io_uring/ublk: add IORING_OP_FUSED_CMD Ming Lei
2023-03-28 15:09 ` [PATCH V5 01/16] io_uring: increase io_kiocb->flags into 64bit Ming Lei
2023-03-28 15:09 ` [PATCH V5 02/16] io_uring: add IORING_OP_FUSED_CMD Ming Lei
2023-03-28 17:33   ` kernel test robot
2023-03-28 15:09 ` [PATCH V5 03/16] io_uring: support normal SQE for fused command Ming Lei
2023-03-28 15:09 ` [PATCH V5 04/16] io_uring: support OP_READ/OP_WRITE for fused secondary request Ming Lei
2023-03-28 15:09 ` [PATCH V5 05/16] io_uring: support OP_SEND_ZC/OP_RECV " Ming Lei
2023-03-28 15:09 ` [PATCH V5 06/16] block: ublk_drv: add common exit handling Ming Lei
2023-03-28 15:09 ` [PATCH V5 07/16] block: ublk_drv: don't consider flush request in map/unmap io Ming Lei
2023-03-28 15:09 ` [PATCH V5 08/16] block: ublk_drv: add two helpers to clean up map/unmap request Ming Lei
2023-03-28 15:09 ` [PATCH V5 09/16] block: ublk_drv: clean up several helpers Ming Lei
2023-03-28 15:09 ` [PATCH V5 10/16] block: ublk_drv: cleanup 'struct ublk_map_data' Ming Lei
2023-03-28 15:09 ` [PATCH V5 11/16] block: ublk_drv: cleanup ublk_copy_user_pages Ming Lei
2023-03-28 15:09 ` [PATCH V5 12/16] block: ublk_drv: grab request reference when the request is handled by userspace Ming Lei
2023-03-28 15:09 ` [PATCH V5 13/16] block: ublk_drv: support to copy any part of request pages Ming Lei
2023-03-28 15:09 ` [PATCH V5 14/16] block: ublk_drv: add read()/write() support for ublk char device Ming Lei
2023-03-28 15:09 ` [PATCH V5 15/16] block: ublk_drv: don't check buffer in case of zero copy Ming Lei
2023-03-28 15:09 ` [PATCH V5 16/16] block: ublk_drv: apply io_uring FUSED_CMD for supporting " Ming Lei
2023-03-29  2:57   ` Ziyang Zhang
2023-03-29  9:00     ` Ming Lei [this message]
2023-03-29 10:01       ` Ziyang Zhang
2023-03-29 10:52         ` Ming Lei
2023-04-03  8:38           ` Ziyang Zhang
2023-04-03  9:22             ` Ming Lei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZCP+L0ADCxHo5vSg@ovpn-8-26.pek2.redhat.com \
    --to=ming.lei@redhat.com \
    --cc=ZiyangZhang@linux.alibaba.com \
    --cc=asml.silence@gmail.com \
    --cc=axboe@kernel.dk \
    --cc=bschubert@ddn.com \
    --cc=dan.j.williams@intel.com \
    --cc=io-uring@vger.kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mszeredi@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=xiaoguang.wang@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).