All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org
Subject: Re: [PATCH 01/11] block: improve the kerneldoc comments for submit_bio and generic_make_request
Date: Sun, 26 Apr 2020 10:59:44 +0800	[thread overview]
Message-ID: <20200426025944.GB512559@T590> (raw)
In-Reply-To: <20200425170944.968861-2-hch@lst.de>

On Sat, Apr 25, 2020 at 07:09:34PM +0200, Christoph Hellwig wrote:
> The current documentation is a little weird, as it doesn't clearly
> explain which function to use, and also has the guts of the information
> on generic_make_request, which is the internal interface for stacking
> drivers.
> 
> Fix this up by properly documenting submit_bio, and only documenting
> the differences and the use case for generic_make_request.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  block/blk-core.c | 35 ++++++++++++-----------------------
>  1 file changed, 12 insertions(+), 23 deletions(-)
> 
> diff --git a/block/blk-core.c b/block/blk-core.c
> index dffff21008886..68351ee94ad2e 100644
> --- a/block/blk-core.c
> +++ b/block/blk-core.c
> @@ -992,28 +992,13 @@ generic_make_request_checks(struct bio *bio)
>  }
>  
>  /**
> - * generic_make_request - hand a buffer to its device driver for I/O
> + * generic_make_request - re-submit a bio to the block device layer for I/O
>   * @bio:  The bio describing the location in memory and on the device.
>   *
> - * generic_make_request() is used to make I/O requests of block
> - * devices. It is passed a &struct bio, which describes the I/O that needs
> - * to be done.
> - *
> - * generic_make_request() does not return any status.  The
> - * success/failure status of the request, along with notification of
> - * completion, is delivered asynchronously through the bio->bi_end_io
> - * function described (one day) else where.
> - *
> - * The caller of generic_make_request must make sure that bi_io_vec
> - * are set to describe the memory buffer, and that bi_dev and bi_sector are
> - * set to describe the device address, and the
> - * bi_end_io and optionally bi_private are set to describe how
> - * completion notification should be signaled.
> - *
> - * generic_make_request and the drivers it calls may use bi_next if this
> - * bio happens to be merged with someone else, and may resubmit the bio to
> - * a lower device by calling into generic_make_request recursively, which
> - * means the bio should NOT be touched after the call to ->make_request_fn.
> + * This is a version of submit_bio() that shall only be used for I/O that is
> + * resubmitted to lower level drivers by stacking block drivers.  All file

No, generic_make_request() can be used by any block driver instead of
stacking drivers, see bio split, blk_throttle.c and bounce, maybe more.


Thanks, 
Ming


  reply	other threads:[~2020-04-26  3:00 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-25 17:09 [RFC] more make_request optimizations Christoph Hellwig
2020-04-25 17:09 ` [PATCH 01/11] block: improve the kerneldoc comments for submit_bio and generic_make_request Christoph Hellwig
2020-04-26  2:59   ` Ming Lei [this message]
2020-04-25 17:09 ` [PATCH 02/11] block: cleanup the memory stall accounting in submit_bio Christoph Hellwig
2020-04-25 17:09 ` [PATCH 03/11] block: replace BIO_QUEUE_ENTERED with BIO_CGROUP_ACCT Christoph Hellwig
2020-04-25 17:09 ` [PATCH 04/11] block: add a bio_queue_enter helper Christoph Hellwig
2020-04-25 17:09 ` [PATCH 05/11] block: refactor generic_make_request Christoph Hellwig
2020-04-25 17:09 ` [PATCH 06/11] block: optimize generic_make_request for direct to blk-mq issue Christoph Hellwig
2020-04-26  2:53   ` Ming Lei
2020-04-27 15:10     ` Christoph Hellwig
2020-04-25 17:09 ` [PATCH 07/11] block: optimize do_make_request " Christoph Hellwig
2020-04-25 17:09 ` [PATCH 08/11] block: move the call to blk_queue_enter_live out of blk_mq_get_request Christoph Hellwig
2020-04-25 17:09 ` [PATCH 09/11] block: remove a pointless queue enter pair in blk_mq_alloc_request Christoph Hellwig
2020-04-25 17:09 ` [PATCH 10/11] block: remove a pointless queue enter pair in blk_mq_alloc_request_hctx Christoph Hellwig
2020-04-25 17:09 ` [PATCH 11/11] block: allow blk_mq_make_request to consume the q_usage_counter reference Christoph Hellwig

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=20200426025944.GB512559@T590 \
    --to=ming.lei@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=hch@lst.de \
    --cc=linux-block@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.