linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Jens Axboe <axboe@fb.com>, Huang Ying <ying.huang@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-kernel@vger.kernel.org, linux-block@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH v3 20/49] block: introduce bio_for_each_segment_mp()
Date: Fri, 20 Oct 2017 07:37:32 +0800	[thread overview]
Message-ID: <20171019233731.GD27130@ming.t460p> (raw)
In-Reply-To: <20170810121110.GC14607@infradead.org>

On Thu, Aug 10, 2017 at 05:11:10AM -0700, Christoph Hellwig wrote:
> First: as mentioned in the previous patches I really hate the name
> scheme with the _sp and _mp postfixes.
> 
> To be clear and understandable we should always name the versions
> that iterate over segments *segment* and the ones that iterate over
> pages *page*.  To make sure we have a clean compile break for code
> using the old _segment name I'd suggest to move to pass the bvec_iter
> argument by reference, which is the right thing to do anyway.

The most confusing thing is that bio_for_each_segment() and
bio_for_each_segment_all() has been used to iterate pages for long time.
That is why I add _sp/_mp in this patchset to make the uses explicitly
and avoid to confuse people.

My plan is to switch to the real bio_for_each_segment() for iterating
real segment and bio_for_each_page() for iterating page after we reach
mutlipage bvec, and that is basically a mechanical change.

> As far as the implementation goes I don't think we actually need
> to pass the mp argument down.  Instead we always call the full-segment
> version of  bvec_iter_len / __bvec_iter_advance and then have an
> inner loop that moves the fake bvecs forward inside each full-segment
> one - that is implement the per-page version on top of the per-segment
> one.

For iterating in way of real segment(multipage bvec) instead of page, we
don't need the inner loop for moving page by page to the fake bvec, that
is why the 'mp' argument is introduced. If this argument is dropped, we
have to find another similar way to decide to fetch one segment or one
page each time.

-- 
Ming

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2017-10-19 23:37 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-08  8:44 [PATCH v3 00/49] block: support multipage bvec Ming Lei
2017-08-08  8:45 ` [PATCH v3 01/49] block: drbd: comment on direct access bvec table Ming Lei
2017-08-10 11:12   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 02/49] block: loop: comment on direct access to " Ming Lei
2017-08-08  8:45 ` [PATCH v3 03/49] kernel/power/swap.c: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 04/49] mm: page_io.c: " Ming Lei
2017-08-10 11:14   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 05/49] fs/buffer: " Ming Lei
2017-08-10 11:16   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 06/49] f2fs: f2fs_read_end_io: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 07/49] bcache: " Ming Lei
2017-08-08 12:36   ` Coly Li
2017-08-10 11:26   ` Christoph Hellwig
2017-10-19 22:51     ` Ming Lei
2017-08-08  8:45 ` [PATCH v3 08/49] block: comment on bio_alloc_pages() Ming Lei
2017-08-08  8:45 ` [PATCH v3 09/49] block: comment on bio_iov_iter_get_pages() Ming Lei
2017-08-10 11:28   ` Christoph Hellwig
2017-10-19 22:55     ` Ming Lei
2017-08-08  8:45 ` [PATCH v3 10/49] dm: limit the max bio size as BIO_MAX_PAGES * PAGE_SIZE Ming Lei
2017-08-10 11:29   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 11/49] btrfs: avoid access to .bi_vcnt directly Ming Lei
2017-08-10 11:29   ` Christoph Hellwig
2017-10-19 22:57     ` Ming Lei
2017-08-08  8:45 ` [PATCH v3 12/49] btrfs: avoid to access bvec table directly for a cloned bio Ming Lei
2017-08-08  8:45 ` [PATCH v3 13/49] btrfs: comment on direct access bvec table Ming Lei
2017-08-08  8:45 ` [PATCH v3 14/49] block: bounce: avoid direct access to " Ming Lei
2017-08-08  8:45 ` [PATCH v3 15/49] bvec_iter: introduce BVEC_ITER_ALL_INIT Ming Lei
2017-08-08  8:45 ` [PATCH v3 16/49] block: bounce: don't access bio->bi_io_vec in copy_to_high_bio_irq Ming Lei
2017-08-08  8:45 ` [PATCH v3 17/49] block: comments on bio_for_each_segment[_all] Ming Lei
2017-08-10 11:32   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 18/49] block: introduce multipage/single page bvec helpers Ming Lei
2017-08-10 12:00   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 19/49] block: implement sp version of bvec iterator helpers Ming Lei
2017-08-10 12:01   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 20/49] block: introduce bio_for_each_segment_mp() Ming Lei
2017-08-10 12:11   ` Christoph Hellwig
2017-10-19 23:37     ` Ming Lei [this message]
2017-08-08  8:45 ` [PATCH v3 21/49] blk-merge: compute bio->bi_seg_front_size efficiently Ming Lei
2017-08-10 12:11   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 22/49] block: blk-merge: try to make front segments in full size Ming Lei
2017-08-10 12:12   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 23/49] block: blk-merge: remove unnecessary check Ming Lei
2017-08-10 12:12   ` Christoph Hellwig
2017-08-08  8:45 ` [PATCH v3 24/49] block: use bio_for_each_segment_mp() to compute segments count Ming Lei
2017-08-08  8:45 ` [PATCH v3 25/49] block: use bio_for_each_segment_mp() to map sg Ming Lei
2017-08-08  8:45 ` [PATCH v3 26/49] block: introduce bvec_for_each_sp_bvec() Ming Lei
2017-08-08  8:45 ` [PATCH v3 27/49] block: bio: introduce single/multi page version of bio_for_each_segment_all() Ming Lei
2017-08-08  8:45 ` [PATCH v3 28/49] block: introduce bvec_get_last_page() Ming Lei
2017-08-08  8:45 ` [PATCH v3 29/49] fs/buffer.c: use bvec iterator to truncate the bio Ming Lei
2017-08-08  8:45 ` [PATCH v3 30/49] btrfs: use bvec_get_last_page to get bio's last page Ming Lei
2017-08-08  8:45 ` [PATCH v3 31/49] block: deal with dirtying pages for multipage bvec Ming Lei
2017-08-08  8:45 ` [PATCH v3 32/49] block: convert to singe/multi page version of bio_for_each_segment_all() Ming Lei
2017-08-08  8:45 ` [PATCH v3 33/49] bcache: convert to bio_for_each_segment_all_sp() Ming Lei
2017-08-08 12:35   ` Coly Li
2017-08-08  8:45 ` [PATCH v3 34/49] md: raid1: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 35/49] dm-crypt: don't clear bvec->bv_page in crypt_free_buffer_pages() Ming Lei
2017-08-08  8:45 ` [PATCH v3 36/49] dm-crypt: convert to bio_for_each_segment_all_sp() Ming Lei
2017-08-08  8:45 ` [PATCH v3 37/49] fs/mpage: " Ming Lei
2017-08-10 12:16   ` Christoph Hellwig
2017-10-19 23:58     ` Ming Lei
2017-08-08  8:45 ` [PATCH v3 38/49] fs/block: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 39/49] fs/iomap: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 40/49] ext4: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 41/49] xfs: " Ming Lei
2017-08-08 16:32   ` Darrick J. Wong
2017-10-19 23:52     ` Ming Lei
2017-08-08  8:45 ` [PATCH v3 42/49] gfs2: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 43/49] f2fs: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 44/49] exofs: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 45/49] fs: crypto: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 46/49] fs/btrfs: " Ming Lei
2017-08-08  9:00   ` Filipe Manana
2017-08-11 16:54   ` kbuild test robot
2017-08-08  8:45 ` [PATCH v3 47/49] fs/direct-io: " Ming Lei
2017-08-08  8:45 ` [PATCH v3 48/49] block: enable multipage bvecs Ming Lei
2017-08-18  1:24   ` [lkp-robot] [block] 434f2ea20d: fileio.requests_per_sec -3.1% regression kernel test robot
2017-08-08  8:45 ` [PATCH v3 49/49] block: bio: pass segments to bio if bio_add_page() is bypassed 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=20171019233731.GD27130@ming.t460p \
    --to=ming.lei@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@fb.com \
    --cc=hch@infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=ying.huang@intel.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).