summaryrefslogtreecommitdiffstats
path: root/abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch
diff options
context:
space:
mode:
authorBritney Fransen <brfransen@gmail.com>2016-01-15 22:29:15 (GMT)
committerBritney Fransen <brfransen@gmail.com>2016-01-15 22:29:15 (GMT)
commit421b1c00b15b19b6d51c59da8befeda9741ae36b (patch)
tree89b84ec56f6891025827d37b119de26d77f61033 /abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch
parentd3f8722a113faa265a7abc29629fe467b095a1da (diff)
downloadlinhes_pkgbuild-421b1c00b15b19b6d51c59da8befeda9741ae36b.zip
linhes_pkgbuild-421b1c00b15b19b6d51c59da8befeda9741ae36b.tar.gz
linhes_pkgbuild-421b1c00b15b19b6d51c59da8befeda9741ae36b.tar.bz2
grub: update to 2.02.beta2
Diffstat (limited to 'abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch')
-rw-r--r--abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch b/abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch
new file mode 100644
index 0000000..60128ba
--- /dev/null
+++ b/abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch
@@ -0,0 +1,54 @@
+There is no explicit option to turn off alignment; it is implicitly
+disabled if one of --separator or --nameprefixes option is used.
+
+--separator was added in 2007, --nameprefixes - in 2009. So let's use
+--separator to extend range of versions we are compatible with. Note that
+one or another must be used, current parsing is broken otherwise.
+
+Signed-off-by: Andrey Borzenkov <address@hidden>
+
+---
+ util/getroot.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/util/getroot.c b/util/getroot.c
+index 2ad8a55..3afcf96 100644
+--- a/util/getroot.c
++++ b/util/getroot.c
+@@ -1322,7 +1322,7 @@ grub_util_get_dev_abstraction (const char *os_dev)
+ static void
+ pull_lvm_by_command (const char *os_dev)
+ {
+- char *argv[6];
++ char *argv[8];
+ int fd;
+ pid_t pid;
+ FILE *mdadm;
+@@ -1351,12 +1351,17 @@ pull_lvm_by_command (const char *os_dev)
+
+ /* execvp has inconvenient types, hence the casts. None of these
+ strings will actually be modified. */
++ /* by default PV name is left aligned in 10 character field, meaning that
++ we do not know where name ends. Using dummy --separator disables
++ alignment. We have a single field, so separator itself is not output */
+ argv[0] = (char *) "vgs";
+ argv[1] = (char *) "--options";
+ argv[2] = (char *) "pv_name";
+ argv[3] = (char *) "--noheadings";
+- argv[4] = vgname;
+- argv[5] = NULL;
++ argv[4] = (char *) "--separator";
++ argv[5] = (char *) ":";
++ argv[6] = vgname;
++ argv[7] = NULL;
+
+ pid = exec_pipe (argv, &fd);
+ free (vgname);
+@@ -1376,6 +1381,7 @@ pull_lvm_by_command (const char *os_dev)
+ while (getline (&buf, &len, mdadm) > 0)
+ {
+ char *ptr;
++ /* LVM adds two spaces as standard prefix */
+ for (ptr = buf; ptr < buf + 2 && *ptr == ' '; ptr++);
+ if (*ptr == '\0')
+ continue; \ No newline at end of file