mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-06 02:24:14 +08:00
xen-blkfront: fix accounting of reqs when migrating
Current migration code uses blk_put_request in order to finish a request before requeuing it. This function doesn't update the statistics of the queue, which completely screws accounting. Use blk_end_request_all instead which properly updates the statistics of the queue. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reported-and-Tested-by: Ouyang Zhaowei (Charles) <ouyangzhaowei@huawei.com> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: David Vrabel <david.vrabel@citrix.com> Cc: xen-devel@lists.xenproject.org
This commit is contained in:
parent
bcadb699b0
commit
3bb8c98e56
@ -1511,7 +1511,7 @@ static int blkif_recover(struct blkfront_info *info)
|
|||||||
merge_bio.tail = copy[i].request->biotail;
|
merge_bio.tail = copy[i].request->biotail;
|
||||||
bio_list_merge(&bio_list, &merge_bio);
|
bio_list_merge(&bio_list, &merge_bio);
|
||||||
copy[i].request->bio = NULL;
|
copy[i].request->bio = NULL;
|
||||||
blk_put_request(copy[i].request);
|
blk_end_request_all(copy[i].request, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
kfree(copy);
|
kfree(copy);
|
||||||
@ -1534,7 +1534,7 @@ static int blkif_recover(struct blkfront_info *info)
|
|||||||
req->bio = NULL;
|
req->bio = NULL;
|
||||||
if (req->cmd_flags & (REQ_FLUSH | REQ_FUA))
|
if (req->cmd_flags & (REQ_FLUSH | REQ_FUA))
|
||||||
pr_alert("diskcache flush request found!\n");
|
pr_alert("diskcache flush request found!\n");
|
||||||
__blk_put_request(info->rq, req);
|
__blk_end_request_all(req, 0);
|
||||||
}
|
}
|
||||||
spin_unlock_irq(&info->io_lock);
|
spin_unlock_irq(&info->io_lock);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user