This commit is contained in:
parent
8c81bc310e
commit
451287a11c
84
blktap.patch
Normal file
84
blktap.patch
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
bug #239173
|
||||||
|
bug #242953
|
||||||
|
|
||||||
|
Index: xen-3.1-testing/tools/python/xen/xend/XendDomainInfo.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
|
||||||
|
+++ xen-3.1-testing/tools/python/xen/xend/XendDomainInfo.py
|
||||||
|
@@ -1833,7 +1833,7 @@ class XendDomainInfo:
|
||||||
|
(fn, BOOTLOADER_LOOPBACK_DEVICE))
|
||||||
|
|
||||||
|
vbd = {
|
||||||
|
- 'mode': 'RO',
|
||||||
|
+ 'mode': 'RW',
|
||||||
|
'device': BOOTLOADER_LOOPBACK_DEVICE,
|
||||||
|
}
|
||||||
|
|
||||||
|
Index: xen-3.1-testing/tools/ioemu/xenstore.c
|
||||||
|
===================================================================
|
||||||
|
--- xen-3.1-testing.orig/tools/ioemu/xenstore.c
|
||||||
|
+++ xen-3.1-testing/tools/ioemu/xenstore.c
|
||||||
|
@@ -81,9 +81,9 @@ void xenstore_parse_domain_config(int do
|
||||||
|
{
|
||||||
|
char **e = NULL;
|
||||||
|
char *buf = NULL, *path;
|
||||||
|
- char *fpath = NULL, *bpath = NULL,
|
||||||
|
+ char *fpath = NULL, *bpath = NULL, *btype = NULL,
|
||||||
|
*dev = NULL, *params = NULL, *type = NULL, *media_present = NULL;
|
||||||
|
- int i, is_scsi;
|
||||||
|
+ int i, is_scsi, is_tap;
|
||||||
|
unsigned int len, num, hd_index;
|
||||||
|
|
||||||
|
for(i = 0; i < MAX_DISKS + MAX_SCSI_DISKS; i++)
|
||||||
|
@@ -116,6 +116,14 @@ void xenstore_parse_domain_config(int do
|
||||||
|
bpath = xs_read(xsh, XBT_NULL, buf, &len);
|
||||||
|
if (bpath == NULL)
|
||||||
|
continue;
|
||||||
|
+ /* check to see if type is tap or not */
|
||||||
|
+ if (pasprintf(&buf, "%s/type", bpath) == -1)
|
||||||
|
+ continue;
|
||||||
|
+ free(btype);
|
||||||
|
+ btype = xs_read(xsh, XBT_NULL, buf, &len);
|
||||||
|
+ if (btype == NULL)
|
||||||
|
+ continue;
|
||||||
|
+ is_tap = !strncmp(btype, "tap", 3);
|
||||||
|
/* read the name of the device */
|
||||||
|
if (pasprintf(&buf, "%s/dev", bpath) == -1)
|
||||||
|
continue;
|
||||||
|
@@ -123,6 +131,13 @@ void xenstore_parse_domain_config(int do
|
||||||
|
dev = xs_read(xsh, XBT_NULL, buf, &len);
|
||||||
|
if (dev == NULL)
|
||||||
|
continue;
|
||||||
|
+ /* Force xvdN to look like hdN */
|
||||||
|
+ if (is_tap && !strncmp(dev, "xvd", 3)) {
|
||||||
|
+ memmove(dev, dev+1, strlen(dev));
|
||||||
|
+ dev[0] = 'h';
|
||||||
|
+ dev[1] = 'd';
|
||||||
|
+ fprintf(stderr, "Got blktap '%s'\n", dev);
|
||||||
|
+ }
|
||||||
|
is_scsi = !strncmp(dev, "sd", 2);
|
||||||
|
if ((strncmp(dev, "hd", 2) && !is_scsi) || strlen(dev) != 3 )
|
||||||
|
continue;
|
||||||
|
@@ -140,6 +155,14 @@ void xenstore_parse_domain_config(int do
|
||||||
|
params = xs_read(xsh, XBT_NULL, buf, &len);
|
||||||
|
if (params == NULL)
|
||||||
|
continue;
|
||||||
|
+ /* Strip off blktap sub-type prefix aio: etc */
|
||||||
|
+ if (is_tap) {
|
||||||
|
+ char *offset = strchr(params, ':');
|
||||||
|
+ if (!offset)
|
||||||
|
+ continue;
|
||||||
|
+ memmove(params, offset+1, strlen(offset+1)+1);
|
||||||
|
+ fprintf(stderr, "Got params '%s'\n", params);
|
||||||
|
+ }
|
||||||
|
/*
|
||||||
|
* check if device has a phantom vbd; the phantom is hooked
|
||||||
|
* to the frontend device (for ease of cleanup), so lookup
|
||||||
|
@@ -196,6 +219,7 @@ void xenstore_parse_domain_config(int do
|
||||||
|
free(type);
|
||||||
|
free(params);
|
||||||
|
free(dev);
|
||||||
|
+ free(btype);
|
||||||
|
free(bpath);
|
||||||
|
free(buf);
|
||||||
|
free(path);
|
@ -77,12 +77,13 @@ class Wholedisk:
|
|||||||
"Class representing a whole disk that may have partitions"
|
"Class representing a whole disk that may have partitions"
|
||||||
def __init__(self, vdev, pdev):
|
def __init__(self, vdev, pdev):
|
||||||
"c'tor: set up"
|
"c'tor: set up"
|
||||||
self.is_blk = (S_ISBLK(os.stat(pdev)[ST_MODE]))
|
|
||||||
self.ldev = None
|
self.ldev = None
|
||||||
self.vdev = vdev
|
self.vdev = vdev
|
||||||
self.pdev = pdev
|
self.pdev = pdev
|
||||||
self.mapped = 0
|
self.mapped = 0
|
||||||
self.partitions = []
|
self.partitions = []
|
||||||
|
self.pcount = 0
|
||||||
|
self.is_blk = (S_ISBLK(os.stat(pdev)[ST_MODE]))
|
||||||
self.pcount = self.scanpartitions()
|
self.pcount = self.scanpartitions()
|
||||||
|
|
||||||
def physdev(self):
|
def physdev(self):
|
||||||
@ -251,11 +252,16 @@ class Partition:
|
|||||||
mopts = ""
|
mopts = ""
|
||||||
if fstype:
|
if fstype:
|
||||||
mopts += " -t %s" % fstype
|
mopts += " -t %s" % fstype
|
||||||
|
if options:
|
||||||
mopts += " -o %s" % options
|
mopts += " -o %s" % options
|
||||||
verbose_print("mount %s '%s' %s" % (mopts, self.pdev, mtpt))
|
verbose_print("mount %s '%s' %s" % (mopts, self.pdev, mtpt))
|
||||||
fd = os.popen("mount %s '%s' %s" % (mopts, self.pdev, mtpt))
|
fd = os.popen("mount %s '%s' %s" % (mopts, self.pdev, mtpt))
|
||||||
err = fd.close()
|
err = fd.close()
|
||||||
if err:
|
if err:
|
||||||
|
try:
|
||||||
|
os.rmdir(mtpt)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
raise RuntimeError("Error %i from mount %s '%s' on %s" % \
|
raise RuntimeError("Error %i from mount %s '%s' on %s" % \
|
||||||
(err, mopts, self.pdev, mtpt))
|
(err, mopts, self.pdev, mtpt))
|
||||||
self.mountpoint = mtpt
|
self.mountpoint = mtpt
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 27 10:50:58 MDT 2007 - ccoffing@novell.com
|
||||||
|
|
||||||
|
- #242953: Allow HVM to use blktap
|
||||||
|
- #239173: block-attach as RW for domUloader to avoid failures with
|
||||||
|
reiserfs (since blktap does not yet correctly communicate RO to
|
||||||
|
the kernel)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jul 23 12:57:45 MDT 2007 - ccoffing@novell.com
|
Mon Jul 23 12:57:45 MDT 2007 - ccoffing@novell.com
|
||||||
|
|
||||||
|
9
xen.spec
9
xen.spec
@ -34,7 +34,7 @@ BuildRequires: glibc-32bit glibc-devel-32bit
|
|||||||
BuildRequires: kernel-source kernel-syms xorg-x11
|
BuildRequires: kernel-source kernel-syms xorg-x11
|
||||||
%endif
|
%endif
|
||||||
Version: 3.1.0_15042
|
Version: 3.1.0_15042
|
||||||
Release: 14
|
Release: 19
|
||||||
License: GPL v2 or later
|
License: GPL v2 or later
|
||||||
Group: System/Kernel
|
Group: System/Kernel
|
||||||
Autoreqprov: on
|
Autoreqprov: on
|
||||||
@ -155,6 +155,7 @@ Patch208: x86-emul-rf.patch
|
|||||||
Patch209: vmx-check-descr.patch
|
Patch209: vmx-check-descr.patch
|
||||||
Patch210: x86_64-syscall-clear-df.patch
|
Patch210: x86_64-syscall-clear-df.patch
|
||||||
Patch211: 32on64-extra-mem.patch
|
Patch211: 32on64-extra-mem.patch
|
||||||
|
Patch212: blktap.patch
|
||||||
URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
|
URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
ExclusiveArch: %ix86 x86_64 ia64
|
ExclusiveArch: %ix86 x86_64 ia64
|
||||||
@ -623,6 +624,7 @@ Authors:
|
|||||||
%patch209 -p1
|
%patch209 -p1
|
||||||
%patch210 -p1
|
%patch210 -p1
|
||||||
%patch211 -p1
|
%patch211 -p1
|
||||||
|
%patch212 -p1
|
||||||
XEN_EXTRAVERSION=%version-%release
|
XEN_EXTRAVERSION=%version-%release
|
||||||
XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}}
|
XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}}
|
||||||
sed -i "s/XEN_EXTRAVERSION[\t ]*.=.*\$/XEN_EXTRAVERSION = $XEN_EXTRAVERSION/" xen/Makefile
|
sed -i "s/XEN_EXTRAVERSION[\t ]*.=.*\$/XEN_EXTRAVERSION = $XEN_EXTRAVERSION/" xen/Makefile
|
||||||
@ -934,6 +936,11 @@ rm -f $RPM_BUILD_ROOT/%pysite/*.egg-info
|
|||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jul 27 2007 - ccoffing@novell.com
|
||||||
|
- #242953: Allow HVM to use blktap
|
||||||
|
- #239173: block-attach as RW for domUloader to avoid failures with
|
||||||
|
reiserfs (since blktap does not yet correctly communicate RO to
|
||||||
|
the kernel)
|
||||||
* Mon Jul 23 2007 - ccoffing@novell.com
|
* Mon Jul 23 2007 - ccoffing@novell.com
|
||||||
- Drop xen-bootloader-dryrun.diff; not needed for xen 3.1
|
- Drop xen-bootloader-dryrun.diff; not needed for xen 3.1
|
||||||
- rpmlint: Actually apply patch for #280637
|
- rpmlint: Actually apply patch for #280637
|
||||||
|
Loading…
x
Reference in New Issue
Block a user