aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorMatthew Wilcox <matthew.r.wilcox@intel.com>2011-02-24 08:46:00 -0500
committerMatthew Wilcox <matthew.r.wilcox@intel.com>2011-11-04 15:52:59 -0400
commitd8ee9d69f275769aaad40ef7c944565ff8d2d24f (patch)
treee76aeab439b5f302042b3cd0d64cbe781cff456a /drivers/block
parent1ad2f8932a72bf375361727949ced2cb4e8cfcef (diff)
NVMe: Fix discontiguous accesses
When we submit subsequent portions of the I/O, we need to access the updated block, not start reading again from the original position. This was showing up as miscompares in the XFS randholes testcase. Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/nvme.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/block/nvme.c b/drivers/block/nvme.c
index 240922706a93..562d75a0fc50 100644
--- a/drivers/block/nvme.c
+++ b/drivers/block/nvme.c
@@ -529,6 +529,8 @@ static int nvme_submit_bio_queue(struct nvme_queue *nvmeq, struct nvme_ns *ns,
529 cmnd->rw.control = cpu_to_le16(control); 529 cmnd->rw.control = cpu_to_le16(control);
530 cmnd->rw.dsmgmt = cpu_to_le32(dsmgmt); 530 cmnd->rw.dsmgmt = cpu_to_le32(dsmgmt);
531 531
532 bio->bi_sector += length >> 9;
533
532 if (++nvmeq->sq_tail == nvmeq->q_depth) 534 if (++nvmeq->sq_tail == nvmeq->q_depth)
533 nvmeq->sq_tail = 0; 535 nvmeq->sq_tail = 0;
534 writel(nvmeq->sq_tail, nvmeq->q_db); 536 writel(nvmeq->sq_tail, nvmeq->q_db);