diff options
| author | 2016-05-17 21:12:50 -0400 | |
|---|---|---|
| committer | 2016-05-17 21:12:50 -0400 | |
| commit | e7ca7f9fa2cda220ba807620c992ce77c33a32ea (patch) | |
| tree | fb8a6c1abc638c5a79645f4b9f44ece7c67187b4 /drivers/block/loop.c | |
| parent | mpt3sas: Used "synchronize_irq()"API to synchronize timed-out IO & TMs (diff) | |
| parent | Revert "lpfc: Delete unnecessary checks before the function call mempool_destroy" (diff) | |
Merge branch 'fixes' into misc
Diffstat (limited to 'drivers/block/loop.c')
| -rw-r--r-- | drivers/block/loop.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 423f4ca7d712..80cf8add46ff 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -488,6 +488,12 @@ static int lo_rw_aio(struct loop_device *lo, struct loop_cmd *cmd, bvec = __bvec_iter_bvec(bio->bi_io_vec, bio->bi_iter); iov_iter_bvec(&iter, ITER_BVEC | rw, bvec, bio_segments(bio), blk_rq_bytes(cmd->rq)); + /* + * This bio may be started from the middle of the 'bvec' + * because of bio splitting, so offset from the bvec must + * be passed to iov iterator + */ + iter.iov_offset = bio->bi_iter.bi_bvec_done; cmd->iocb.ki_pos = pos; cmd->iocb.ki_filp = file; |
