]> xenbits.xensource.com Git - people/dstodden/blktap.git/commitdiff
CA-44675: Fix parent cache corruption due to I/O crosstalk.
authorDaniel Stodden <daniel.stodden@citrix.com>
Tue, 7 Sep 2010 02:42:26 +0000 (19:42 -0700)
committerDaniel Stodden <daniel.stodden@citrix.com>
Tue, 7 Sep 2010 02:42:26 +0000 (19:42 -0700)
Previous patch requeued completing ring I/O buffers.

An interesting question is why this succeeds without a proper tapdisk
crash. The only sane explanation I can come up with is that the common
path manages to queue AIOs before our response hits the kernel so
unmap goes after GUP page translation. Which sounds not too
improbable, the target leaf vhd bitmap was likely still hot at this
point.

Signed-off-by: Daniel Stodden <daniel.stodden@citrix.com>
drivers/block-lcache.c

index 3bac16751603ec29b3a304e0dbf8a6139b5eb749..d03bbfd3e0f825cdddb604d110cd6c80845e3a70 100644 (file)
@@ -177,7 +177,7 @@ local_cache_populate_cache(td_request_t clone, int err)
 
        clone.sec = lreq->treq.sec;
        clone.secs = lreq->treq.secs;
-       clone.buf = lreq->treq.buf;
+       clone.buf = lreq->buf;
 
 out:
        td_complete_request(lreq->treq, lreq->err); // TODO: check err