Hello community, here is the log from the commit of package xen for openSUSE:Factory checked in at Sat Nov 20 12:06:54 CET 2010. -------- --- xen/xen.changes 2010-11-12 18:55:07.000000000 +0100 +++ /mounts/work_src_done/STABLE/xen/xen.changes 2010-11-19 21:15:41.000000000 +0100 @@ -1,0 +2,21 @@ +Fri Nov 19 11:48:43 CST 2010 - lidongyang@novell.com + +- bnc#651822 - xm snapshot-xxx scripts lead to an XP SP3 HVM domU + to chkdsk + snapshot-xend.patch + snapshot-ioemu-restore.patch + +------------------------------------------------------------------- +Wed Nov 17 15:20:02 MST 2010 - carnold@novell.com + +- bnc#651957 - Xen: vm-install failed to start + xenpaging.enabled.patch + +------------------------------------------------------------------- +Wed Nov 17 10:35:52 CET 2010 - ohering@suse.de + +- fate#310510 - fix xenpaging + xenpaging.signal_handling.patch + - unlink pagefile in signal handler + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- xenpaging.enabled.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xen.spec ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:02.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:02.000000000 +0100 @@ -70,7 +70,7 @@ BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11 %endif Version: 4.0.1_01 -Release: 3 +Release: 4 License: GPLv2+ Group: System/Kernel AutoReqProv: on @@ -297,6 +297,7 @@ Patch10027: xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch Patch10028: xenpaging.HVMCOPY_gfn_paged_out.patch Patch10029: xenpaging.optimize_p2m_mem_paging_populate.patch +Patch10030: xenpaging.enabled.patch Patch10040: xenpaging.doc.patch Url: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -811,6 +812,7 @@ %patch10027 -p1 %patch10028 -p1 %patch10029 -p1 +%patch10030 -p1 %patch10040 -p1 %build ++++++ bdrv_open2_flags_2.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -2,7 +2,7 @@ =================================================================== --- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c +++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c -@@ -237,6 +237,7 @@ static int open_disk(struct td_state *s, +@@ -235,6 +235,7 @@ static int open_disk(struct td_state *s, BlockDriver* drv; char* devname; static int devnumber = 0; @@ -10,7 +10,7 @@ int i; DPRINTF("Opening %s as blktap%d\n", path, devnumber); -@@ -259,7 +260,7 @@ static int open_disk(struct td_state *s, +@@ -257,7 +258,7 @@ static int open_disk(struct td_state *s, DPRINTF("%s driver specified\n", drv ? drv->format_name : "No"); /* Open the image */ ++++++ blktap-pv-cdrom.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -741,7 +741,7 @@ =================================================================== --- xen-4.0.1-testing.orig/tools/blktap/lib/blktaplib.h +++ xen-4.0.1-testing/tools/blktap/lib/blktaplib.h -@@ -225,6 +225,7 @@ typedef struct msg_pid { +@@ -224,6 +224,7 @@ typedef struct msg_pid { #define DISK_TYPE_RAM 3 #define DISK_TYPE_QCOW 4 #define DISK_TYPE_QCOW2 5 ++++++ ioemu-bdrv-open-CACHE_WB.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -2,7 +2,7 @@ =================================================================== --- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c +++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c -@@ -259,8 +259,11 @@ static int open_disk(struct td_state *s, +@@ -257,8 +257,11 @@ static int open_disk(struct td_state *s, drv = blktap_drivers[i].drv; DPRINTF("%s driver specified\n", drv ? drv->format_name : "No"); ++++++ ioemu-blktap-barriers.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -2,7 +2,7 @@ =================================================================== --- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c +++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c -@@ -360,6 +360,15 @@ static void qemu_send_responses(void* op +@@ -358,6 +358,15 @@ static void qemu_send_responses(void* op } /** @@ -18,7 +18,7 @@ * Callback function for the IO message pipe. Reads requests from the ring * and processes them (call qemu read/write functions). * -@@ -378,6 +387,7 @@ static void handle_blktap_iomsg(void* pr +@@ -376,6 +385,7 @@ static void handle_blktap_iomsg(void* pr blkif_t *blkif = s->blkif; tapdev_info_t *info = s->ring_info; int page_size = getpagesize(); @@ -26,7 +26,7 @@ struct aiocb_info *aiocb_info; -@@ -410,7 +420,7 @@ static void handle_blktap_iomsg(void* pr +@@ -408,7 +418,7 @@ static void handle_blktap_iomsg(void* pr /* Don't allow writes on readonly devices */ if ((s->flags & TD_RDONLY) && @@ -35,7 +35,7 @@ blkif->pending_list[idx].status = BLKIF_RSP_ERROR; goto send_response; } -@@ -431,7 +441,7 @@ static void handle_blktap_iomsg(void* pr +@@ -429,7 +439,7 @@ static void handle_blktap_iomsg(void* pr DPRINTF("Sector request failed:\n"); DPRINTF("%s request, idx [%d,%d] size [%llu], " "sector [%llu,%llu]\n", @@ -44,7 +44,7 @@ "WRITE" : "READ"), idx,i, (long long unsigned) -@@ -444,8 +454,14 @@ static void handle_blktap_iomsg(void* pr +@@ -442,8 +452,14 @@ static void handle_blktap_iomsg(void* pr blkif->pending_list[idx].secs_pending += nsects; @@ -60,7 +60,7 @@ case BLKIF_OP_WRITE: aiocb_info = malloc(sizeof(*aiocb_info)); -@@ -465,6 +481,10 @@ static void handle_blktap_iomsg(void* pr +@@ -463,6 +479,10 @@ static void handle_blktap_iomsg(void* pr DPRINTF("ERROR: bdrv_write() == NULL\n"); goto send_response; } ++++++ ioemu-blktap-image-format.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -19,7 +19,7 @@ =================================================================== --- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c +++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c -@@ -230,9 +230,10 @@ static int map_new_dev(struct td_state * +@@ -228,9 +228,10 @@ static int map_new_dev(struct td_state * return -1; } @@ -31,7 +31,7 @@ char* devname; static int devnumber = 0; int i; -@@ -242,7 +243,22 @@ static int open_disk(struct td_state *s, +@@ -240,7 +241,22 @@ static int open_disk(struct td_state *s, bs = bdrv_new(devname); free(devname); @@ -55,7 +55,7 @@ fprintf(stderr, "Could not open image file %s\n", path); return -ENOMEM; } -@@ -525,7 +541,7 @@ static void handle_blktap_ctrlmsg(void* +@@ -519,7 +535,7 @@ static void handle_blktap_ctrlmsg(void* s = state_init(); /*Open file*/ ++++++ ioemu-blktap-zero-size.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -16,7 +16,7 @@ =================================================================== --- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c +++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c -@@ -268,6 +268,12 @@ static int open_disk(struct td_state *s, +@@ -266,6 +266,12 @@ static int open_disk(struct td_state *s, s->size = bs->total_sectors; s->sector_size = 512; ++++++ snapshot-ioemu-restore.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -1,92 +1,3 @@ -Index: xen-4.0.1-testing/tools/blktap/drivers/blktapctrl.c -=================================================================== ---- xen-4.0.1-testing.orig/tools/blktap/drivers/blktapctrl.c -+++ xen-4.0.1-testing/tools/blktap/drivers/blktapctrl.c -@@ -348,6 +348,7 @@ static int write_msg(int fd, int msgtype - msg_dev = (msg_newdev_t *)(buf + sizeof(msg_hdr_t)); - msg_dev->devnum = blkif->minor; - msg_dev->domid = blkif->domid; -+ msg_dev->be_id = blkif->be_id; - - break; - -Index: xen-4.0.1-testing/tools/blktap/lib/blktaplib.h -=================================================================== ---- xen-4.0.1-testing.orig/tools/blktap/lib/blktaplib.h -+++ xen-4.0.1-testing/tools/blktap/lib/blktaplib.h -@@ -189,6 +189,7 @@ typedef struct msg_hdr { - typedef struct msg_newdev { - uint8_t devnum; - uint16_t domid; -+ uint32_t be_id; - } msg_newdev_t; - - typedef struct msg_pid { -Index: xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c -=================================================================== ---- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c -+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c -@@ -67,6 +67,8 @@ int write_fd; - static pid_t process; - fd_list_entry_t *fd_start = NULL; - -+extern char* get_snapshot_name(int devid); -+ - static void handle_blktap_iomsg(void* private); - - struct aiocb_info { -@@ -500,6 +502,10 @@ static void handle_blktap_ctrlmsg(void* - - char buf[MSG_SIZE]; - -+#ifndef QEMU_TOOL -+ char *snapshot; -+#endif -+ - length = read(read_fd, buf, MSG_SIZE); - - if (length > 0 && length >= sizeof(msg_hdr_t)) -@@ -555,7 +561,39 @@ static void handle_blktap_ctrlmsg(void* - if (s != NULL) { - ret = ((map_new_dev(s, msg_dev->devnum) - == msg_dev->devnum ? 0: -1)); -- } -+ } -+ -+#ifndef QEMU_TOOL -+ fprintf(stderr, "Reading snapshot name for %d\n", msg_dev->be_id); -+ snapshot = get_snapshot_name(msg_dev->be_id); -+ if (snapshot) { -+ fprintf(stderr, "Using snapshot %s\n", snapshot); -+ ret = bdrv_snapshot_goto(s->bs, snapshot); -+ switch (ret) { -+ case 0: -+ /* Success */ -+ break; -+ case -ENOTSUP: -+ if (s->flags & TD_RDONLY) { -+ fprintf(stderr, "Snapshots not supported for " -+ "image format of a read-only image\n"); -+ } else { -+ fprintf(stderr, "Snapshots not supported " -+ "for this image format"); -+ ret = -1; -+ } -+ break; -+ case -ENOENT: -+ fprintf(stderr, "No such snapshot"); -+ ret = -1; -+ break; -+ default: -+ fprintf(stderr, "Could not load snapshot"); -+ ret = -1; -+ break; -+ } -+ } -+#endif - - memset(buf, 0x00, MSG_SIZE); - msglen = sizeof(msg_hdr_t); Index: xen-4.0.1-testing/tools/ioemu-qemu-xen/xenstore.c =================================================================== --- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/xenstore.c ++++++ snapshot-without-pv-fix.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -18,11 +18,11 @@ tools/ioemu-qemu-xen/hw/xen_blktap.c | 49 +++++++++++++++----- 5 files changed, 213 insertions(+), 14 deletions(-) -diff --git a/tools/blktap/drivers/blktapctrl.c b/tools/blktap/drivers/blktapctrl.c -index bcc3152..8b58e3e 100644 ---- a/tools/blktap/drivers/blktapctrl.c -+++ b/tools/blktap/drivers/blktapctrl.c -@@ -381,7 +381,22 @@ static int write_msg(int fd, int msgtype, void *ptr, void *ptr2) +Index: xen-4.0.1-testing/tools/blktap/drivers/blktapctrl.c +=================================================================== +--- xen-4.0.1-testing.orig/tools/blktap/drivers/blktapctrl.c ++++ xen-4.0.1-testing/tools/blktap/drivers/blktapctrl.c +@@ -380,7 +380,22 @@ static int write_msg(int fd, int msgtype msg->cookie = blkif->cookie; break; @@ -46,7 +46,7 @@ default: return -1; } -@@ -476,6 +491,12 @@ static int read_msg(int fd, int msgtype, void *ptr) +@@ -475,6 +490,12 @@ static int read_msg(int fd, int msgtype, DPRINTF("\tPID: [%d]\n",blkif->tappid); } break; @@ -59,7 +59,7 @@ default: DPRINTF("UNKNOWN MESSAGE TYPE RECEIVED\n"); ret = 0; -@@ -758,6 +779,63 @@ static int unmap_blktapctrl(blkif_t *blkif) +@@ -757,6 +778,63 @@ static int unmap_blktapctrl(blkif_t *blk return 0; } @@ -123,7 +123,7 @@ int open_ctrl_socket(char *devname) { int ret; -@@ -854,6 +932,7 @@ int main(int argc, char *argv[]) +@@ -853,6 +931,7 @@ int main(int argc, char *argv[]) register_new_blkif_hook(blktapctrl_new_blkif); register_new_devmap_hook(map_new_blktapctrl); register_new_unmap_hook(unmap_blktapctrl); @@ -131,11 +131,11 @@ ctlfd = blktap_interface_open(); if (ctlfd < 0) { -diff --git a/tools/blktap/lib/blkif.c b/tools/blktap/lib/blkif.c -index 9a19596..11b63dc 100644 ---- a/tools/blktap/lib/blkif.c -+++ b/tools/blktap/lib/blkif.c -@@ -89,6 +89,11 @@ void register_new_blkif_hook(int (*fn)(blkif_t *blkif)) +Index: xen-4.0.1-testing/tools/blktap/lib/blkif.c +=================================================================== +--- xen-4.0.1-testing.orig/tools/blktap/lib/blkif.c ++++ xen-4.0.1-testing/tools/blktap/lib/blkif.c +@@ -89,6 +89,11 @@ void register_new_blkif_hook(int (*fn)(b { new_blkif_hook = fn; } @@ -172,10 +172,10 @@ void __init_blkif(void) { memset(blkif_hash, 0, sizeof(blkif_hash)); -diff --git a/tools/blktap/lib/blktaplib.h b/tools/blktap/lib/blktaplib.h -index 733b924..2a6a078 100644 ---- a/tools/blktap/lib/blktaplib.h -+++ b/tools/blktap/lib/blktaplib.h +Index: xen-4.0.1-testing/tools/blktap/lib/blktaplib.h +=================================================================== +--- xen-4.0.1-testing.orig/tools/blktap/lib/blktaplib.h ++++ xen-4.0.1-testing/tools/blktap/lib/blktaplib.h @@ -38,6 +38,7 @@ #include <xen/xen.h> #include <xen/io/blkif.h> @@ -198,7 +198,7 @@ void __init_blkif(void); typedef struct busy_state { -@@ -210,6 +213,8 @@ typedef struct msg_pid { +@@ -209,6 +212,8 @@ typedef struct msg_pid { #define CTLMSG_CLOSE_RSP 8 #define CTLMSG_PID 9 #define CTLMSG_PID_RSP 10 @@ -207,11 +207,11 @@ /* disk driver types */ #define MAX_DISK_TYPES 20 -diff --git a/tools/blktap/lib/xenbus.c b/tools/blktap/lib/xenbus.c -index 53db3c8..96f75a5 100644 ---- a/tools/blktap/lib/xenbus.c -+++ b/tools/blktap/lib/xenbus.c -@@ -318,6 +318,72 @@ static int check_image(struct xs_handle *h, struct backend_info *be, +Index: xen-4.0.1-testing/tools/blktap/lib/xenbus.c +=================================================================== +--- xen-4.0.1-testing.orig/tools/blktap/lib/xenbus.c ++++ xen-4.0.1-testing/tools/blktap/lib/xenbus.c +@@ -318,6 +318,72 @@ static int check_image(struct xs_handle return 0; } @@ -284,7 +284,7 @@ static void ueblktap_setup(struct xs_handle *h, char *bepath) { struct backend_info *be; -@@ -512,6 +578,9 @@ static void ueblktap_probe(struct xs_handle *h, struct xenbus_watch *w, +@@ -512,6 +578,9 @@ static void ueblktap_probe(struct xs_han be->backpath = bepath; be->frontpath = frontend; @@ -294,11 +294,11 @@ list_add(&be->list, &belist); -diff --git a/tools/ioemu-qemu-xen/hw/xen_blktap.c b/tools/ioemu-qemu-xen/hw/xen_blktap.c -index c2236fd..c925283 100644 ---- a/tools/ioemu-qemu-xen/hw/xen_blktap.c -+++ b/tools/ioemu-qemu-xen/hw/xen_blktap.c -@@ -83,8 +83,18 @@ static void unmap_disk(struct td_state *s) +Index: xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c +=================================================================== +--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c ++++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c +@@ -81,8 +81,18 @@ static void unmap_disk(struct td_state * { tapdev_info_t *info = s->ring_info; fd_list_entry_t *entry; @@ -317,7 +317,7 @@ if (info != NULL && info->mem > 0) munmap(info->mem, getpagesize() * BLKTAP_MMAP_REGION_SIZE); -@@ -244,18 +254,6 @@ static int open_disk(struct td_state *s, char *path, int readonly) +@@ -242,18 +252,6 @@ static int open_disk(struct td_state *s, s->info = ((s->flags & TD_RDONLY) ? VDISK_READONLY : 0); @@ -336,7 +336,7 @@ return 0; } -@@ -496,7 +494,7 @@ static void handle_blktap_ctrlmsg(void* private) +@@ -494,7 +492,7 @@ static void handle_blktap_ctrlmsg(void* msg_hdr_t *msg; msg_newdev_t *msg_dev; msg_pid_t *msg_pid; @@ -345,7 +345,7 @@ struct td_state *s = NULL; fd_list_entry_t *entry; -@@ -622,6 +620,31 @@ static void handle_blktap_ctrlmsg(void* private) +@@ -584,6 +582,31 @@ static void handle_blktap_ctrlmsg(void* len = write(write_fd, buf, msglen); break; ++++++ snapshot-xend.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:03.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:03.000000000 +0100 @@ -115,7 +115,16 @@ from xen.xend import XendDomain try: -@@ -112,52 +112,61 @@ def save(fd, dominfo, network, live, dst +@@ -78,6 +78,8 @@ def save(fd, dominfo, network, live, dst + write_exact(fd, SIGNATURE, "could not write guest state file: signature") + + sxprep = dominfo.sxpr() ++ if name: ++ sxprep.append(['snapshotname', name]) + + if node > -1: + insert_after(sxprep,'vcpus',['node', str(node)]) +@@ -112,52 +114,61 @@ def save(fd, dominfo, network, live, dst image_cfg = dominfo.info.get('image', {}) hvm = dominfo.info.is_hvm() @@ -223,7 +232,7 @@ if checkpoint: dominfo.resumeDomain() -@@ -221,6 +230,71 @@ def restore(xd, fd, dominfo = None, paus +@@ -221,6 +232,71 @@ def restore(xd, fd, dominfo = None, paus if othervm is not None and othervm.domid is not None: raise VmError("Domain '%s' already exists with ID '%d'" % (domconfig["name_label"], othervm.domid)) @@ -295,7 +304,7 @@ if dominfo: dominfo.resume() else: -@@ -329,24 +403,7 @@ def restore(xd, fd, dominfo = None, paus +@@ -329,24 +405,7 @@ def restore(xd, fd, dominfo = None, paus dominfo.completeRestore(handler.store_mfn, handler.console_mfn) ++++++ tapdisk-ioemu-shutdown-fix.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:04.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:04.000000000 +0100 @@ -27,8 +27,8 @@ +int connected_disks = 0; fd_list_entry_t *fd_start = NULL; - extern char* get_snapshot_name(int devid); -@@ -545,6 +546,7 @@ static void handle_blktap_ctrlmsg(void* + static void handle_blktap_iomsg(void* private); +@@ -539,6 +540,7 @@ static void handle_blktap_ctrlmsg(void* /* Allocate the disk structs */ s = state_init(); @@ -36,7 +36,7 @@ /*Open file*/ if (s == NULL || open_disk(s, path, msg->drivertype, msg->readonly)) { -@@ -627,7 +629,8 @@ static void handle_blktap_ctrlmsg(void* +@@ -589,7 +591,8 @@ static void handle_blktap_ctrlmsg(void* case CTLMSG_CLOSE: s = get_state(msg->cookie); if (s) unmap_disk(s); ++++++ xend-domain-lock.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:05.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:05.000000000 +0100 @@ -232,7 +232,7 @@ =================================================================== --- xen-4.0.1-testing.orig/tools/python/xen/xend/XendCheckpoint.py +++ xen-4.0.1-testing/tools/python/xen/xend/XendCheckpoint.py -@@ -131,6 +131,7 @@ def save(fd, dominfo, network, live, dst +@@ -133,6 +133,7 @@ def save(fd, dominfo, network, live, dst dominfo.shutdown('suspend') dominfo.waitForSuspend() if line in ('suspend', 'suspended'): @@ -240,7 +240,7 @@ dominfo.migrateDevices(network, dst, DEV_MIGRATE_STEP2, domain_name) log.info("Domain %d suspended.", dominfo.getDomid()) -@@ -408,6 +409,7 @@ def restore(xd, fd, dominfo = None, paus +@@ -410,6 +411,7 @@ def restore(xd, fd, dominfo = None, paus if not paused: dominfo.unpause() ++++++ xenpaging.HVMCOPY_gfn_paged_out.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:05.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:05.000000000 +0100 @@ -13,8 +13,8 @@ --- xen/arch/x86/hvm/hvm.c | 4 ++++ - xen/common/memory.c | 43 ++++++++++++++++++++++++++++++++++++++----- - 2 files changed, 42 insertions(+), 5 deletions(-) + xen/common/memory.c | 44 +++++++++++++++++++++++++++++++++++++++----- + 2 files changed, 43 insertions(+), 5 deletions(-) --- xen-4.0.1-testing.orig/xen/arch/x86/hvm/hvm.c +++ xen-4.0.1-testing/xen/arch/x86/hvm/hvm.c @@ -66,7 +66,7 @@ { struct page_info *page; unsigned long i, j; -+ unsigned long ctg_ret; ++ unsigned long cftg_ret; xen_pfn_t gpfn, mfn; struct domain *d = a->domain; @@ -75,10 +75,10 @@ } - if ( unlikely(__copy_from_guest_offset(&gpfn, a->extent_list, i, 1)) ) -+ j = __copy_from_guest_offset(&gpfn, a->extent_list, i, 1); -+ if ( unlikely(j) ) ++ cftg_ret = __copy_from_guest_offset(&gpfn, a->extent_list, i, 1); ++ if ( unlikely(cftg_ret) ) + { -+ if ( (long)j == -EAGAIN ) ++ if ( (long)cftg_ret == -EAGAIN ) + a->preempted = 1; goto out; + } @@ -90,36 +90,44 @@ /* Inform the domain of the new page's machine address. */ - if ( unlikely(__copy_to_guest_offset(a->extent_list, i, &mfn, 1)) ) -+ ctg_ret = __copy_to_guest_offset(a->extent_list, i, &mfn, 1); -+ if ( unlikely(ctg_ret) ) ++ cftg_ret = __copy_to_guest_offset(a->extent_list, i, &mfn, 1); ++ if ( unlikely(cftg_ret) ) + { + for ( j = 0; j < (1 << a->extent_order); j++ ) + set_gpfn_from_mfn(mfn + j, INVALID_M2P_ENTRY); + guest_physmap_remove_page(d, gpfn, mfn, a->extent_order); + free_domheap_pages(page, a->extent_order); -+ if ( (long)ctg_ret == -EAGAIN ) ++ if ( (long)cftg_ret == -EAGAIN ) + a->preempted = 1; goto out; + } } } } -@@ -226,8 +248,13 @@ static void decrease_reservation(struct +@@ -212,6 +234,7 @@ int guest_remove_page(struct domain *d, + static void decrease_reservation(struct memop_args *a) + { + unsigned long i, j; ++ unsigned long cfg_ret; + xen_pfn_t gmfn; + + if ( !guest_handle_subrange_okay(a->extent_list, a->nr_done, +@@ -226,8 +249,13 @@ static void decrease_reservation(struct goto out; } - if ( unlikely(__copy_from_guest_offset(&gmfn, a->extent_list, i, 1)) ) -+ j = __copy_from_guest_offset(&gmfn, a->extent_list, i, 1); -+ if ( unlikely(j) ) ++ cfg_ret = __copy_from_guest_offset(&gmfn, a->extent_list, i, 1); ++ if ( unlikely(cfg_ret) ) + { -+ if ( (long)j == -EAGAIN ) ++ if ( (long)cfg_ret == -EAGAIN ) + a->preempted = 1; goto out; + } if ( tb_init_done ) { -@@ -511,6 +538,7 @@ long do_memory_op(unsigned long cmd, XEN +@@ -511,6 +539,7 @@ long do_memory_op(unsigned long cmd, XEN int rc, op; unsigned int address_bits; unsigned long start_extent; @@ -127,7 +135,7 @@ struct xen_memory_reservation reservation; struct memop_args args; domid_t domid; -@@ -524,8 +552,13 @@ long do_memory_op(unsigned long cmd, XEN +@@ -524,8 +553,13 @@ long do_memory_op(unsigned long cmd, XEN case XENMEM_populate_physmap: start_extent = cmd >> MEMOP_EXTENT_SHIFT; ++++++ xenpaging.autostart.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:05.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:05.000000000 +0100 @@ -9,6 +9,10 @@ Signed-off-by: Olaf Hering <olaf@aepfle.de> --- +v2: + unlink logfile instead of truncating it. + allows hardlinking for further inspection + tools/examples/xmexample.hvm | 3 + tools/python/README.XendConfig | 1 tools/python/README.sxpcfg | 1 @@ -19,8 +23,6 @@ tools/python/xen/xm/xenapi_create.py | 1 8 files changed, 111 insertions(+) -Index: xen-4.0.1-testing/tools/examples/xmexample.hvm -=================================================================== --- xen-4.0.1-testing.orig/tools/examples/xmexample.hvm +++ xen-4.0.1-testing/tools/examples/xmexample.hvm @@ -127,6 +127,9 @@ disk = [ 'file:/var/lib/xen/images/disk. @@ -33,8 +35,6 @@ #----------------------------------------------------------------------------- # boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d) # default: hard disk, cd-rom, floppy -Index: xen-4.0.1-testing/tools/python/README.XendConfig -=================================================================== --- xen-4.0.1-testing.orig/tools/python/README.XendConfig +++ xen-4.0.1-testing/tools/python/README.XendConfig @@ -120,6 +120,7 @@ otherConfig @@ -45,8 +45,6 @@ image.hvm.display image.hvm.xauthority image.hvm.vncconsole -Index: xen-4.0.1-testing/tools/python/README.sxpcfg -=================================================================== --- xen-4.0.1-testing.orig/tools/python/README.sxpcfg +++ xen-4.0.1-testing/tools/python/README.sxpcfg @@ -51,6 +51,7 @@ image @@ -57,8 +55,6 @@ - display - xauthority - vncconsole -Index: xen-4.0.1-testing/tools/python/xen/xend/XendConfig.py -=================================================================== --- xen-4.0.1-testing.orig/tools/python/xen/xend/XendConfig.py +++ xen-4.0.1-testing/tools/python/xen/xend/XendConfig.py @@ -145,6 +145,7 @@ XENAPI_PLATFORM_CFG_TYPES = { @@ -78,8 +74,6 @@ if 'timer_mode' not in self['platform']: self['platform']['timer_mode'] = 1 if 'viridian' not in self['platform']: -Index: xen-4.0.1-testing/tools/python/xen/xend/XendDomainInfo.py -=================================================================== --- xen-4.0.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-4.0.1-testing/tools/python/xen/xend/XendDomainInfo.py @@ -2442,6 +2442,7 @@ class XendDomainInfo: @@ -102,8 +96,6 @@ else: log.debug("No device model") -Index: xen-4.0.1-testing/tools/python/xen/xend/image.py -=================================================================== --- xen-4.0.1-testing.orig/tools/python/xen/xend/image.py +++ xen-4.0.1-testing/tools/python/xen/xend/image.py @@ -122,12 +122,14 @@ class ImageHandler: @@ -217,8 +209,6 @@ def createDeviceModel(self, restore = False): if self.device_model is None: return -Index: xen-4.0.1-testing/tools/python/xen/xm/create.py -=================================================================== --- xen-4.0.1-testing.orig/tools/python/xen/xm/create.py +++ xen-4.0.1-testing/tools/python/xen/xm/create.py @@ -495,6 +495,10 @@ gopts.var('nfs_root', val="PATH", @@ -240,8 +230,6 @@ 'device_model', 'display', 'fda', 'fdb', 'gfx_passthru', 'guest_os_type', -Index: xen-4.0.1-testing/tools/python/xen/xm/xenapi_create.py -=================================================================== --- xen-4.0.1-testing.orig/tools/python/xen/xm/xenapi_create.py +++ xen-4.0.1-testing/tools/python/xen/xm/xenapi_create.py @@ -1086,6 +1086,7 @@ class sxp2xml: ++++++ xenpaging.enabled.patch ++++++ Index: xen-4.0.1-testing/tools/python/xen/xend/image.py =================================================================== --- xen-4.0.1-testing.orig/tools/python/xen/xend/image.py +++ xen-4.0.1-testing/tools/python/xen/xend/image.py @@ -123,18 +123,19 @@ class ImageHandler: self.device_model = vmConfig['platform'].get('device_model') self.xenpaging = vmConfig['platform'].get('xenpaging') - self.xenpaging_delay = xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay" % self.vm.info['name_label']) - if self.xenpaging_delay == None: - log.warn("XXX creating /local/domain/0/xenpaging/%s" % self.vm.info['name_label']) - xstransact.Mkdir("/local/domain/0/xenpaging/%s" % self.vm.info['name_label']) - xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay', '7.0')) - xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_inc', '0.1')) - xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_use', '5')) - xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_used', '0')) - self.xenpaging_delay = float(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay" % self.vm.info['name_label'])) - self.xenpaging_delay_inc = float(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay_inc" % self.vm.info['name_label'])) - self.xenpaging_delay_use = int(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay_use" % self.vm.info['name_label'])) - self.xenpaging_delay_used = int(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay_used" % self.vm.info['name_label'])) + if self.xenpaging: + self.xenpaging_delay = xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay" % self.vm.info['name_label']) + if self.xenpaging_delay == None: + log.warn("XXX creating /local/domain/0/xenpaging/%s" % self.vm.info['name_label']) + xstransact.Mkdir("/local/domain/0/xenpaging/%s" % self.vm.info['name_label']) + xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay', '7.0')) + xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_inc', '0.1')) + xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_use', '5')) + xstransact.Store("/local/domain/0/xenpaging/%s" % self.vm.info['name_label'], ('xenpaging_delay_used', '0')) + self.xenpaging_delay = float(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay" % self.vm.info['name_label'])) + self.xenpaging_delay_inc = float(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay_inc" % self.vm.info['name_label'])) + self.xenpaging_delay_use = int(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay_use" % self.vm.info['name_label'])) + self.xenpaging_delay_used = int(xstransact.Read("/local/domain/0/xenpaging/%s/xenpaging_delay_used" % self.vm.info['name_label'])) self.display = vmConfig['platform'].get('display') self.xauthority = vmConfig['platform'].get('xauthority') ++++++ xenpaging.guest_remove_page.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:05.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:05.000000000 +0100 @@ -5,6 +5,9 @@ Signed-off-by: Olaf Hering <olaf@aepfle.de> --- +v2: + resume dropped page to unpause vcpus + tools/xenpaging/xenpaging.c | 17 +++++++--- xen/arch/x86/mm/p2m.c | 65 +++++++++++++++++++++++++++++++---------- xen/common/memory.c | 6 +++ @@ -14,7 +17,7 @@ --- xen-4.0.1-testing.orig/tools/xenpaging/xenpaging.c +++ xen-4.0.1-testing/tools/xenpaging/xenpaging.c -@@ -598,12 +598,19 @@ int main(int argc, char *argv[]) +@@ -600,12 +600,19 @@ int main(int argc, char *argv[]) goto out; } @@ -112,8 +115,8 @@ - set_gpfn_from_mfn(mfn_x(mfn), rsp.gfn); - p2m_unlock(d->arch.p2m); - } else { -- gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x\n", -- mfn_x(mfn), rsp.gfn, p2mt); +- gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x flags %lx\n", +- mfn_x(mfn), rsp.gfn, p2mt, (unsigned long)rsp.flags); + /* Fix p2m entry */ + mfn = gfn_to_mfn(d, rsp.gfn, &p2mt); + if (mfn_valid(mfn)) @@ -123,8 +126,8 @@ + set_gpfn_from_mfn(mfn_x(mfn), rsp.gfn); + p2m_unlock(d->arch.p2m); + } else { -+ gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x\n", -+ mfn_x(mfn), rsp.gfn, p2mt); ++ gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x flags %lx\n", ++ mfn_x(mfn), rsp.gfn, p2mt, (unsigned long)rsp.flags); + } } ++++++ xenpaging.machine_to_phys_mapping.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:05.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:05.000000000 +0100 @@ -26,7 +26,8 @@ Signed-off-by: Olaf Hering <olaf@aepfle.de> --- -v2: check wether mfn is valid +v2: + call set_gpfn_from_mfn only if mfn is valid xen/arch/x86/mm/p2m.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) @@ -54,8 +55,8 @@ + set_gpfn_from_mfn(mfn_x(mfn), rsp.gfn); + p2m_unlock(d->arch.p2m); + } else { -+ gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x\n", -+ mfn_x(mfn), rsp.gfn, p2mt); ++ gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x flags %lx\n", ++ mfn_x(mfn), rsp.gfn, p2mt, (unsigned long)rsp.flags); + } /* Unpause domain */ ++++++ xenpaging.signal_handling.patch ++++++ --- /var/tmp/diff_new_pack.HU7blU/_old 2010-11-20 12:06:05.000000000 +0100 +++ /var/tmp/diff_new_pack.HU7blU/_new 2010-11-20 12:06:05.000000000 +0100 @@ -6,8 +6,12 @@ Signed-off-by: Olaf Hering <olaf@aepfle.de> --- - tools/xenpaging/xenpaging.c | 39 +++++++++++++++++++++++++++++++-------- - 1 file changed, 31 insertions(+), 8 deletions(-) +v2: + unlink pagefile in signal handler to avoid stale pagefiles if xenpaging is + stuck in some loop + + tools/xenpaging/xenpaging.c | 42 +++++++++++++++++++++++++++++++++--------- + 1 file changed, 33 insertions(+), 9 deletions(-) --- xen-4.0.1-testing.orig/tools/xenpaging/xenpaging.c +++ xen-4.0.1-testing/tools/xenpaging/xenpaging.c @@ -19,19 +23,22 @@ #include <xc_private.h> #include <xen/mem_event.h> -@@ -40,6 +41,11 @@ +@@ -40,6 +41,14 @@ #define DPRINTF(...) ((void)0) #endif ++static char filename[80]; +static int interrupted; +static void close_handler(int sig) +{ + interrupted = sig; ++ if ( filename[0] ) ++ unlink(filename); +} static void *init_page(void) { -@@ -244,7 +250,6 @@ int xenpaging_teardown(xenpaging_t *pagi +@@ -244,7 +253,6 @@ int xenpaging_teardown(xenpaging_t *pagi if ( rc != 0 ) { ERROR("Error tearing down domain paging in xen"); @@ -39,7 +46,7 @@ } /* Unbind VIRQ */ -@@ -252,7 +257,6 @@ int xenpaging_teardown(xenpaging_t *pagi +@@ -252,7 +260,6 @@ int xenpaging_teardown(xenpaging_t *pagi if ( rc != 0 ) { ERROR("Error unbinding event port"); @@ -47,7 +54,7 @@ } paging->mem_event.port = -1; -@@ -261,7 +265,6 @@ int xenpaging_teardown(xenpaging_t *pagi +@@ -261,7 +268,6 @@ int xenpaging_teardown(xenpaging_t *pagi if ( rc != 0 ) { ERROR("Error closing event channel"); @@ -55,7 +62,7 @@ } paging->mem_event.xce_handle = -1; -@@ -270,7 +273,6 @@ int xenpaging_teardown(xenpaging_t *pagi +@@ -270,7 +276,6 @@ int xenpaging_teardown(xenpaging_t *pagi if ( rc != 0 ) { ERROR("Error closing connection to xen"); @@ -63,7 +70,7 @@ } paging->xc_handle = -1; -@@ -375,7 +377,7 @@ int xenpaging_evict_page(xenpaging_t *pa +@@ -375,7 +380,7 @@ int xenpaging_evict_page(xenpaging_t *pa return ret; } @@ -72,7 +79,7 @@ { int ret; -@@ -455,6 +457,11 @@ static int evict_victim(xenpaging_t *pag +@@ -455,6 +460,11 @@ static int evict_victim(xenpaging_t *pag goto out; } @@ -84,7 +91,7 @@ ret = xc_mem_paging_nominate(paging->xc_handle, paging->mem_event.domain_id, victim->gfn); if ( ret == 0 ) -@@ -479,6 +486,7 @@ static int evict_victim(xenpaging_t *pag +@@ -479,6 +489,7 @@ static int evict_victim(xenpaging_t *pag int main(int argc, char *argv[]) { @@ -92,7 +99,15 @@ domid_t domain_id; int num_pages; xenpaging_t *paging; -@@ -513,7 +521,7 @@ int main(int argc, char *argv[]) +@@ -491,7 +502,6 @@ int main(int argc, char *argv[]) + + int open_flags = O_CREAT | O_TRUNC | O_RDWR; + mode_t open_mode = S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR | S_IWGRP | S_IWOTH; +- char filename[80]; + int fd; + + if ( argc != 3 ) +@@ -513,7 +523,7 @@ int main(int argc, char *argv[]) if ( paging == NULL ) { ERROR("Error initialising paging"); @@ -101,7 +116,7 @@ } /* Open file */ -@@ -522,9 +530,18 @@ int main(int argc, char *argv[]) +@@ -522,9 +532,18 @@ int main(int argc, char *argv[]) if ( fd < 0 ) { perror("failed to open file"); @@ -121,7 +136,7 @@ /* Evict pages */ memset(victims, 0, sizeof(xenpaging_victim_t) * num_pages); for ( i = 0; i < num_pages; i++ ) -@@ -532,6 +549,8 @@ int main(int argc, char *argv[]) +@@ -532,6 +551,8 @@ int main(int argc, char *argv[]) rc = evict_victim(paging, domain_id, &victims[i], fd, i); if ( rc == -ENOSPC ) break; @@ -130,7 +145,7 @@ if ( i % 100 == 0 ) DPRINTF("%d pages evicted\n", i); } -@@ -539,7 +558,7 @@ int main(int argc, char *argv[]) +@@ -539,7 +560,7 @@ int main(int argc, char *argv[]) DPRINTF("pages evicted\n"); /* Swap pages in and out */ @@ -139,19 +154,18 @@ { /* Wait for Xen to signal that a page needs paged in */ rc = xc_wait_for_event_or_timeout(paging->mem_event.xce_handle, 100); -@@ -630,8 +649,11 @@ int main(int argc, char *argv[]) +@@ -630,8 +651,10 @@ int main(int argc, char *argv[]) } } } + DPRINTF("xenpaging got signal %d\n", interrupted); out: -+ unlink(filename); + close(fd); free(victims); /* Tear down domain paging */ -@@ -642,6 +664,7 @@ int main(int argc, char *argv[]) +@@ -642,6 +665,7 @@ int main(int argc, char *argv[]) if ( rc == 0 ) rc = rc1; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org