Skip to content

Commit

Permalink
xen/blkback: Move the check for misaligned I/O higher.
Browse files Browse the repository at this point in the history
We move it up higher to be in same loop that actually computes
the sector number.

This way, all of the code that deals with verifying that the
request is correct is all done before we do any of the
page mapping, I/O submission, etc.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  • Loading branch information
Konrad Rzeszutek Wilk committed Apr 15, 2011
1 parent 1a95fe6 commit 976222e
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions drivers/xen/blkback/blkback.c
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,13 @@ static void dispatch_rw_block_io(struct blkif_st *blkif,
(req->u.rw.seg[i].last_sect < req->u.rw.seg[i].first_sect))
goto fail_response;
preq.nr_sects += seg[i].nsec;

if (((int)preq.sector_number|(int)seg[i].nsec) &
((bdev_logical_block_size(preq.bdev) >> 9) - 1)) {
DPRINTK("Misaligned I/O request from domain %d",
blkif->domid);
goto fail_response;
}
}

if (vbd_translate(&preq, blkif, operation) != 0) {
Expand All @@ -542,13 +549,6 @@ static void dispatch_rw_block_io(struct blkif_st *blkif,
blkif_get(blkif);

for (i = 0; i < nseg; i++) {
if (((int)preq.sector_number|(int)seg[i].nsec) &
((bdev_logical_block_size(preq.bdev) >> 9) - 1)) {
DPRINTK("Misaligned I/O request from domain %d",
blkif->domid);
goto fail_put_bio;
}

while ((bio == NULL) ||
(bio_add_page(bio,
blkbk->pending_page(pending_req, i),
Expand Down

0 comments on commit 976222e

Please sign in to comment.