linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/12] block: cleanup direct access to bvec table
@ 2016-11-11 12:05 Ming Lei
  2016-11-11 12:05 ` [PATCH 04/12] target: avoid to access .bi_vcnt directly Ming Lei
  2016-11-22 15:53 ` [PATCH 00/12] block: cleanup direct access to bvec table Jens Axboe
  0 siblings, 2 replies; 4+ messages in thread
From: Ming Lei @ 2016-11-11 12:05 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Mike Snitzer, Ming Lei, Rasmus Villemoes,
	open list:NVM EXPRESS TARGET DRIVER, Keith Busch,
	open list:DEVICE-MAPPER  LVM, open list:TARGET SUBSYSTEM,
	Yijing Wang, open list:DRBD DRIVER, Hannes Reinecke,
	open list:TARGET SUBSYSTEM, Christoph Hellwig, Mike Christie,
	Guoqing Jiang, Johannes Thumshirn, Kent Overstreet, Coly Li,
	open list:SOFTWARE RAID Multiple Disks SUPPORT,
	open list:BCACHE BLOCK LAYER CACHE

Hi,

This patchset cleans up direct access to bvec table.

The 1st patch passes bvec table to bio_init(), so that
direct access to bvec table in bio initialization is avoided.

For other patches, most of them uses bio_add_page()
to replace hardcode style of adding page to bvec,
and others avoids to access bio->bi_vcnt.

The most special one is to use bvec iterator helpers
to implement .get_page/.next_page for dm-io.c

One big motivation is to prepare for supporting multipage
bvec, but this patchset is one good cleanup too even not
for that purpose.

Thanks,
Ming

Ming Lei (12):
  block: bio: pass bvec table to bio_init()
  block: drbd: remove impossible failure handling
  block: floppy: use bio_add_page()
  target: avoid to access .bi_vcnt directly
  bcache: debug: avoid to access .bi_io_vec directly
  dm: crypt: use bio_add_page()
  dm: use bvec iterator helpers to implement .get_page and .next_page
  dm: dm.c: replace 'bio->bi_vcnt == 1' with !bio_multiple_segments
  fs: logfs: convert to bio_add_page() in sync_request()
  fs: logfs: use bio_add_page() in __bdev_writeseg()
  fs: logfs: use bio_add_page() in do_erase()
  fs: logfs: remove unnecesary check

 block/bio.c                        |   8 ++-
 drivers/block/drbd/drbd_receiver.c |  14 +----
 drivers/block/floppy.c             |  10 ++--
 drivers/md/bcache/debug.c          |  11 ++--
 drivers/md/bcache/io.c             |   4 +-
 drivers/md/bcache/journal.c        |   4 +-
 drivers/md/bcache/movinggc.c       |   6 +--
 drivers/md/bcache/request.c        |   2 +-
 drivers/md/bcache/super.c          |  12 ++---
 drivers/md/bcache/writeback.c      |   5 +-
 drivers/md/dm-bufio.c              |   4 +-
 drivers/md/dm-crypt.c              |   8 +--
 drivers/md/dm-io.c                 |  34 ++++++++----
 drivers/md/dm-rq.c                 |   7 ++-
 drivers/md/dm.c                    |   2 +-
 drivers/md/multipath.c             |   2 +-
 drivers/md/raid5-cache.c           |   2 +-
 drivers/md/raid5.c                 |   9 +---
 drivers/nvme/target/io-cmd.c       |   4 +-
 drivers/target/target_core_pscsi.c |   8 +--
 fs/logfs/dev_bdev.c                | 106 +++++++++++++------------------------
 include/linux/bio.h                |   3 +-
 22 files changed, 107 insertions(+), 158 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 04/12] target: avoid to access .bi_vcnt directly
  2016-11-11 12:05 [PATCH 00/12] block: cleanup direct access to bvec table Ming Lei
@ 2016-11-11 12:05 ` Ming Lei
  2016-11-12 21:37   ` Sagi Grimberg
  2016-11-22 15:53 ` [PATCH 00/12] block: cleanup direct access to bvec table Jens Axboe
  1 sibling, 1 reply; 4+ messages in thread
From: Ming Lei @ 2016-11-11 12:05 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel
  Cc: linux-block, linux-fsdevel, Christoph Hellwig, Ming Lei,
	Nicholas A. Bellinger, open list:TARGET SUBSYSTEM,
	open list:TARGET SUBSYSTEM

When the bio is full, bio_add_pc_page() will return zero,
so use this way to handle full bio.

Also replace access to .bi_vcnt for pr_debug() with bio_segments().

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
---
 drivers/target/target_core_pscsi.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c
index 9125d9358dea..04d7aa7390d0 100644
--- a/drivers/target/target_core_pscsi.c
+++ b/drivers/target/target_core_pscsi.c
@@ -935,13 +935,9 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
 
 			rc = bio_add_pc_page(pdv->pdv_sd->request_queue,
 					bio, page, bytes, off);
-			if (rc != bytes)
-				goto fail;
-
 			pr_debug("PSCSI: bio->bi_vcnt: %d nr_vecs: %d\n",
-				bio->bi_vcnt, nr_vecs);
-
-			if (bio->bi_vcnt > nr_vecs) {
+				bio_segments(bio), nr_vecs);
+			if (rc != bytes) {
 				pr_debug("PSCSI: Reached bio->bi_vcnt max:"
 					" %d i: %d bio: %p, allocating another"
 					" bio\n", bio->bi_vcnt, i, bio);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 04/12] target: avoid to access .bi_vcnt directly
  2016-11-11 12:05 ` [PATCH 04/12] target: avoid to access .bi_vcnt directly Ming Lei
@ 2016-11-12 21:37   ` Sagi Grimberg
  0 siblings, 0 replies; 4+ messages in thread
From: Sagi Grimberg @ 2016-11-12 21:37 UTC (permalink / raw)
  To: Ming Lei, Jens Axboe, linux-kernel
  Cc: linux-block, linux-fsdevel, Christoph Hellwig,
	Nicholas A. Bellinger, open list:TARGET SUBSYSTEM,
	open list:TARGET SUBSYSTEM

Reviewed-by: Sagi Grimberg <sagi@grimberg.me>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 00/12] block: cleanup direct access to bvec table
  2016-11-11 12:05 [PATCH 00/12] block: cleanup direct access to bvec table Ming Lei
  2016-11-11 12:05 ` [PATCH 04/12] target: avoid to access .bi_vcnt directly Ming Lei
@ 2016-11-22 15:53 ` Jens Axboe
  1 sibling, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2016-11-22 15:53 UTC (permalink / raw)
  To: Ming Lei, linux-kernel
  Cc: linux-block, linux-fsdevel, Christoph Hellwig, Adrian Hunter,
	Coly Li, open list:DEVICE-MAPPER (LVM), open list:DRBD DRIVER,
	Eric Wheeler, Guoqing Jiang, Hannes Reinecke, Jiri Kosina,
	Johannes Thumshirn, Keith Busch, Kent Overstreet,
	open list:BCACHE (BLOCK LAYER CACHE),
	open list:NVM EXPRESS TARGET DRIVER,
	open list:SOFTWARE RAID (Multiple Disks) SUPPORT

On 11/11/2016 05:05 AM, Ming Lei wrote:
> Hi,
>
> This patchset cleans up direct access to bvec table.
>
> The 1st patch passes bvec table to bio_init(), so that
> direct access to bvec table in bio initialization is avoided.
>
> For other patches, most of them uses bio_add_page()
> to replace hardcode style of adding page to bvec,
> and others avoids to access bio->bi_vcnt.
>
> The most special one is to use bvec iterator helpers
> to implement .get_page/.next_page for dm-io.c
>
> One big motivation is to prepare for supporting multipage
> bvec, but this patchset is one good cleanup too even not
> for that purpose.

I've added the series, except 6-8, the dm parts. I updated some of the
descriptions/subjects to read a little better.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-22 15:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-11 12:05 [PATCH 00/12] block: cleanup direct access to bvec table Ming Lei
2016-11-11 12:05 ` [PATCH 04/12] target: avoid to access .bi_vcnt directly Ming Lei
2016-11-12 21:37   ` Sagi Grimberg
2016-11-22 15:53 ` [PATCH 00/12] block: cleanup direct access to bvec table Jens Axboe

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).