diff mbox

pygrub: remove isconfig option

Message ID 1458677199-10301-1-git-send-email-firas.azar@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Firas Azar March 22, 2016, 8:06 p.m. UTC
The pygrub command option "isconfig" is broken and obsolete. This patch removes it since the alternate options "-l -n" provide the same functionality.

Signed-off-by: Firas Azar <firas.azar@oracle.com>
---
 tools/pygrub/src/pygrub | 21 +++++----------------
 1 file changed, 5 insertions(+), 16 deletions(-)

Comments

Andrew Cooper March 22, 2016, 8:22 p.m. UTC | #1
On 22/03/16 20:06, Firas Azar wrote:
> The pygrub command option "isconfig" is broken and obsolete. This patch removes it since the alternate options "-l -n" provide the same functionality.

Broken how?

Are you sure that no existing software is using that option?

~Andrew
Firas Azar March 22, 2016, 8:46 p.m. UTC | #2
Andrew:

Currently if we use pygrub --isconfig <image>, there is a good chance 
that this command could fail with an "out of memory" error. This can 
happen especially if the image file in question is at least a few 
gigabytes in size and the dom0_mem setting is relatively small. So even 
if any software used this option it is likely it would fail. This 
problem is due to the parser using "readlines" function in GrubConf.py, 
which attempts to load the entire file into memory.

The advantage of "-l -n" option is that it exercises the "real" code 
path, which boots the PV guests.

Regards

--Firas

On 03/22/2016 04:22 PM, Andrew Cooper wrote:
> On 22/03/16 20:06, Firas Azar wrote:
>> The pygrub command option "isconfig" is broken and obsolete. This patch removes it since the alternate options "-l -n" provide the same functionality.
> Broken how?
>
> Are you sure that no existing software is using that option?
>
> ~Andrew
Boris Ostrovsky March 22, 2016, 8:54 p.m. UTC | #3
On 03/22/2016 04:46 PM, Firas Azar wrote:
> Andrew:
>
> Currently if we use pygrub --isconfig <image>, there is a good chance 
> that this command could fail with an "out of memory" error. This can 
> happen especially if the image file in question is at least a few 
> gigabytes in size and the dom0_mem setting is relatively small. So 
> even if any software used this option it is likely it would fail. This 
> problem is due to the parser using "readlines" function in 
> GrubConf.py, which attempts to load the entire file into memory.

FWIW, the same problem is observed on unstable. Running this option 
results in very high disk IO rate and eventually OOM killer wakes up and 
whacks pygrub.

So chances are this has been broken for a while since I believe Firas is 
working with 4.4. I haven't tried anything other than unstable though.

-boris


>
> The advantage of "-l -n" option is that it exercises the "real" code 
> path, which boots the PV guests.
>
> Regards
>
> --Firas
>
> On 03/22/2016 04:22 PM, Andrew Cooper wrote:
>> On 22/03/16 20:06, Firas Azar wrote:
>>> The pygrub command option "isconfig" is broken and obsolete. This 
>>> patch removes it since the alternate options "-l -n" provide the 
>>> same functionality.
>> Broken how?
>>
>> Are you sure that no existing software is using that option?
>>
>> ~Andrew
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
diff mbox

Patch

diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index 40f9584..82d4f01 100755
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -776,10 +776,11 @@  if __name__ == "__main__":
 
     try:
         opts, args = getopt.gnu_getopt(sys.argv[1:], 'qilnh::',
-                                   ["quiet", "interactive", "list-entries", "not-really", "help",
-                                    "output=", "output-format=", "output-directory=", "offset=",
-                                    "entry=", "kernel=", 
-                                    "ramdisk=", "args=", "isconfig", "debug"])
+                                   ["quiet", "interactive", "list-entries",
+                                    "not-really", "help", "output=",
+                                    "output-format=", "output-directory=",
+                                    "offset=", "entry=", "kernel=",
+                                    "ramdisk=", "args=", "debug"])
     except getopt.GetoptError:
         usage()
         sys.exit(1)
@@ -793,7 +794,6 @@  if __name__ == "__main__":
     entry = None
     interactive = True
     list_entries = False
-    isconfig = False
     part_offs = None
     debug = False
     not_really = False
@@ -838,8 +838,6 @@  if __name__ == "__main__":
             entry = a
             # specifying the entry to boot implies non-interactive
             interactive = False
-        elif o in ("--isconfig",):
-            isconfig = True
         elif o in ("--debug",):
             debug = True
         elif o in ("--output-format",):
@@ -871,15 +869,6 @@  if __name__ == "__main__":
     else:
         fd = os.open(output, os.O_WRONLY)
 
-    # debug
-    if isconfig:
-        chosencfg = run_grub(file, entry, fs, incfg["args"])
-        print "  kernel: %s" % chosencfg["kernel"]
-        if chosencfg["ramdisk"]:
-            print "  initrd: %s" % chosencfg["ramdisk"]
-        print "  args: %s" % chosencfg["args"]
-        sys.exit(0)
-
     # if boot filesystem is set then pass to fsimage.open
     bootfsargs = '"%s"' % incfg["args"]
     bootfsgroup = re.findall('zfs-bootfs=(.*?)[\s\,\"]', bootfsargs)