summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Stelmach <l.stelmach@samsung.com>2014-01-07 15:00:22 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-01-11 16:50:09 -0500
commit843f737ade9c73609a2280dd3dd16e18222a5dcb (patch)
tree2d6dcaabea02944122f27912021b7409b06b7ffa
parent0d8efe3535b3ce9ecbc2c6482007edfc3ac492d0 (diff)
gpt-auto-generator: skip nonexistent devices
The devices we work with have eMMC chips for storage. The chips provide four "hardware" partitions. The first is /dev/mmcblk0, it takes almost whole space and holds a GPT with several real partitions (/dev/mmcblk0p?). Then there are three block devices (mmcblk0boot0, mmcblk0boot1, rpmb) that are part of the same hardware as mmcblk0 that are presented by the kernel as children of the latter. That relationship makes gpt-auto-generator try to peek them but since they are not GPT partitions blkid_do_safeprobe() returns -2 making verify_gpt_parition() function return -ENODEV.
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index 017c35dcd6..e21ede94da 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -297,6 +297,9 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
r = verify_gpt_partition(node, &type_id, &nr, &fstype);
if (r < 0) {
+ /* skip child devices which are not detected properly */
+ if (r == -ENODEV)
+ continue;
log_error("Failed to verify GPT partition %s: %s",
node, strerror(-r));
return r;