Matej Habrnal 933436
From 57c975dfda165098502cdb9e2525bc7877301a12 Mon Sep 17 00:00:00 2001
Matej Habrnal 933436
From: Jakub Filak <jfilak@redhat.com>
Matej Habrnal 933436
Date: Mon, 13 Jun 2016 09:43:21 +0200
Matej Habrnal 933436
Subject: [PATCH] vmcore: fix finding partitions by UUID and LABEL
Matej Habrnal 933436
Matej Habrnal 933436
In kdump.conf fs partition can be specified by UUID or LABEL but mtab
Matej Habrnal 933436
uses only file system node path. Hence, we need to translate the ID to
Matej Habrnal 933436
its node path.
Matej Habrnal 933436
Matej Habrnal 933436
Related: rhbz#1147053
Matej Habrnal 933436
Matej Habrnal 933436
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Matej Habrnal 933436
---
Matej Habrnal 933436
 configure.ac                        |  2 ++
Matej Habrnal 933436
 src/hooks/Makefile.am               |  1 +
Matej Habrnal 933436
 src/hooks/abrt_harvest_vmcore.py.in | 27 +++++++++++++++++++++++++++
Matej Habrnal 933436
 3 files changed, 30 insertions(+)
Matej Habrnal 933436
Matej Habrnal 933436
diff --git a/configure.ac b/configure.ac
Matej Habrnal 933436
index 98e2564..8e13524 100644
Matej Habrnal 933436
--- a/configure.ac
Matej Habrnal 933436
+++ b/configure.ac
Matej Habrnal 933436
@@ -263,6 +263,8 @@ AC_ARG_ENABLE(doxygen-docs,
Matej Habrnal 933436
     [enable_doxygen_docs=no]
Matej Habrnal 933436
 )
Matej Habrnal 933436
 
Matej Habrnal 933436
+AC_PATH_PROG([BLKID], [BLKID], [/usr/sbin/blkid], [$PATH:/usr/sbin:/sbin])
Matej Habrnal 933436
+
Matej Habrnal 933436
 # Doxygen Documentation
Matej Habrnal 933436
 
Matej Habrnal 933436
 AC_PATH_PROG(DOXYGEN, doxygen, no)
Matej Habrnal 933436
diff --git a/src/hooks/Makefile.am b/src/hooks/Makefile.am
Matej Habrnal 933436
index bf68994..c0255d9 100644
Matej Habrnal 933436
--- a/src/hooks/Makefile.am
Matej Habrnal 933436
+++ b/src/hooks/Makefile.am
Matej Habrnal 933436
@@ -119,6 +119,7 @@ abrt-install-ccpp-hook: abrt-install-ccpp-hook.in
Matej Habrnal 933436
 abrt-harvest-vmcore: abrt_harvest_vmcore.py.in
Matej Habrnal 933436
 	sed -e s,\@CONF_DIR\@,\$(CONF_DIR)\,g \
Matej Habrnal 933436
 	    -e s,\@DEFAULT_DUMP_LOCATION\@,$(DEFAULT_DUMP_LOCATION),g \
Matej Habrnal 933436
+	    -e s,\@BLKID\@,$(BLKID),g \
Matej Habrnal 933436
 		$< >$@
Matej Habrnal 933436
 
Matej Habrnal 933436
 abrt-harvest-pstoreoops: abrt-harvest-pstoreoops.in
Matej Habrnal 933436
diff --git a/src/hooks/abrt_harvest_vmcore.py.in b/src/hooks/abrt_harvest_vmcore.py.in
Matej Habrnal 933436
index 61a6e57..ab976dc 100644
Matej Habrnal 933436
--- a/src/hooks/abrt_harvest_vmcore.py.in
Matej Habrnal 933436
+++ b/src/hooks/abrt_harvest_vmcore.py.in
Matej Habrnal 933436
@@ -13,6 +13,7 @@ import shutil
Matej Habrnal 933436
 import time
Matej Habrnal 933436
 import hashlib
Matej Habrnal 933436
 import augeas
Matej Habrnal 933436
+from subprocess import Popen, PIPE
Matej Habrnal 933436
 
Matej Habrnal 933436
 import problem
Matej Habrnal 933436
 import report
Matej Habrnal 933436
@@ -38,6 +39,32 @@ def get_mount_point(part_id):
Matej Habrnal 933436
     part_id - device node, label or uuid
Matej Habrnal 933436
     """
Matej Habrnal 933436
 
Matej Habrnal 933436
+    idtypes = {"UUID=":"-U", "PARTUUID=":"-U", "LABEL=":"-L", "PARTLABEL=":"-L"}
Matej Habrnal 933436
+
Matej Habrnal 933436
+    for typ, switch in idtypes.items():
Matej Habrnal 933436
+        if not part_id.startswith(typ):
Matej Habrnal 933436
+            continue
Matej Habrnal 933436
+
Matej Habrnal 933436
+        idf = part_id[len(typ):]
Matej Habrnal 933436
+        try:
Matej Habrnal 933436
+            proc = Popen(["@BLKID@", switch, idf], stdout=PIPE, stderr=PIPE)
Matej Habrnal 933436
+            out, err = proc.communicate()
Matej Habrnal 933436
+            if err:
Matej Habrnal 933436
+                sys.stderr.write("Failed 'blkid {0} {1}': {2}\n"
Matej Habrnal 933436
+                                 .format(switch, idf, err))
Matej Habrnal 933436
+                sys.exit(1)
Matej Habrnal 933436
+            if not out:
Matej Habrnal 933436
+                sys.stderr.write("No results from 'blkid {0} {1}'\n"
Matej Habrnal 933436
+                                 .format(switch, idf))
Matej Habrnal 933436
+                sys.exit(1)
Matej Habrnal 933436
+
Matej Habrnal 933436
+            part_id = out.decode().strip()
Matej Habrnal 933436
+            break
Matej Habrnal 933436
+        except OSError as ex:
Matej Habrnal 933436
+            sys.stderr.write("Cannot run 'blkid {0} {1}': {2}\n"
Matej Habrnal 933436
+                              .format(switch, idf, str(ex)))
Matej Habrnal 933436
+            sys.exit(1)
Matej Habrnal 933436
+
Matej Habrnal 933436
     # look up the identifier in /etc/mtab
Matej Habrnal 933436
     result = get_augeas("Fstab", "/etc/mtab").get("/files/etc/mtab/*"
Matej Habrnal 933436
                                  "[spec=\"" + part_id + "\"]/file")
Matej Habrnal 933436
-- 
Matej Habrnal 933436
2.7.4
Matej Habrnal 933436