mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
bitkeeper revision 1.1159.12.2 (4117f3b8rwM8OBu0SxwoWkvUXsjLTQ)
add migration support to ngio frontend blk driver.
This commit is contained in:
1 parent
3d05d635fc
commit
3e468e8ded
4 files changed
+28
-3
No files matched your search
@@ -16,9 +16,11 @@ docs/*.aux
|
||||
docs/*.log
|
||||
docs/*.pdf
|
||||
docs/*.ps
|
||||
docs/*.dvi
|
||||
docs/*.toc
|
||||
docs/interface/*
|
||||
docs/user/*
|
||||
docs/xend/*
|
||||
extras/mini-os/h/hypervisor-ifs
|
||||
install
|
||||
install/*
|
||||
@@ -51,4 +53,3 @@ xen/tools/figlet/figlet
|
||||
xen/xen
|
||||
xen/xen-syms
|
||||
xen/xen.*
|
||||
xen/common/sched_atropos.c.smh
|
||||
@@ -303,6 +303,26 @@ static void kick_pending_request_queues(void)
|
||||
}
|
||||
|
||||
|
||||
/* Upon block read completion, issue a dummy machphys update for the
|
||||
pages in the buffer, just in case we're being migrated. */
|
||||
|
||||
static void blkif_read_completion(struct request *req)
|
||||
{
|
||||
struct bio *bio;
|
||||
struct bio_vec *bvec;
|
||||
int idx;
|
||||
unsigned long mfn, pfn
|
||||
|
||||
rq_for_each_bio(bio, req) {
|
||||
bio_for_each_segment(bvec, bio, idx) {
|
||||
mfn = page_to_phys(bvec->bv_page)>>PAGE_SHIFT;
|
||||
pfn = machine_to_phys_mapping[mfn];
|
||||
queue_machphys_update(mfn, pfn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static irqreturn_t blkif_int(int irq, void *dev_id, struct pt_regs *ptregs)
|
||||
{
|
||||
struct request *req;
|
||||
@@ -334,6 +354,9 @@ static irqreturn_t blkif_int(int irq, void *dev_id, struct pt_regs *ptregs)
|
||||
BUG();
|
||||
|
||||
end_that_request_last(req);
|
||||
|
||||
if( bret->operation == BLKIF_OP_READ )
|
||||
blkif_read_completion( req );
|
||||
break;
|
||||
case BLKIF_OP_PROBE:
|
||||
memcpy(&blkif_control_rsp, bret, sizeof(*bret));
|
||||
|
||||
@@ -214,7 +214,8 @@ int xc_linux_restore(int xc_handle, XcIOContext *ioctxt)
|
||||
if ( xc_domain_setinitialmem(xc_handle, dom,
|
||||
nr_pfns * (PAGE_SIZE / 1024)) )
|
||||
{
|
||||
xcio_error(ioctxt, "Could not set domain initial memory");
|
||||
xcio_error(ioctxt, "Could not set domain %d initial memory. pfns=%d, %dKB",
|
||||
dom, nr_pfns,nr_pfns * (PAGE_SIZE / 1024));
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
@@ -632,7 +632,7 @@ int xc_linux_save(int xc_handle, XcIOContext *ioctxt)
|
||||
pfn_batch[batch] = n;
|
||||
pfn_type[batch] = live_pfn_to_mfn_table[n];
|
||||
|
||||
if( pfn_type[batch] == 0x80000004 ){
|
||||
if( pfn_type[batch] == 0x80000001 ){
|
||||
/* not currently in pusedo-physical map -- set bit
|
||||
in to_fix that we must send this page in last_iter
|
||||
unless its sent sooner anyhow */
|
||||
|
||||