linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jinpu Wang <jinpu.wang@cloud.ionos.com>
To: Bart Van Assche <bvanassche@acm.org>
Cc: linux-block@vger.kernel.org, linux-rdma@vger.kernel.org,
	Jens Axboe <axboe@kernel.dk>,
	Christoph Hellwig <hch@infradead.org>,
	Sagi Grimberg <sagi@grimberg.me>,
	Leon Romanovsky <leon@kernel.org>,
	Doug Ledford <dledford@redhat.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Danil Kipnis <danil.kipnis@cloud.ionos.com>,
	Roman Penyaev <rpenyaev@suse.de>,
	Pankaj Gupta <pankaj.gupta@cloud.ionos.com>
Subject: Re: [PATCH v11 22/26] block/rnbd: server: functionality for IO submission to file or block dev
Date: Tue, 31 Mar 2020 12:06:05 +0200	[thread overview]
Message-ID: <CAMGffEkOM9k2A60OHPBbPqRPp09+D5DeThB3iMLFqnLjLc=QAg@mail.gmail.com> (raw)
In-Reply-To: <cfe1dba2-04f7-f74d-af90-c70dce4d85cf@acm.org>

On Sat, Mar 28, 2020 at 7:39 PM Bart Van Assche <bvanassche@acm.org> wrote:
>
> On 2020-03-20 05:16, Jack Wang wrote:
> > This provides helper functions for IO submission to file or block dev.
>
> Regarding the title of this patch: is file I/O still supported? Wasn't
> that support removed some time ago?
Sorry, we forget to update it, will fix.
>
> > +struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags,
> > +                            void (*io_cb)(void *priv, int error))
> > +{
> > +     struct rnbd_dev *dev;
> > +     int ret;
> > +
> > +     dev = kzalloc(sizeof(*dev), GFP_KERNEL);
> > +     if (!dev)
> > +             return ERR_PTR(-ENOMEM);
> > +
> > +     dev->blk_open_flags = flags;
> > +     dev->bdev = blkdev_get_by_path(path, flags, THIS_MODULE);
> > +     ret = PTR_ERR_OR_ZERO(dev->bdev);
> > +     if (ret)
> > +             goto err;
> > +
> > +     dev->blk_open_flags     = flags;
> > +     dev->io_cb              = io_cb;
> > +     bdevname(dev->bdev, dev->name);
> > +
> > +     return dev;
> > +
> > +err:
> > +     kfree(dev);
> > +     return ERR_PTR(ret);
> > +}
>
> This function only has one caller so io_cb is always equal to the
> argument passed by that single caller, namely rnbd_endio. If that
> argument and also dev->io_cb would be removed, would that make the hot
> path faster?
Sounds good, will do it.

>
> > +int rnbd_dev_submit_io(struct rnbd_dev *dev, sector_t sector, void *data,
> > +                     size_t len, u32 bi_size, enum rnbd_io_flags flags,
> > +                     short prio, void *priv)
> > +{
> > +     struct request_queue *q = bdev_get_queue(dev->bdev);
> > +     struct rnbd_dev_blk_io *io;
> > +     struct bio *bio;
> > +
> > +     /* check if the buffer is suitable for bdev */
> > +     if (WARN_ON(!blk_rq_aligned(q, (unsigned long)data, len)))
> > +             return -EINVAL;
>
> The blk_rq_aligned() check looks weird to me. bio_map_kern() can handle
> data buffers that do not match the DMA alignment requirements, so why to
> refuse data buffers that are not satisfy DMA alignment requirements?
We add the check since 2014 to make sure the data buffer is aligned.
AFAIR we nerver see the WARN triggered.
so will remove it.
>
> > +     /* Generate bio with pages pointing to the rdma buffer */
> > +     bio = bio_map_kern(q, data, len, GFP_KERNEL);
> > +     if (IS_ERR(bio))
> > +             return PTR_ERR(bio);
> > +
> > +     io = kmalloc(sizeof(*io), GFP_KERNEL);
> > +     if (unlikely(!io)) {
> > +             bio_put(bio);
> > +             return -ENOMEM;
> > +     }
> > +
> > +     io->dev         = dev;
> > +     io->priv        = priv;
> > +
> > +     bio->bi_end_io          = rnbd_dev_bi_end_io;
> > +     bio->bi_private         = io;
> > +     bio->bi_opf             = rnbd_to_bio_flags(flags);
> > +     bio->bi_iter.bi_sector  = sector;
> > +     bio->bi_iter.bi_size    = bi_size;
> > +     bio_set_prio(bio, prio);
> > +     bio_set_dev(bio, dev->bdev);
>
> I think Jason strongly prefers to have a single space at the left of the
> assignment operator.
ok.
>
> Thanks,
>
> Bart.
Thanks!

  reply	other threads:[~2020-03-31 10:06 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-20 12:16 [PATCH v11 00/26] RTRS (former IBTRS) RDMA Transport Library and RNBD (former IBNBD) RDMA Network Block Device Jack Wang
2020-03-20 12:16 ` [PATCH v11 01/26] sysfs: export sysfs_remove_file_self() Jack Wang
2020-03-20 12:16 ` [PATCH v11 02/26] RDMA/rtrs: public interface header to establish RDMA connections Jack Wang
2020-03-20 12:16 ` [PATCH v11 03/26] RDMA/rtrs: private headers with rtrs protocol structs and helpers Jack Wang
2020-03-20 12:16 ` [PATCH v11 04/26] RDMA/rtrs: core: lib functions shared between client and server modules Jack Wang
2020-03-28  4:26   ` Bart Van Assche
2020-03-30 10:34     ` Jinpu Wang
2020-03-30 22:25       ` Bart Van Assche
2020-03-31  7:11         ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 05/26] RDMA/rtrs: client: private header with client structs and functions Jack Wang
2020-03-20 12:16 ` [PATCH v11 06/26] RDMA/rtrs: client: main functionality Jack Wang
2020-03-20 12:16 ` [PATCH v11 07/26] RDMA/rtrs: client: statistics functions Jack Wang
2020-03-20 12:16 ` [PATCH v11 08/26] RDMA/rtrs: client: sysfs interface functions Jack Wang
2020-03-30 22:28   ` Bart Van Assche
2020-03-31  7:20     ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 09/26] RDMA/rtrs: server: private header with server structs and functions Jack Wang
2020-03-20 12:16 ` [PATCH v11 10/26] RDMA/rtrs: server: main functionality Jack Wang
2020-03-20 12:16 ` [PATCH v11 11/26] RDMA/rtrs: server: statistics functions Jack Wang
2020-03-20 12:16 ` [PATCH v11 12/26] RDMA/rtrs: server: sysfs interface functions Jack Wang
2020-03-30 22:29   ` Bart Van Assche
2020-03-31  7:13     ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 13/26] RDMA/rtrs: include client and server modules into kernel compilation Jack Wang
2020-03-20 12:16 ` [PATCH v11 14/26] RDMA/rtrs: a bit of documentation Jack Wang
2020-03-20 12:16 ` [PATCH v11 15/26] block: reexport bio_map_kern Jack Wang
2020-03-28  3:58   ` Bart Van Assche
2020-03-28  8:29     ` Christoph Hellwig
2020-03-28 16:16       ` Bart Van Assche
2020-03-29 15:05         ` Christoph Hellwig
2020-03-29 18:08           ` Chaitanya Kulkarni
2020-03-30  6:28             ` hch
2020-03-30 10:44           ` Jinpu Wang
2020-03-30 18:57             ` Chaitanya Kulkarni
2020-03-20 12:16 ` [PATCH v11 16/26] block/rnbd: private headers with rnbd protocol structs and helpers Jack Wang
2020-03-28  4:58   ` Bart Van Assche
2020-03-31  7:32     ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 17/26] block/rnbd: client: private header with client structs and functions Jack Wang
2020-03-28  4:26   ` Bart Van Assche
2020-03-31  9:08     ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 18/26] block/rnbd: client: main functionality Jack Wang
2020-03-28  4:45   ` Bart Van Assche
2020-03-31  9:23     ` Jinpu Wang
2020-04-02 16:27       ` Jinpu Wang
2020-03-28  4:59   ` Bart Van Assche
2020-03-31  9:25     ` Jinpu Wang
2020-03-31 14:12       ` Bart Van Assche
2020-03-31 14:20         ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 19/26] block/rnbd: client: sysfs interface functions Jack Wang
2020-03-28  4:59   ` Bart Van Assche
2020-03-31  9:26     ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 20/26] block/rnbd: server: private header with server structs and functions Jack Wang
2020-03-20 12:16 ` [PATCH v11 21/26] block/rnbd: server: main functionality Jack Wang
2020-03-28 17:40   ` Bart Van Assche
2020-03-31  9:29     ` Jinpu Wang
2020-03-31 15:32       ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 22/26] block/rnbd: server: functionality for IO submission to file or block dev Jack Wang
2020-03-28 18:39   ` Bart Van Assche
2020-03-31 10:06     ` Jinpu Wang [this message]
2020-03-20 12:16 ` [PATCH v11 23/26] block/rnbd: server: sysfs interface functions Jack Wang
2020-03-28 19:31   ` Bart Van Assche
2020-03-28 23:06     ` Jason Gunthorpe
2020-03-30 13:14     ` Danil Kipnis
2020-03-20 12:16 ` [PATCH v11 24/26] block/rnbd: include client and server modules into kernel compilation Jack Wang
2020-03-28 19:34   ` Bart Van Assche
2020-03-31  7:23     ` Jinpu Wang
2020-03-20 12:16 ` [PATCH v11 25/26] block/rnbd: a bit of documentation Jack Wang
2020-03-28 19:40   ` Bart Van Assche
2020-03-30 10:17     ` Danil Kipnis
2020-03-20 12:16 ` [PATCH v11 26/26] MAINTAINERS: Add maintainers for RNBD/RTRS modules Jack Wang
2020-03-28 19:40   ` Bart Van Assche
2020-03-30 10:12     ` Danil Kipnis
2020-03-26 17:38 ` [PATCH v11 00/26] RTRS (former IBTRS) RDMA Transport Library and RNBD (former IBNBD) RDMA Network Block Device Jinpu Wang

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='CAMGffEkOM9k2A60OHPBbPqRPp09+D5DeThB3iMLFqnLjLc=QAg@mail.gmail.com' \
    --to=jinpu.wang@cloud.ionos.com \
    --cc=axboe@kernel.dk \
    --cc=bvanassche@acm.org \
    --cc=danil.kipnis@cloud.ionos.com \
    --cc=dledford@redhat.com \
    --cc=hch@infradead.org \
    --cc=jgg@ziepe.ca \
    --cc=leon@kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=pankaj.gupta@cloud.ionos.com \
    --cc=rpenyaev@suse.de \
    --cc=sagi@grimberg.me \
    /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).