Skip to contentSkip to conversation

pygrub: cleanup and support for NetBSD

PATCH In review Christoph Egger 3 participants 4 messages Mar 26, 2008 – Mar 28, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pygrub: cleanup and support for NetBSD

Hi Keir,

Attached patch gets rid of the global attr variable and adds support for NetBSD.

Signature · 12 lines
AMD Saxony, Dresden, Germany
Operating System Research Center

Legal Information:
AMD Saxony Limited Liability Company & Co. KG
Sitz (Geschäftsanschrift):
   Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland
Registergericht Dresden: HRA 4896
vertretungsberechtigter Komplementär:
   AMD Saxony LLC (Sitz Wilmington, Delaware, USA)
Geschäftsführer der AMD Saxony LLC:
   Dr. Hans-R. Deppe, Thomas McCoy
tools/pygrub/src/pygrub +8 -7
diff -r 966c04d42e94 tools/pygrub/src/pygrub
@@ -240,10 +240,10 @@ class Grub:
             if y > self.start_image + maxy:
                 break
             if y == self.selected_image:
-                attr = curses.A_REVERSE
-            else:
-                attr = 0
-            self.entry_win.addstr(y + 1 - self.start_image, 2, i.title.ljust(70), attr)
+                self.entry_win.attron(curses.A_REVERSE)
+            self.entry_win.addstr(y + 1 - self.start_image, 2, i.title.ljust(70))
+            if y == self.selected_image:
+                self.entry_win.attroff(curses.A_REVERSE)
         self.entry_win.refresh()
 
     def edit_entry(self, origimg):
@@ -269,16 +269,17 @@ class Grub:
             self.entry_win.box()
             for idx in range(1, len(img.lines)):
                 # current line should be highlighted
-                attr = 0
                 if idx == curline:
-                    attr = curses.A_REVERSE
+                    self.entry_win.attron(curses.A_REVERSE)
 
                 # trim the line
                 l = img.lines[idx].ljust(70)
                 if len(l) > 70:
                     l = l[:69] + ">"
                     
-                self.entry_win.addstr(idx, 2, l, attr)
+                self.entry_win.addstr(idx, 2, l)
+                if idx == curline:
+                    self.entry_win.attroff(curses.A_REVERSE)
             self.entry_win.refresh()
 
             c = self.screen.getch()
tools/python/xen/xend/XendBootloader.py +6 -6
diff -r 966c04d42e94 tools/python/xen/xend/XendBootloader.py
@@ -12,7 +12,7 @@
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #
 
-import os, select, errno, stat, signal
+import os, select, errno, stat, signal, tty
 import random
 import shlex
 from xen.xend import sxp
@@ -43,6 +43,9 @@ def bootloader(blexec, disk, dom, quiet 
         log.error(msg)
         raise VmError(msg)
 
+    if os.uname()[0] == "NetBSD" and disk.startswith('/dev/'):
+       disk = disk.replace("/dev/", "/dev/r")
+
     mkdir.parents("/var/run/xend/boot/", stat.S_IRWXU)
 
     while True:
@@ -63,12 +66,9 @@ def bootloader(blexec, disk, dom, quiet 
     # where we copy characters between the two master fds, as well as
     # listening on the bootloader's fifo for the results.
 
-    # Termios runes for very raw access to the pty master fds.
-    attr = [ 0, 0, termios.CS8 | termios.CREAD | termios.CLOCAL,
-             0, 0, 0, [0] * 32 ]
-
     (m1, s1) = pty.openpty()
     termios.tcsetattr(m1, termios.TCSANOW, attr)
+    tty.setraw(m1);
     fcntl.fcntl(m1, fcntl.F_SETFL, os.O_NDELAY);
     os.close(s1)
     slavename = ptsname.ptsname(m1)
@@ -109,7 +109,7 @@ def bootloader(blexec, disk, dom, quiet 
     # record that this domain is bootloading
     dom.bootloader_pid = child
 
-    termios.tcsetattr(m2, termios.TCSANOW, attr)
+    tty.setraw(m2);
     fcntl.fcntl(m2, fcntl.F_SETFL, os.O_NDELAY);
     while True:
         try:

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#1 lore raw

Hi Christoph,

your patch made my linux guest unbootable. Here is the xend.log.

Regards,
Hiroya

2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:2279)

XendDomainInfo.destroy: domid=1
[2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:2296) XendDomainInfo.destroyDomain(1)
[2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:1857) No device model [2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:1859) Releasing devices [2008-03-28 16:11:07 4582] ERROR (SrvBase:88) Request start failed. Traceback (most recent call last):
File "//usr/lib/python/xen/web/SrvBase.py", line 85, in perform
return op_method(op, req)
File "//usr/lib/python/xen/xend/server/SrvDomain.py", line 77, in op_start
return self.xd.domain_start(self.dom.getName(), paused)
File "//usr/lib/python/xen/xend/XendDomain.py", line 1030, in domain_start
dominfo.start(is_managed = True)
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 420, in start

    XendTask.log_progress(31, 60, self._initDomain)

File "//usr/lib/python/xen/xend/XendTask.py", line 209, in log_progress
retval = func(*args, **kwds)
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 2046, in
_initDomain
self._configureBootloader()
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 2446, in
_configureBootloader
bootloader_args, kernel, ramdisk, args)
File "//usr/lib/python/xen/xend/XendBootloader.py", line 70, in bootloader
termios.tcsetattr(m1, termios.TCSANOW, attr)
NameError: global name 'attr' is not defined

Quoted 14 lines · Christoph Egger

Hi Keir,

Attached patch gets rid of the global attr variable and adds support for NetBSD.

------------------------------------------------------------------------

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#2 lore raw

Fixed as changeset 17314.

-- Keir

Quoted 58 lines · INAKOSHI Hiroya

Hi Christoph,

your patch made my linux guest unbootable. Here is the xend.log.

Regards,
Hiroya

2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:2279)

XendDomainInfo.destroy: domid=1
[2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:2296) XendDomainInfo.destroyDomain(1)
[2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:1857) No device model [2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:1859) Releasing devices [2008-03-28 16:11:07 4582] ERROR (SrvBase:88) Request start failed. Traceback (most recent call last):
File "//usr/lib/python/xen/web/SrvBase.py", line 85, in perform
return op_method(op, req)
File "//usr/lib/python/xen/xend/server/SrvDomain.py", line 77, in op_start
return self.xd.domain_start(self.dom.getName(), paused)
File "//usr/lib/python/xen/xend/XendDomain.py", line 1030, in domain_start
dominfo.start(is_managed = True)
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 420, in start

    XendTask.log_progress(31, 60, self._initDomain)

File "//usr/lib/python/xen/xend/XendTask.py", line 209, in log_progress
retval = func(*args, **kwds)
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 2046, in
_initDomain
self._configureBootloader()
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 2446, in
_configureBootloader
bootloader_args, kernel, ramdisk, args)
File "//usr/lib/python/xen/xend/XendBootloader.py", line 70, in bootloader
termios.tcsetattr(m1, termios.TCSANOW, attr)
NameError: global name 'attr' is not defined

Quoted 8 lines · Christoph Egger

Hi Keir,

Attached patch gets rid of the global attr variable and adds support for NetBSD.

Quoted 6 lines

------------------------------------------------------------------------

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#3 lore raw
Quoted 1 line · On Friday 28 March 2008 08:35:33 Keir Fraser wrote:

Fixed as changeset 17314.

I can confirm this fix is correct. I don't know how this could slip through when I submitted the patch. Sorry for that.

Christoph

Quoted 59 lines

-- Keir

Quoted 55 lines · INAKOSHI Hiroya

Hi Christoph,

your patch made my linux guest unbootable. Here is the xend.log.

Regards,
Hiroya

2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:2279)

XendDomainInfo.destroy: domid=1
[2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:2296) XendDomainInfo.destroyDomain(1)
[2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:1857) No device model [2008-03-28 16:11:07 4582] DEBUG (XendDomainInfo:1859) Releasing devices [2008-03-28 16:11:07 4582] ERROR (SrvBase:88) Request start failed. Traceback (most recent call last):
File "//usr/lib/python/xen/web/SrvBase.py", line 85, in perform
return op_method(op, req)
File "//usr/lib/python/xen/xend/server/SrvDomain.py", line 77, in
op_start return self.xd.domain_start(self.dom.getName(), paused)
File "//usr/lib/python/xen/xend/XendDomain.py", line 1030, in
domain_start dominfo.start(is_managed = True)
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 420, in start

    XendTask.log_progress(31, 60, self._initDomain)

File "//usr/lib/python/xen/xend/XendTask.py", line 209, in log_progress
retval = func(*args, **kwds)
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 2046, in
_initDomain
self._configureBootloader()
File "//usr/lib/python/xen/xend/XendDomainInfo.py", line 2446, in
_configureBootloader
bootloader_args, kernel, ramdisk, args)
File "//usr/lib/python/xen/xend/XendBootloader.py", line 70, in
bootloader termios.tcsetattr(m1, termios.TCSANOW, attr)
NameError: global name 'attr' is not defined

Quoted 8 lines · Christoph Egger

Hi Keir,

Attached patch gets rid of the global attr variable and adds support for NetBSD.

Quoted 6 lines

------------------------------------------------------------------------

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

Signature · 12 lines
AMD Saxony, Dresden, Germany
Operating System Research Center

Legal Information:
AMD Saxony Limited Liability Company & Co. KG
Sitz (Geschäftsanschrift):
   Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland
Registergericht Dresden: HRA 4896
vertretungsberechtigter Komplementär:
   AMD Saxony LLC (Sitz Wilmington, Delaware, USA)
Geschäftsführer der AMD Saxony LLC:
   Dr. Hans-R. Deppe, Thomas McCoy