[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] minios: Fix bug when blkfront reading into zero-mapped buffer
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1201619907 0 # Node ID 1a357a1504b26755edfac3fe0a37ea805d071d3a # Parent 233f40973e1d689d66b25e439b2f48524dd579ea minios: Fix bug when blkfront reading into zero-mapped buffer by just poking the page. No need to use virtual_to_mfn() for the ring since that is a real page. Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx> --- extras/mini-os/blkfront.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletion(-) diff -r 233f40973e1d -r 1a357a1504b2 extras/mini-os/blkfront.c --- a/extras/mini-os/blkfront.c Tue Jan 29 15:16:35 2008 +0000 +++ b/extras/mini-os/blkfront.c Tue Jan 29 15:18:27 2008 +0000 @@ -88,7 +88,7 @@ struct blkfront_dev *init_blkfront(char SHARED_RING_INIT(s); FRONT_RING_INIT(&dev->ring, s, PAGE_SIZE); - dev->ring_ref = gnttab_grant_access(0,virtual_to_mfn(s),0); + dev->ring_ref = gnttab_grant_access(0,virt_to_mfn(s),0); evtchn_alloc_unbound_t op; op.dom = DOMID_SELF; @@ -274,6 +274,11 @@ void blkfront_aio(struct blkfront_aiocb for (j = 0; j < n; j++) { uintptr_t data = start + j * PAGE_SIZE; + if (!write) { + /* Trigger CoW if needed */ + *(char*)data = 0; + barrier(); + } aiocbp->gref[j] = req->seg[j].gref = gnttab_grant_access(0, virtual_to_mfn(data), write); req->seg[j].first_sect = 0; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |