[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Merged.
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID 0dd531d4af4690ce99688b538fcd13a29f3af88a # Parent eb3ecf6abe87d6664f3e64cb19e2171eb65ba1c3 # Parent ad2720178268926f8b94271f8d3574dba7b23e55 Merged. diff -r eb3ecf6abe87 -r 0dd531d4af46 .hgignore --- a/.hgignore Fri Nov 18 13:28:38 2005 +++ b/.hgignore Fri Nov 18 13:30:47 2005 @@ -171,6 +171,7 @@ ^tools/xentrace/tbctl$ ^tools/xentrace/xenctx$ ^tools/xentrace/xentrace$ +^tools/xm-test/ramdisk/buildroot ^xen/BLOG$ ^xen/TAGS$ ^xen/arch/x86/asm-offsets\.s$ diff -r eb3ecf6abe87 -r 0dd531d4af46 docs/man/xm.pod.1 --- a/docs/man/xm.pod.1 Fri Nov 18 13:28:38 2005 +++ b/docs/man/xm.pod.1 Fri Nov 18 13:30:47 2005 @@ -626,12 +626,62 @@ =item B<block-attach> I<domain-id> I<be-dev> I<fe-dev> I<mode> I<[bedomain-id]> -Create a new virtual block device +Create a new virtual block device. This will trigger a hotplug event +for the guest. + +B<OPTIONS> + +=over 4 + +=item I<domain-id> + +The domain id of the guest domain that the device will be attached to. + +=item I<be-dev> + +The device in the backend domain (usually domain 0) to be exported. +This can be specified as a physical partition (phy:sda7) or as a file +mounted as loopback (file://path/to/loop.iso). + +=item I<fe-dev> + +How the device should be presented to the guest domain. It can be +specified as either a symbolic name, such as /dev/hdc, for common +devices, or by device id, such as 0x1400 (/dev/hdc device id in hex). + +=item I<mode> + +The access mode for the device from the guest domain. Supported modes +are I<rw> (read/write) or I<ro> (read-only). + +=item I<bedomain-id> + +The back end domain hosting the device. This defaults to domain 0. + +=back + +B<EXAMPLES> + +=over 4 + +=item I<Mount an ISO as a Disk> + +xm block-attach guestdomain file://path/to/dsl-2.0RC2.iso /dev/hdc ro + +This will mount the dsl iso as /dev/hdc in the guestdomain as a read +only device. This will probably not be detected as a cdrom by the +guest, but mounting /dev/hdc manually will work. + +=back =item B<block-detach> I<domain-id> I<devid> -Destroy a domain's virtual block device. DevId may either be a device -ID or the device name as mounted in the guest. +Destroy a domain's virtual block device. devid B<must> be the device +id given to the device by domain 0. You will need to run I<xm +block-list> to determine that number. + +FIXME: this is currently B<broken>. Even though a block device is +removed from domU, it appears to still be allocated in the domain 0. =item B<block-list> I<domain-id> @@ -722,7 +772,7 @@ =head1 SEE ALSO -B<xmdomain.cfg>(5) +B<xmdomain.cfg>(5), B<xentop>(1) BVT scheduling paper: K.J. Duda and D.R. Cheriton. Borrowed Virtual Time (BVT) scheduling: supporting latency-sensitive threads in a diff -r eb3ecf6abe87 -r 0dd531d4af46 docs/man/xmdomain.cfg.pod.5 --- a/docs/man/xmdomain.cfg.pod.5 Fri Nov 18 13:28:38 2005 +++ b/docs/man/xmdomain.cfg.pod.5 Fri Nov 18 13:30:47 2005 @@ -1,6 +1,6 @@ =head1 NAME -xmdomain.cfg - xm domain create config file format +xmdomain.cfg - xm domain config file format =head1 SYNOPSIS @@ -10,17 +10,22 @@ =head1 DESCRIPTION -The xm(1) program uses python executable config files to define +The B<xm>(1) program uses python executable config files to define domains to create from scratch. Each of these config files needs to contain a number of required options, and may specify many more. -Domain configuration files live in /etc/xen by default, though the -full path to the config file must be specified in the I<xm create> -command, so they can exist anywhere in the filesystem. - -/etc/xen/auto is a special case however, as domain config files in -that directory will be started automatically at system boot if the -xendomain init script is enabled. +Domain configuration files live in /etc/xen by default, if you store +config files anywhere else the full path to the config file must be +specified in the I<xm create> command. + +/etc/xen/auto is a special case. Domain config files in that +directory will be started automatically at system boot if the +xendomain init script is enabled. The contents of /etc/xen/auto +should be symlinks to files in /etc/xen to allow I<xm create> to be +used without full paths. + +Options are specified by I<name = value> statements in the +xmdomain.cfg files. =head1 OPTIONS @@ -29,50 +34,157 @@ =over 4 -=item I<kernel> - -The kernel image used in the domain. - -=item I<ramdisk> - -The initial ramdisk to be used in the domain. Default xen domU -kernels do not usually need a ramdisk. - -=item I<memory> - -The amount of memory, in megabytes to allocate to the domain when it +=item B<kernel> + +The kernel image for the domain. The format of the parameter is the +fully qualified path to the kernel image file, +i.e. I</boot/vmlinuz-2.6.12-xenU>. + + +=item B<ramdisk> + +The initial ramdisk for the domain. The format of the parameter is +the fully qualified path to the initrd, i.e. I</boot/initrd.gz>. On +many Linux distros you will not need a ramdisk if using the default +xen kernel. + +=item B<memory> + +The amount of RAM, in megabytes, to allocate to the domain when it starts. Allocating insufficient memory for a domain may produce -extremely bizarre behavior. - -=item I<name> - -A unique name for the domain. You can not create 2 domains with the -same name. - -=item I<root> - -Root stanza for the domain (required for Linux domains). - -=item I<disk> - -An array of disk stanzas - -=back - -A bare minimal config file example might be as follows: - - kernel = "/boot/vmlinuz-2.6-xenU" - memory = 128 - name = "MyLinux" - root = "/dev/hda1 ro" +extremely bizarre behavior. If there isn't enough free memory left on +the machine to fulfill this request, the domain will fail to start. + +Xen does not support overcommit of memory, so the total memory of all +guests (+ 64 MB needed for Xen) must be less than or equal to the +physical RAM in the machine. + +=item B<name> + +A unique name for the domain. Attempting to create two domains with +the same name will cause an error. + +=item B<root> + +Specifies the root device for the domain. This is required for Linux +domains, and possibly other OSes. + +=item B<nics> + +The number of network interfaces allocated to the domain on boot. It +defaults to 1. + +=item B<disk> + +An array of block device stanzas, in the form: + + disk = [ "stanza1", "stanza2", ... ] + +Each stanza has 3 terms, seperated by commas, +"backend-dev,frontend-dev,mode". + +=over 4 + +=item I<backend-dev> + +The device in the backend domain that will be exported to the guest +(frontend) domain. Supported formats include: + +I<phy:device> - export the physical device listed. The device can be +in symbolic form, as in sda7, or as the hex major/minor number, as in +0x301 (which is hda1). + +I<file://path/to/file> - export the file listed as a loopback device. +This will take care of the loopback setup before exporting the device. + +=item I<frontend-dev> + +How the device should appear in the guest domain. The device can be +in symbolic form, as in sda7, or as the hex major/minor number, as in +0x301 (which is hda1). + +=item I<mode> + +The access mode for the device. There are currently 2 valid options, +I<r> (read-only), I<w> (read/write). + +=back + +=item B<vif> + +An arrray of virtual interface stanzas in the form: + + vif = [ "stanza1", "stanza2", ... ] + +Each stanza specifies a set of I<name = value> options separated by +commas, in the form: "name1=value1, name2=value2, ..." + +B<OPTIONS> + +=over 4 + +=item I<bridge> + +The network bridge to be used for this device. This is especially +needed if multiple bridges exist on the machine. + +=item I<mac> + +The MAC address for the virtual interface. If mac is not specified, +one will be randomly chosen by xen with the 00:16:3e vendor id prefix. + +=back + +=back =head1 ADDITIONAL OPTIONS -=over 4 - -=item I<builder> - -=back +The following options are also supported in the config file, though +are far more rarely used. + +=over 4 + +=item B<builder> + +Which builder should be used to construct the domain. This defaults +to the I<linux> if not specified, which is the builder for +paravirtualized Linux domains. + +=item B<cpu> + +Specifies which CPU the domain should be started on, where 0 specifies +the first cpu, 1 the second, and so on. This defaults to -1, which +means Xen is free to pick which CPU to start on. + +=item B<extra> + +Extra information to append to the end of the kernel parameter line. +The format is a string, the contents of which can be anything that the +kernel supports. For instance: + + extra = "4" + +Will cause the domain to boot to runlevel 4. + +=item B<nfs_server> + +The IP address of the NFS server to use as the root device for the +domain. In order to do this you'll need to specify I<root=/dev/nfs>, +and specify I<nfs_root>. + +=item B<nfs_root> + +The directory on the NFS server to be used as the root filesystem. +Specified as a fully qualified path, i.e. I</full/path/to/root/dir>. + +=item B<vcpus> + +The number of virtual cpus to allocate to the domain. In order to use +this the xen kernel must be compiled with SMP support. + +This defaults to 1, meaning running the domain as a UP. + +=back =head1 DOMAIN SHUTDOWN OPTIONS @@ -81,17 +193,17 @@ =over 4 -=item I<shutdown> +=item B<on_shutdown> Triggered on either an I<xm shutdown> or graceful shutdown from inside the DomU. -=item I<reboot> +=item B<on_reboot> Triggered on either an I<xm reboot> or graceful reboot from inside the DomU. -=item I<crash> +=item B<on_crash> Triggered when a DomU goes to the crashed state for any reason. @@ -101,23 +213,23 @@ =over 4 -=item I<destroy> +=item B<destroy> The domain will be cleaned up completely. No attempt at respawning will occur. This is what a typical shutdown would look like. -=item I<restart> +=item B<restart> The domain will be restarted with the same name as the old domain. This is what a typical reboot would look like. -=item I<preserve> +=item B<preserve> The domain will not be cleaned up at all. This is often useful for crash state domains which ensures that enough evidence is to debug the real issue. -=item I<rename-restart> +=item B<rename-restart> The old domain will not be cleaned up, but will be renamed so a new domain can be restarted in it's place. The old domain will be renamed with @@ -127,6 +239,39 @@ =back +=head1 EXAMPLES + +The following are quick examples of ways that domains might be +configured. They should not be considered an exhaustive set. + +=over 4 + +=item I<A Loopback File as Root> + + kernel = "/boot/vmlinuz-2.6-xenU" + memory = 128 + name = "MyLinux" + root = "/dev/hda1 ro" + disk = [ "file:/var/xen/mylinux.img,hda1,w" ] + +This creates a domain called MyLinux with 128 MB of memory using a +default xen kernel, and the file /var/xen/mylinux.img loopback mounted +at hda1, which is the root filesystem. + +=item I<NFS Root> + +FIXME: write me + +=item I<LVM Root> + +FIXME: write me + +=item I<Two Networks> + +FIXME: write me + +=back + =head1 SEE ALSO B<xm>(1) diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/arch/xen/i386/mm/hypervisor.c Fri Nov 18 13:30:47 2005 @@ -37,16 +37,10 @@ #include <asm-xen/balloon.h> #include <asm-xen/xen-public/memory.h> #include <linux/module.h> -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) #include <linux/percpu.h> #include <asm/tlbflush.h> -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) -#define pte_offset_kernel pte_offset -#define pud_t pgd_t -#define pud_offset(d, va) d -#elif defined(CONFIG_X86_64) + +#ifdef CONFIG_X86_64 #define pmd_val_ma(v) (v).pmd #else #ifdef CONFIG_X86_PAE diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c --- a/linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c Fri Nov 18 13:30:47 2005 @@ -121,11 +121,7 @@ /* Upcall to generic IRQ layer. */ #ifdef CONFIG_X86 -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) extern fastcall unsigned int do_IRQ(struct pt_regs *regs); -#else -extern asmlinkage unsigned int do_IRQ(struct pt_regs *regs); -#endif #if defined (__i386__) #define IRQ_REG orig_eax #elif defined (__x86_64__) diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c --- a/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c Fri Nov 18 13:30:47 2005 @@ -91,7 +91,6 @@ static DECLARE_WORK(balloon_worker, balloon_process, NULL); static struct timer_list balloon_timer; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) /* Use the private and mapping fields of struct page as a list. */ #define PAGE_TO_LIST(p) ((struct list_head *)&p->private) #define LIST_TO_PAGE(l) \ @@ -102,19 +101,6 @@ p->mapping = NULL; \ p->private = 0; \ } while(0) -#else -/* There's a dedicated list field in struct page we can use. */ -#define PAGE_TO_LIST(p) ( &p->list ) -#define LIST_TO_PAGE(l) ( list_entry(l, struct page, list) ) -#define UNLIST_PAGE(p) ( list_del(&p->list) ) -#define pte_offset_kernel pte_offset -#define pud_t pgd_t -#define pud_offset(d, va) d -#define pud_none(d) 0 -#define pud_bad(d) 0 -#define subsys_initcall(_fn) __initcall(_fn) -#define pfn_to_page(_pfn) (mem_map + (_pfn)) -#endif #define IPRINTK(fmt, args...) \ printk(KERN_INFO "xen_mem: " fmt, ##args) diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Fri Nov 18 13:30:47 2005 @@ -57,6 +57,7 @@ #define BLKIF_STATE_DISCONNECTED 0 #define BLKIF_STATE_CONNECTED 1 +#define BLKIF_STATE_SUSPENDED 2 #define MAXIMUM_OUTSTANDING_BLOCK_REQS \ (BLKIF_MAX_SEGMENTS_PER_REQUEST * BLKIF_RING_SIZE) @@ -75,7 +76,7 @@ static void blkif_restart_queue(void *arg); static void blkif_recover(struct blkfront_info *); static void blkif_completion(struct blk_shadow *); -static void blkif_free(struct blkfront_info *); +static void blkif_free(struct blkfront_info *, int); /** @@ -144,7 +145,7 @@ DPRINTK("blkfront_resume: %s\n", dev->nodename); - blkif_free(info); + blkif_free(info, 1); err = talk_to_backend(dev, info); if (!err) @@ -207,7 +208,7 @@ if (message) xenbus_dev_fatal(dev, err, "%s", message); destroy_blkring: - blkif_free(info); + blkif_free(info, 0); out: return err; } @@ -252,7 +253,7 @@ return 0; fail: - blkif_free(info); + blkif_free(info, 0); return err; } @@ -295,7 +296,8 @@ unsigned int binfo; int err; - if (info->connected == BLKIF_STATE_CONNECTED) + if( (info->connected == BLKIF_STATE_CONNECTED) || + (info->connected == BLKIF_STATE_SUSPENDED) ) return; DPRINTK("blkfront.c:connect:%s.\n", info->xbdev->otherend); @@ -354,7 +356,7 @@ DPRINTK("blkfront_remove: %s removed\n", dev->nodename); - blkif_free(info); + blkif_free(info, 0); kfree(info); @@ -569,6 +571,7 @@ req->nr_sectors, req->buffer, rq_data_dir(req) ? "write" : "read"); + blkdev_dequeue_request(req); if (blkif_queue_request(req)) { blk_requeue_request(rq, req); @@ -643,11 +646,12 @@ return IRQ_HANDLED; } -static void blkif_free(struct blkfront_info *info) +static void blkif_free(struct blkfront_info *info, int suspend) { /* Prevent new requests being issued until we fix things up. */ spin_lock_irq(&blkif_io_lock); - info->connected = BLKIF_STATE_DISCONNECTED; + info->connected = suspend ? + BLKIF_STATE_SUSPENDED : BLKIF_STATE_DISCONNECTED; spin_unlock_irq(&blkif_io_lock); /* Free resources associated with old device channel. */ diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/drivers/xen/console/console.c --- a/linux-2.6-xen-sparse/drivers/xen/console/console.c Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c Fri Nov 18 13:30:47 2005 @@ -128,12 +128,7 @@ /* Common transmit-kick routine. */ static void __xencons_tx_flush(void); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) static struct tty_driver *xencons_driver; -#else -static struct tty_driver xencons_driver; -#endif - /******************** Kernel console driver ********************************/ @@ -170,18 +165,11 @@ } } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) static struct tty_driver *kcons_device(struct console *c, int *index) { *index = c->index; return xencons_driver; } -#else -static kdev_t kcons_device(struct console *c) -{ - return MKDEV(TTY_MAJOR, (xc_mode == XC_SERIAL) ? 64 : 1); -} -#endif static struct console kcons_info = { .device = kcons_device, @@ -189,13 +177,8 @@ .index = -1, }; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) #define __RETCODE 0 static int __init xen_console_init(void) -#else -#define __RETCODE -void xen_console_init(void) -#endif { if (xen_init() < 0) return __RETCODE; @@ -204,10 +187,8 @@ if (xc_mode == XC_DEFAULT) xc_mode = XC_SERIAL; kcons_info.write = kcons_write_dom0; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) if (xc_mode == XC_SERIAL) kcons_info.flags |= CON_ENABLED; -#endif } else { if (xc_mode == XC_DEFAULT) xc_mode = XC_TTY; @@ -237,9 +218,7 @@ return __RETCODE; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) console_initcall(xen_console_init); -#endif /*** Useful function for console debugging -- goes straight to Xen. ***/ asmlinkage int xprintk(const char *fmt, ...) @@ -283,15 +262,8 @@ /******************** User-space console driver (/dev/console) ************/ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) #define DRV(_d) (_d) #define TTY_INDEX(_tty) ((_tty)->index) -#else -static int xencons_refcount; -static struct tty_struct *xencons_table[MAX_NR_CONSOLES]; -#define DRV(_d) (&(_d)) -#define TTY_INDEX(_tty) (MINOR((_tty)->device) - xencons_driver.minor_start) -#endif static struct termios *xencons_termios[MAX_NR_CONSOLES]; static struct termios *xencons_termios_locked[MAX_NR_CONSOLES]; @@ -484,7 +456,6 @@ return 1; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) static int xencons_write( struct tty_struct *tty, const unsigned char *buf, @@ -509,42 +480,6 @@ return i; } -#else -static int xencons_write( - struct tty_struct *tty, - int from_user, - const u_char *buf, - int count) -{ - int i; - unsigned long flags; - - if (from_user && verify_area(VERIFY_READ, buf, count)) - return -EINVAL; - - if (TTY_INDEX(tty) != 0) - return count; - - spin_lock_irqsave(&xencons_lock, flags); - - for (i = 0; i < count; i++) { - char ch; - if (from_user) - __get_user(ch, buf + i); - else - ch = buf[i]; - if (!__xencons_put_char(ch)) - break; - } - - if (i != 0) - __xencons_tx_flush(); - - spin_unlock_irqrestore(&xencons_lock, flags); - - return i; -} -#endif static void xencons_put_char(struct tty_struct *tty, u_char ch) { @@ -629,7 +564,6 @@ } } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) static struct tty_operations xencons_ops = { .open = xencons_open, .close = xencons_close, @@ -685,7 +619,6 @@ .con_scrolldelta = DUMMY, }; #endif -#endif static int __init xencons_init(void) { @@ -699,19 +632,10 @@ xencons_ring_init(); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) xencons_driver = alloc_tty_driver((xc_mode == XC_SERIAL) ? 1 : MAX_NR_CONSOLES); if (xencons_driver == NULL) return -ENOMEM; -#else - memset(&xencons_driver, 0, sizeof(struct tty_driver)); - xencons_driver.magic = TTY_DRIVER_MAGIC; - xencons_driver.refcount = &xencons_refcount; - xencons_driver.table = xencons_table; - xencons_driver.num = - (xc_mode == XC_SERIAL) ? 1 : MAX_NR_CONSOLES; -#endif DRV(xencons_driver)->major = TTY_MAJOR; DRV(xencons_driver)->type = TTY_DRIVER_TYPE_SERIAL; @@ -735,37 +659,18 @@ DRV(xencons_driver)->name_base = xc_num; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) tty_set_operations(xencons_driver, &xencons_ops); -#else - xencons_driver.open = xencons_open; - xencons_driver.close = xencons_close; - xencons_driver.write = xencons_write; - xencons_driver.write_room = xencons_write_room; - xencons_driver.put_char = xencons_put_char; - xencons_driver.flush_chars = xencons_flush_chars; - xencons_driver.chars_in_buffer = xencons_chars_in_buffer; - xencons_driver.send_xchar = xencons_send_xchar; - xencons_driver.flush_buffer = xencons_flush_buffer; - xencons_driver.throttle = xencons_throttle; - xencons_driver.unthrottle = xencons_unthrottle; - xencons_driver.wait_until_sent = xencons_wait_until_sent; -#endif if ((rc = tty_register_driver(DRV(xencons_driver))) != 0) { printk("WARNING: Failed to register Xen virtual " "console driver as '%s%d'\n", DRV(xencons_driver)->name, DRV(xencons_driver)->name_base); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) put_tty_driver(xencons_driver); xencons_driver = NULL; -#endif return rc; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) tty_register_device(xencons_driver, 0, NULL); -#endif if (xen_start_info->flags & SIF_INITDOMAIN) { xencons_priv_irq = bind_virq_to_irqhandler( diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c --- a/linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/evtchn/evtchn.c Fri Nov 18 13:30:47 2005 @@ -436,9 +436,7 @@ .minor = EVTCHN_MINOR, .name = "evtchn", .fops = &evtchn_fops, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) .devfs_name = "misc/evtchn", -#endif }; static int __init evtchn_init(void) diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c --- a/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c Fri Nov 18 13:30:47 2005 @@ -31,11 +31,6 @@ #include <asm-xen/xen-public/xen.h> #include <asm-xen/xen-public/dom0_ops.h> #include <asm-xen/xen_proc.h> - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) -#define pud_t pgd_t -#define pud_offset(d, va) d -#endif static struct proc_dir_entry *privcmd_intf; diff -r eb3ecf6abe87 -r 0dd531d4af46 linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypervisor.h --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypervisor.h Fri Nov 18 13:28:38 2005 +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypervisor.h Fri Nov 18 13:30:47 2005 @@ -39,15 +39,11 @@ #include <asm/ptrace.h> #include <asm/page.h> #if defined(__i386__) -# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) # ifdef CONFIG_X86_PAE # include <asm-generic/pgtable-nopud.h> # else # include <asm-generic/pgtable-nopmd.h> # endif -# else -# define pud_t pgd_t -# endif #endif extern shared_info_t *HYPERVISOR_shared_info; @@ -113,22 +109,6 @@ void xen_invlpg_mask(cpumask_t *mask, unsigned long ptr); #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) -/* -** XXX SMH: 2.4 doesn't have percpu.h (or support SMP guests) so just -** include sufficient #defines to allow the below to build. -*/ -#define DEFINE_PER_CPU(type, name) \ - __typeof__(type) per_cpu__##name - -#define per_cpu(var, cpu) (*((void)cpu, &per_cpu__##var)) -#define __get_cpu_var(var) per_cpu__##var -#define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name - -#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var) -#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var) -#endif /* linux < 2.6.0 */ - /* Returns zero on success else negative errno. */ int xen_create_contiguous_region( unsigned long vstart, unsigned int order, unsigned int address_bits); diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/ioemu/vl.c --- a/tools/ioemu/vl.c Fri Nov 18 13:28:38 2005 +++ b/tools/ioemu/vl.c Fri Nov 18 13:30:47 2005 @@ -137,7 +137,7 @@ int gus_enabled = 1; int pci_enabled = 1; int prep_enabled = 0; -int rtc_utc = 1; +int rtc_utc = 0; int cirrus_vga_enabled = 1; int vga_accelerate = 1; int graphic_width = 800; diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/libxc/xc_linux_save.c --- a/tools/libxc/xc_linux_save.c Fri Nov 18 13:28:38 2005 +++ b/tools/libxc/xc_linux_save.c Fri Nov 18 13:30:47 2005 @@ -729,6 +729,11 @@ /* Domain is still running at this point */ + if (live && (pt_levels != 2)) { + ERR("Live migration supported only for 32-bit non-pae"); + goto out; + } + if (live) { if (xc_shadow_control(xc_handle, dom, diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Fri Nov 18 13:28:38 2005 +++ b/tools/python/xen/xm/main.py Fri Nov 18 13:30:47 2005 @@ -40,26 +40,81 @@ import console +# Strings for shorthelp +console_help = "console <DomId> Attach to domain DomId's console." +create_help = """create [-c] <ConfigFile> + [Name=Value].. Create a domain based on Config File""" +destroy_help = "destroy <DomId> Terminate a domain immediately" +help_help = "help Display this message" +list_help = "list [--long] [DomId, ...] List information about domains" +mem_max_help = "mem-max <DomId> <Mem> Set maximum memory reservation for a domain" +mem_set_help = "mem-set <DomId> <Mem> Adjust the current memory usage for a domain" +migrate_help = "migrate <DomId> <Host> Migrate a domain to another machine" +pause_help = "pause <DomId> Pause execution of a domain" +reboot_help = "reboot <DomId> [-w][-a] Reboot a domain" +restore_help = "restore <File> Create a domain from a saved state file" +save_help = "save <DomId> <File> Save domain state (and config) to file" +shutdown_help ="shutdown <DomId> [-w][-a][-R|-H] Shutdown a domain" +top_help = "top Monitor system and domains in real-time" +unpause_help = "unpause <DomId> Unpause a paused domain" + +help_spacer = """ + """ + +# Strings for longhelp +sysrq_help = "sysrq <DomId> <letter> Send a sysrq to a domain" +domid_help = "domid <DomName> Converts a domain name to a domain id" +domname_help = "domname <DomId> Convert a domain id to a domain name" +set_vcpus_help = """set-vcpus <DomId> <VCPUs> Enable the specified number of VCPUs in a + domain""" +vcpu_list_help = "vcpu-list <DomId> List the VCPUs for a domain (or all domains)" +vcpu_pin_help = "vcpu-pin <DomId> <VCPU> <CPUs> Set which cpus a VCPU can use" +dmesg_help = "dmesg [--clear] Read or clear Xen's message buffer" +info_help = "info Get information about the xen host" +log_help = "log Print the xend log" +sched_bvt_help = """sched-bvt <Parameters> Set Borrowed Virtual Time scheduler + parameters""" +sched_bvt_ctxallow_help = """sched-bvt-ctxallow <Allow> Set the BVT scheduler context switch + allowance""" +sched_sedf_help = "sched-sedf <Parameters> Set simple EDF parameters" +block_attach_help = """block-attach <DomId> <BackDev> <FrontDev> <Mode> + [BackDomId] Create a new virtual block device""" +block_detach_help = """block-detach <DomId> <DevId> Destroy a domain's virtual block device, + where <DevId> may either be the device ID + or the device name as mounted in the guest""" + +block_list_help = "block-list <DomId> List virtual block devices for a domain" +network_attach_help = """network-attach <DomID> [script=<script>] [ip=<ip>] [mac=<mac>] + [bridge=<bridge>] [backend=<backDomID>] + Create a new virtual network device """ +network_detach_help = """network-detach <DomId> <DevId> Destroy a domain's virtual network + device, where <DevId> is the device ID.""" + +network_list_help = "network-list <DomId> List virtual network interfaces for a domain" +vnet_list_help = "vnet-list [-l|--long] list vnets" +vnet_create_help = "vnet-create <config> create a vnet from a config file" +vnet_delete_help = "vnet-delete <vnetid> delete a vnet" + shorthelp = """Usage: xm <subcommand> [args] Control, list, and manipulate Xen guest instances -xm common subcommands: - console <DomId> attach to console of DomId - create <CfgFile> create a domain based on Config File - destroy <DomId> terminate a domain immediately - help display this message - list [DomId, ...] list information about domains - mem-max <DomId> <Mem> set the maximum memory reservation for a domain - mem-set <DomId> <Mem> adjust the current memory usage for a domain - migrate <DomId> <Host> migrate a domain to another machine - pause <DomId> pause execution of a domain - reboot <DomId> reboot a domain - restore <File> create a domain from a saved state file - save <DomId> <File> save domain state (and config) to file - shutdown <DomId> shutdown a domain - top monitor system and domains in real-time - unpause <DomId> unpause a paused domain +xm common subcommands:""" + help_spacer \ ++ console_help + help_spacer \ ++ create_help + help_spacer \ ++ destroy_help + help_spacer \ ++ help_help + help_spacer \ ++ list_help + help_spacer \ ++ mem_max_help + help_spacer \ ++ mem_set_help + help_spacer \ ++ migrate_help + help_spacer \ ++ pause_help + help_spacer \ ++ reboot_help + help_spacer \ ++ restore_help + help_spacer \ ++ save_help + help_spacer \ ++ shutdown_help + help_spacer \ ++ top_help + help_spacer \ ++ unpause_help + """ <DomName> can be substituted for <DomId> in xm subcommands. @@ -72,64 +127,102 @@ xm full list of subcommands: - Domain Commands: - console <DomId> attach to console of DomId - create <ConfigFile> create a domain - destroy <DomId> terminate a domain immediately - domid <DomName> convert a domain name to a domain id - domname <DomId> convert a domain id to a domain name - list list information about domains - mem-max <DomId> <Mem> set domain maximum memory limit - mem-set <DomId> <Mem> set the domain's memory dynamically - migrate <DomId> <Host> migrate a domain to another machine - pause <DomId> pause execution of a domain - reboot [-w|-a] <DomId> reboot a domain - restore <File> create a domain from a saved state file - save <DomId> <File> save domain state (and config) to file - shutdown [-w|-a] <DomId> shutdown a domain - sysrq <DomId> <letter> send a sysrq to a domain - unpause <DomId> unpause a paused domain - set-vcpus <DomId> <VCPUs> enable the specified number of VCPUs in a domain - vcpu-list <DomId> list the VCPUs for a domain - vcpu-pin <DomId> <VCPU> <CPUs> set which cpus a VCPU can use. - - Xen Host Commands: - dmesg [--clear] read or clear Xen's message buffer - info get information about the xen host - log print the xend log - top monitor system and domains in real-time - - Scheduler Commands: - sched-bvt <options> set BVT scheduler parameters - sched-bvt-ctxallow <Allow> - Set the BVT scheduler context switch allowance - sched-sedf <options> set simple EDF parameters - - Virtual Device Commands: - block-attach <DomId> <BackDev> <FrontDev> <Mode> [BackDomId] - Create a new virtual block device - block-detach <DomId> <DevId> Destroy a domain's virtual block device, - where <DevId> may either be the device ID - or the device name as mounted in the guest. - block-list <DomId> List virtual block devices for a domain - - network-attach <DomID> [script=<script>] [ip=<ip>] [mac=<mac>] - [bridge=<bridge>] [backend=<backDomID>] - Create a new virtual network device - network-detach <DomId> <DevId> Destroy a domain's virtual network - device, where <DevId> is the device ID. - network-list <DomId> List virtual network interfaces for a domain - - Vnet commands: - vnet-list [-l|--long] list vnets - vnet-create <config> create a vnet from a config file - vnet-delete <vnetid> delete a vnet + Domain Commands: """ + help_spacer \ ++ console_help + help_spacer \ ++ create_help + help_spacer \ ++ destroy_help + help_spacer \ ++ domid_help + help_spacer \ ++ domname_help + help_spacer \ ++ list_help + help_spacer \ ++ mem_max_help + help_spacer \ ++ mem_set_help + help_spacer \ ++ migrate_help + help_spacer \ ++ pause_help + help_spacer \ ++ reboot_help + help_spacer \ ++ restore_help + help_spacer \ ++ save_help + help_spacer \ ++ shutdown_help + help_spacer \ ++ sysrq_help + help_spacer \ ++ top_help + help_spacer \ ++ unpause_help + help_spacer \ ++ set_vcpus_help + help_spacer \ ++ vcpu_pin_help + """ + + Xen Host Commands: """ + help_spacer \ ++ dmesg_help + help_spacer \ ++ info_help + help_spacer \ ++ log_help + help_spacer \ ++ top_help + """ + + Scheduler Commands: """ + help_spacer \ ++ sched_bvt_help + help_spacer \ ++ sched_bvt_ctxallow_help + help_spacer \ ++ sched_sedf_help + """ + + Virtual Device Commands:""" + help_spacer \ ++ block_attach_help + help_spacer \ ++ block_detach_help + help_spacer \ ++ block_list_help + help_spacer \ ++ network_attach_help + help_spacer \ ++ network_detach_help + help_spacer \ ++ network_limit_help + help_spacer \ ++ network_list_help + """ + + Vnet commands: """ + help_spacer \ ++ vnet_list_help + help_spacer \ ++ vnet_create_help + help_spacer \ ++ vnet_delete_help + """ <DomName> can be substituted for <DomId> in xm subcommands. For a short list of subcommands run 'xm help' For more help on xm see the xm(1) man page For more help on xm create, see the xmdomain.cfg(5) man page""" + +# array for xm help <command> +help = { + "--long": longhelp, + "console": console_help, + "create": create_help, + "destroy": destroy_help, + "domid ": domid_help, + "domname": domname_help, + "list": list_help, + "mem-max": mem_max_help, + "mem-set": mem_set_help, + "migrate": migrate_help, + "pause": pause_help, + "reboot": reboot_help, + "restore": restore_help, + "save": save_help, + "shutdown": shutdown_help, + "sysrq": sysrq_help, + "unpause": unpause_help, + "set-vcpus": set_vcpus_help, + "vcpu-list": vcpu_list_help, + "vcpu-pin": vcpu_pin_help, +# Xen Host Commands: + "dmesg": dmesg_help, + "info": info_help, + "log": log_help, + "top": top_help, +# Scheduler Commands: + "sched-bvt": sched_bvt_help, + "sched-bvt-ctxallow": sched_bvt_ctxallow_help, + "sched-sedf": sched_sedf_help, + +# Virtual Device Commands: + "block-attach": block_attach_help, + "block-detach": block_detach_help, + "block-list": block_list_help, + "network-attach": network_attach_help, + "network-detach": network_detach_help, + "network-list": network_list_help, +# Vnet commands: + "vnet-list": vnet_list_help, + "vnet-create": vnet_create_help, + "vnet-delete": vnet_delete_help + } #################################################################### # @@ -734,10 +827,6 @@ "vbd-list": "block-list", } -help = { - "--long": longhelp - } - def xm_lookup_cmd(cmd): if commands.has_key(cmd): @@ -759,7 +848,7 @@ def usage(cmd=None): if help.has_key(cmd): - print help[cmd] + print " " + help[cmd] else: print shorthelp sys.exit(1) diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/Makefile.am --- a/tools/xm-test/Makefile.am Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/Makefile.am Fri Nov 18 13:30:47 2005 @@ -1,5 +1,8 @@ SUBDIRS = ramdisk tests EXTRA_DIST = lib runtest.sh mkreport + +existing: + $(MAKE) -C ramdisk existing # Remove any pyc's, CVS dirs, and prune the skel dirs dist-hook: diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/README --- a/tools/xm-test/README Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/README Fri Nov 18 13:30:47 2005 @@ -45,11 +45,15 @@ NB: If you have the initrd.img from another installation of xm-test, you can copy it into the ramdisk directory to eliminate the need to rebuild it. If you do this, there is no need to run 'make' again. -Simply copy the initrd.img file into ramdisk/ and then run the -runtest.sh script. Note that in general, you should not attempt to -use a ramdisk from a previous minor version of xm-test (i.e., don't -use a ramdisk from 0.4.0 with 0.5.0. 0.5.0 should work for 0.5.3 -though) +Simply copy the initrd-X.Y.img file into ramdisk/ and then run: + + # make existing + +This will set up the link so that xm-test will use the existing +ramdisk. Next, just run "runtest.sh" normally. Note that in general, +you should not attempt to use a ramdisk from a previous minor version +of xm-test (i.e., don't use a ramdisk from 0.4.0 with 0.5.0. 0.5.0 +should work for 0.5.3 though) Running diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/configure.ac --- a/tools/xm-test/configure.ac Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/configure.ac Fri Nov 18 13:30:47 2005 @@ -1,7 +1,7 @@ # xm-test configure.ac input script # Basic header information -AC_INIT([xm-test], [0.5.0]) +AC_INIT([xm-test], [0.6.0]) AM_INIT_AUTOMAKE([1.7 foreign]) # Check for dependencies @@ -65,5 +65,6 @@ lib/XmTestLib/config.py ]) +AC_OUTPUT -AC_OUTPUT +chmod a+x lib/XmTestReport/xmtest.py diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/lib/XmTestReport/xmtest.py.in --- a/tools/xm-test/lib/XmTestReport/xmtest.py.in Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/lib/XmTestReport/xmtest.py.in Fri Nov 18 13:30:47 2005 @@ -1,3 +1,15 @@ #!/usr/bin/python XM_TEST_VERSION = "@PACKAGE_VERSION@" + +if __name__ == "__main__": + import re + + match = re.match("^(\d+)\.(\d+)\.(\d+)$", XM_TEST_VERSION) + + print "XM_TEST_VERSION=%s" % XM_TEST_VERSION + if match: + print "XM_TEST_MAJ=%s" % match.group(1) + print "XM_TEST_MIN=%s" % match.group(2) + print "XM_TEST_REV=%s" % match.group(3) + diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/ramdisk/Makefile.am --- a/tools/xm-test/ramdisk/Makefile.am Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/ramdisk/Makefile.am Fri Nov 18 13:30:47 2005 @@ -1,5 +1,5 @@ -EXTRA_DIST = skel configs +EXTRA_DIST = skel configs patches BR_TAR = buildroot-20050823.tar.bz2 BR_URL = http://buildroot.uclibc.org/downloads/snapshots/$(BR_TAR) @@ -8,6 +8,9 @@ BR_IMG = $(BR_SRC)/rootfs.i386.ext2 BR_ROOT = build_i386/root + +XMTEST_MAJ_VER = $(shell echo @PACKAGE_VERSION@ | perl -pe 's/(\d+)\.(\d+)\.\d+/\1.\2/') +XMTEST_VER_IMG = initrd-$(XMTEST_MAJ_VER).img all: initrd.img @@ -21,12 +24,21 @@ cp configs/buildroot $(BR_SRC)/.config cp configs/busybox $(BR_SRC)/package/busybox/busybox.config cp configs/uClibc $(BR_SRC)/toolchain/uClibc/uClibc.config + (for i in patches/buildroot/*.patch; do \ + cd $(BR_SRC) && patch -p1 <../$$i; done ) cd $(BR_SRC) && make oldconfig && make -initrd.img: $(BR_IMG) +$(XMTEST_VER_IMG): $(BR_IMG) (cd skel; tar cf - .) | (cd $(BR_SRC)/$(BR_ROOT); tar xvf -) cd $(BR_SRC) && make - cp $(BR_IMG) initrd.img + cp $(BR_IMG) initrd-$(XMTEST_MAJ_VER).img + +initrd.img: $(XMTEST_VER_IMG) + ln -sf $(XMTEST_VER_IMG) initrd.img + +existing: + @[ -f $(XMTEST_VER_IMG) ] && ln -sf $(XMTEST_VER_IMG) initrd.img || \ + echo Error, $(XMTEST_VER_IMG) not found clean-local: am_config_clean-local diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/ramdisk/configs/buildroot --- a/tools/xm-test/ramdisk/configs/buildroot Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/ramdisk/configs/buildroot Fri Nov 18 13:30:47 2005 @@ -225,6 +225,7 @@ # BR2_PACKAGE_WIRELESS_TOOLS is not set # BR2_PACKAGE_XORG is not set # BR2_PACKAGE_ZLIB is not set +BR2_PACKAGE_HPING=y # # Target Options diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/runtest.sh --- a/tools/xm-test/runtest.sh Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/runtest.sh Fri Nov 18 13:30:47 2005 @@ -61,19 +61,31 @@ fi # See if the ramdisk has been built - rdsize=$(stat -c %s ramdisk/initrd.img 2>/dev/null) + rdsize=$(stat -Lc %s ramdisk/initrd.img 2>/dev/null) if [ -z "$rdsize" ] || [ $rdsize -le 16384 ]; then echo "Cannot find a valid ramdisk. You need to run \"make\" or" echo "copy in a previously-built ramdisk to the ramdisk/ directory" exit 1 fi + # Figure out the version of the ramdisk link and compare it + # to what it should be as a cheap way of making sure we're + # using the right version + realrd=$(readlink ramdisk/initrd.img) + eval $(./lib/XmTestReport/xmtest.py) + rrdver="initrd-${XM_TEST_MAJ}.${XM_TEST_MIN}.img" + if [ "$realrd" != "$rrdver" ]; then + echo "Error: ramdisk/initrd.img is from an old version" + echo "You need to build a ramdisk from at least ${XM_TEST_MAJ}.${XM_TEST_MIN}" + exit 1 + fi + # See if xend is running if ! xm list >/dev/null 2>&1; then echo "'xm list' failed: is xend running?" exit 1 fi - + } # Get contact info if needed diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/tests/block-list/Makefile.am --- a/tools/xm-test/tests/block-list/Makefile.am Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/tests/block-list/Makefile.am Fri Nov 18 13:30:47 2005 @@ -5,7 +5,8 @@ 02_block-list_attachbd_pos.test \ 03_block-list_anotherbd_pos.test \ 04_block-list_nodb_pos.test \ - 05_block-list_nonexist_neg.test + 05_block-list_nonexist_neg.test \ + 06_block-list_checkremove_pos.test XFAIL_TESTS = diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/tests/create/15_create_smallmem_pos.py --- a/tools/xm-test/tests/create/15_create_smallmem_pos.py Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/tests/create/15_create_smallmem_pos.py Fri Nov 18 13:30:47 2005 @@ -7,7 +7,8 @@ MEM = 16 -domain = XmTestDomain(extraOpts={"memory":"%i" % MEM}) +domain = XmTestDomain(extraOpts={"memory":"%i" % MEM, + "extra" :"mem=%iM" % MEM}) try: domain.start() diff -r eb3ecf6abe87 -r 0dd531d4af46 xen/arch/x86/domain.c --- a/xen/arch/x86/domain.c Fri Nov 18 13:28:38 2005 +++ b/xen/arch/x86/domain.c Fri Nov 18 13:30:47 2005 @@ -255,6 +255,9 @@ struct domain *d = v->domain; l1_pgentry_t gdt_l1e; int vcpuid, pdpt_order; +#ifdef __x86_64__ + int i; +#endif if ( is_idle_task(d) ) return; diff -r eb3ecf6abe87 -r 0dd531d4af46 xen/include/xen/event.h --- a/xen/include/xen/event.h Fri Nov 18 13:28:38 2005 +++ b/xen/include/xen/event.h Fri Nov 18 13:30:47 2005 @@ -60,7 +60,7 @@ /* Note: Bitwise operations result in fast code with no branches. */ #define event_pending(v) \ - ((v)->vcpu_info->evtchn_upcall_pending & \ - ~(v)->vcpu_info->evtchn_upcall_mask) + (!!(v)->vcpu_info->evtchn_upcall_pending & \ + !(v)->vcpu_info->evtchn_upcall_mask) #endif /* __XEN_EVENT_H__ */ diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/ramdisk/patches/buildroot/hping.patch --- /dev/null Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/ramdisk/patches/buildroot/hping.patch Fri Nov 18 13:30:47 2005 @@ -0,0 +1,67 @@ +diff -Naur buildroot.orig/package/Config.in buildroot/package/Config.in +--- buildroot.orig/package/Config.in 2005-11-15 07:30:21.000000000 -0800 ++++ buildroot/package/Config.in 2005-11-15 07:30:54.000000000 -0800 +@@ -118,6 +118,6 @@ + source "package/wireless-tools/Config.in" + source "package/xorg/Config.in" + source "package/zlib/Config.in" +- ++source "package/hping/Config.in" + + endmenu +diff -Naur buildroot.orig/package/hping/Config.in buildroot/package/hping/Config.in +--- buildroot.orig/package/hping/Config.in 1969-12-31 16:00:00.000000000 -0800 ++++ buildroot/package/hping/Config.in 2005-11-14 14:13:20.000000000 -0800 +@@ -0,0 +1,5 @@ ++config BR2_PACKAGE_HPING ++ bool "hping" ++ default y ++ help ++ This is the hping package +diff -Naur buildroot.orig/package/hping/hping.mk buildroot/package/hping/hping.mk +--- buildroot.orig/package/hping/hping.mk 1969-12-31 16:00:00.000000000 -0800 ++++ buildroot/package/hping/hping.mk 2005-11-14 15:11:06.000000000 -0800 +@@ -0,0 +1,43 @@ ++# Taken from the buildroot examples ++ ++HPING_VERSION = 2.0.0-rc3 ++HPING_TBALL = hping$(HPING_VERSION).tar.gz ++HPING_URL = http://www.hping.org/$(HPING_TBALL) ++HPING_DIR = $(BUILD_DIR)/hping2-rc3 ++HPING_TARGET_BINARY = usr/bin/hping ++HPING_BINARY = hping ++ ++$(DL_DIR)/$(HPING_TBALL): ++ $(WGET) -P $(DL_DIR) $(HPING_URL) ++ ++$(HPING_DIR)/.source: $(DL_DIR)/$(HPING_TBALL) ++ tar xzf $(DL_DIR)/$(HPING_TBALL) -C $(BUILD_DIR) ++ touch $(HPING_DIR)/.source ++ ++$(HPING_DIR)/.configured: $(HPING_DIR)/.source ++ (cd $(HPING_DIR); \ ++ ./configure; ) ++ cat $(HPING_DIR)/Makefile | grep -v './hping2 -v' > $(HPING_DIR)/foo ++ mv $(HPING_DIR)/foo $(HPING_DIR)/Makefile ++ touch $(HPING_DIR)/.configured ++ ++$(HPING_DIR)/$(HPING_BINARY): $(HPING_DIR)/.configured ++ $(MAKE) CC=$(TARGET_CC) -C $(HPING_DIR) ++ ++$(TARGET_DIR)/$(HPING_TARGET_BINARY): $(HPING_DIR)/$(HPING_BINARY) ++ cp $(HPING_DIR)/hping2 $(TARGET_DIR)/bin ++ ++hping: $(TARGET_DIR)/$(HPING_TARGET_BINARY) ++ ++hping-clean: ++ $(MAKE) prefix=$(TARGET_DIR)/usr -C $(HPING_DIR) uninstall ++ -$(MAKE) -C $(HPING_DIR) clean ++ ++hping-dirclean: ++ rm -Rf $(HPING_DIR) ++ ++ifeq ($(strip $(BR2_PACKAGE_HPING)),y) ++TARGETS += hping ++endif ++ ++ diff -r eb3ecf6abe87 -r 0dd531d4af46 tools/xm-test/tests/block-list/06_block-list_checkremove_pos.py --- /dev/null Fri Nov 18 13:28:38 2005 +++ b/tools/xm-test/tests/block-list/06_block-list_checkremove_pos.py Fri Nov 18 13:30:47 2005 @@ -0,0 +1,66 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Dan Smith <danms@xxxxxxxxxx> + +from XmTestLib import * + +domain = XmTestDomain() + +try: + domain.start() +except DomainError, e: + FAIL(str(e)) + +try: + console = XmConsole(domain.getName()) +except ConsoleError, e: + FAIL(str(e)) + +s, o = traceCommand("xm block-list %s" % domain.getName()) +if s != 0: + FAIL("block-list returned !0 when no devices attached") +if o: + FAIL("block-list without devices reported something!") + +s, o = traceCommand("xm block-attach %s phy:/dev/ram0 hda1 w" % domain.getName()) +if s != 0: + FAIL("Unable to attach /dev/ram0->hda1") + +s, o = traceCommand("xm block-list %s" % domain.getName()) +if s != 0: + FAIL("block-list failed") +if not o.find("769"): + FAIL("block-list didn't show the block device I just attached!") + +s, o = traceCommand("xm block-attach %s phy:/dev/ram1 hda2 w" % domain.getName()) +if s != 0: + FAIL("Unable to attach /dev/ram1->hda2") + +s, o = traceCommand("xm block-list %s" % domain.getName()) +if s != 0: + FAIL("block-list failed") +if not o.find("770"): + FAIL("block-list didn't show the other block device I just attached!") + +s, o = traceCommand("xm block-detach %s 769" % domain.getName()) +if s != 0: + FAIL("block-destroy of hda1 failed") + +s, o = traceCommand("xm block-list %s" % domain.getName()) +if s != 0: + FAIL("block-list failed after detaching a device") +if o.find("769"): + FAIL("hda1 still shown in block-list after detach!") +if not o.find("770"): + FAIL("hda2 not shown after detach of hda1!") + +s, o = traceCommand("xm block-detach %s 770" % domain.getName()) +if s != 0: + FAIL("block-list failed after detaching another device") +if o.find("770"): + FAIL("hda2 still shown in block-list after detach!") +if o: + FAIL("block-list still shows something after all devices detached!") + + _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |