Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1167501
| From | Dan Williams <dan.j.williams@intel.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 11/15] libnvdimm: pmem, blk, and btt make_request cleanups |
| Date | 2015-06-18 02:10 +0200 |
| Message-ID | <pCvz3-gO-5@gated-at.bofh.it> (permalink) |
| References | <pCvpn-8ib-9@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Various cleanups:
1/ kill the BUG_ONs since we've already told the block layer we don't
support DISCARD on all these drivers.
2/ Fix up use of 'rw'. No need to cache it in the pmem driver and for
btt using bio_data_dir() saves a check for READA.
3/ Kill the local 'sector' variables. bio_for_each_segment() is already
advancing the iterator's sector number by the bio_vec length.
Reviewed-by: Vishal Verma <vishal.l.verma@linux.intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
drivers/nvdimm/blk.c | 14 ++++----------
drivers/nvdimm/btt.c | 18 +++++-------------
drivers/nvdimm/pmem.c | 20 ++++++--------------
3 files changed, 15 insertions(+), 37 deletions(-)
diff --git a/drivers/nvdimm/blk.c b/drivers/nvdimm/blk.c
index 8a6345797a71..9d609ef95266 100644
--- a/drivers/nvdimm/blk.c
+++ b/drivers/nvdimm/blk.c
@@ -170,18 +170,12 @@ static void nd_blk_make_request(struct request_queue *q, struct bio *bio)
struct bvec_iter iter;
struct bio_vec bvec;
int err = 0, rw;
- sector_t sector;
- sector = bio->bi_iter.bi_sector;
- if (bio_end_sector(bio) > get_capacity(disk)) {
+ if (unlikely(bio_end_sector(bio) > get_capacity(disk))) {
err = -EIO;
goto out;
}
- BUG_ON(bio->bi_rw & REQ_DISCARD);
-
- rw = bio_data_dir(bio);
-
/*
* bio_integrity_enabled also checks if the bio already has an
* integrity payload attached. If it does, we *don't* do a
@@ -196,20 +190,20 @@ static void nd_blk_make_request(struct request_queue *q, struct bio *bio)
bip = bio_integrity(bio);
blk_dev = disk->private_data;
+ rw = bio_data_dir(bio);
bio_for_each_segment(bvec, bio, iter) {
unsigned int len = bvec.bv_len;
BUG_ON(len > PAGE_SIZE);
err = nd_blk_do_bvec(blk_dev, bip, bvec.bv_page, len,
- bvec.bv_offset, rw, sector);
+ bvec.bv_offset, rw, iter.bi_sector);
if (err) {
dev_info(&blk_dev->nsblk->dev,
"io error in %s sector %lld, len %d,\n",
(rw == READ) ? "READ" : "WRITE",
- (unsigned long long) sector, len);
+ (unsigned long long) iter.bi_sector, len);
goto out;
}
- sector += len >> SECTOR_SHIFT;
}
out:
diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
index 380e01cedd24..83b798dd2e68 100644
--- a/drivers/nvdimm/btt.c
+++ b/drivers/nvdimm/btt.c
@@ -1177,23 +1177,16 @@ static void btt_make_request(struct request_queue *q, struct bio *bio)
struct bio_integrity_payload *bip = bio_integrity(bio);
struct block_device *bdev = bio->bi_bdev;
struct btt *btt = q->queuedata;
- int rw;
- struct bio_vec bvec;
- sector_t sector;
struct bvec_iter iter;
- int err = 0;
+ struct bio_vec bvec;
+ int err = 0, rw;
- sector = bio->bi_iter.bi_sector;
if (bio_end_sector(bio) > get_capacity(bdev->bd_disk)) {
err = -EIO;
goto out;
}
- BUG_ON(bio->bi_rw & REQ_DISCARD);
-
- rw = bio_rw(bio);
- if (rw == READA)
- rw = READ;
+ rw = bio_data_dir(bio);
/*
* bio_integrity_enabled also checks if the bio already has an
@@ -1216,15 +1209,14 @@ static void btt_make_request(struct request_queue *q, struct bio *bio)
BUG_ON(len % btt->sector_size);
err = btt_do_bvec(btt, bip, bvec.bv_page, len, bvec.bv_offset,
- rw, sector);
+ rw, iter.bi_sector);
if (err) {
dev_info(&btt->nd_btt->dev,
"io error in %s sector %lld, len %d,\n",
(rw == READ) ? "READ" : "WRITE",
- (unsigned long long) sector, len);
+ (unsigned long long) iter.bi_sector, len);
goto out;
}
- sector += len >> SECTOR_SHIFT;
}
out:
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index b825a2201aa8..0337b00f5409 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -58,28 +58,20 @@ static void pmem_do_bvec(struct pmem_device *pmem, struct page *page,
static void pmem_make_request(struct request_queue *q, struct bio *bio)
{
- struct block_device *bdev = bio->bi_bdev;
- struct pmem_device *pmem = bdev->bd_disk->private_data;
- int rw;
+ int err = 0;
struct bio_vec bvec;
- sector_t sector;
struct bvec_iter iter;
- int err = 0;
+ struct block_device *bdev = bio->bi_bdev;
+ struct pmem_device *pmem = bdev->bd_disk->private_data;
- if (bio_end_sector(bio) > get_capacity(bdev->bd_disk)) {
+ if (unlikely(bio_end_sector(bio) > get_capacity(bdev->bd_disk))) {
err = -EIO;
goto out;
}
- BUG_ON(bio->bi_rw & REQ_DISCARD);
-
- rw = bio_data_dir(bio);
- sector = bio->bi_iter.bi_sector;
- bio_for_each_segment(bvec, bio, iter) {
+ bio_for_each_segment(bvec, bio, iter)
pmem_do_bvec(pmem, bvec.bv_page, bvec.bv_len, bvec.bv_offset,
- rw, sector);
- sector += bvec.bv_len >> 9;
- }
+ bio_data_dir(bio), iter.bi_sector);
out:
bio_endio(bio, err);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/15] libnvdimm: ->rw_bytes(), BLK-mode, unit tests, and misc features Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:00 +0200
[PATCH 12/15] libnvdimm: enable iostat Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:00 +0200
Re: [PATCH 12/15] libnvdimm: enable iostat Christoph Hellwig <hch@lst.de> - 2015-06-19 10:40 +0200
Re: [PATCH 12/15] libnvdimm: enable iostat Dan Williams <dan.j.williams@intel.com> - 2015-06-19 11:10 +0200
Re: [PATCH 12/15] libnvdimm: enable iostat Christoph Hellwig <hch@lst.de> - 2015-06-21 12:20 +0200
[PATCH 07/15] fs/block_dev.c: skip rw_page if bdev has integrity Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:00 +0200
[PATCH 13/15] libnvdimm: flag libnvdimm block devices as non-rotational Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:00 +0200
[PATCH 01/15] block: introduce an ->rw_bytes() block device operation Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:00 +0200
Re: [PATCH 01/15] block: introduce an ->rw_bytes() block device operation Dan Williams <dan.j.williams@intel.com> - 2015-06-18 21:30 +0200
[PATCH 09/15] libnvdimm, blk: add support for blk integrity Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:00 +0200
[PATCH 15/15] libnvdimm, nfit: handle acpi_nfit_memory_map flags Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:00 +0200
[PATCH 11/15] libnvdimm: pmem, blk, and btt make_request cleanups Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:10 +0200
Re: [PATCH 11/15] libnvdimm: pmem, blk, and btt make_request cleanups Christoph Hellwig <hch@lst.de> - 2015-06-21 12:20 +0200
[PATCH 08/15] libnvdimm, btt: add support for blk integrity Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:10 +0200
[PATCH 02/15] libnvdimm: infrastructure for btt devices Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:10 +0200
[PATCH 10/15] libnvdimm: fix up max_hw_sectors Dan Williams <dan.j.williams@intel.com> - 2015-06-18 02:10 +0200
Re: [PATCH 10/15] libnvdimm: fix up max_hw_sectors Christoph Hellwig <hch@lst.de> - 2015-06-21 12:10 +0200
Re: [PATCH 03/15] nd_btt: atomic sector updates Christoph Hellwig <hch@lst.de> - 2015-06-21 12:10 +0200
Re: [PATCH 03/15] nd_btt: atomic sector updates Dan Williams <dan.j.williams@intel.com> - 2015-06-21 18:40 +0200
Re: [PATCH 04/15] libnvdimm, nfit, nd_blk: driver for BLK-mode access persistent memory Christoph Hellwig <hch@lst.de> - 2015-06-21 12:10 +0200
Re: [PATCH 04/15] libnvdimm, nfit, nd_blk: driver for BLK-mode access persistent memory Dan Williams <dan.j.williams@intel.com> - 2015-06-21 16:50 +0200
csiph-web