From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 31 May 2023 17:23:01 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1q4NfC-004QQV-Ol for lore@lore.pengutronix.de; Wed, 31 May 2023 17:23:01 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1q4Nf9-0005mi-5t; Wed, 31 May 2023 17:22:59 +0200 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q4Nf6-0005fN-RY; Wed, 31 May 2023 17:22:56 +0200 Received: from [2a0a:edc0:0:1101:1d::54] (helo=dude05.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1q4Nf6-0049B3-6q; Wed, 31 May 2023 17:22:56 +0200 Received: from afa by dude05.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1q4Nf4-005uEA-C4; Wed, 31 May 2023 17:22:54 +0200 From: Ahmad Fatoum To: oss-tools@pengutronix.de Date: Wed, 31 May 2023 17:22:52 +0200 Message-Id: <20230531152253.1407395-8-a.fatoum@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230531152253.1407395-1-a.fatoum@pengutronix.de> References: <20230531152253.1407395-1-a.fatoum@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [OSS-Tools] [PATCH 7/8] libdt: use of_find_device_by_uuid for partuuid lookup X-BeenThere: oss-tools@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: Pengutronix Public Open-Source-Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "OSS-Tools" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: oss-tools-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false With the addition of of_find_device_by_uuid as part of the support for barebox,storage-by-uuid, we don't need to rely on the device symlinks created by 60-persistent-storage.rules and instead can just use libudev directly, which we do elsewhere anyway. This has the added benefit that we unify with the other code paths, where we determine the device path through the struct udev_device. Signed-off-by: Ahmad Fatoum --- src/libdt.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/libdt.c b/src/libdt.c index 1cfca40f9f79..4c000919d305 100644 --- a/src/libdt.c +++ b/src/libdt.c @@ -2558,18 +2558,22 @@ static int __of_cdev_find(struct device_node *partition_node, struct cdev *cdev) /* when partuuid is specified short-circuit the search for the cdev */ ret = of_property_read_string(partition_node, "partuuid", &uuid); if (!ret) { - const char prefix[] = "/dev/disk/by-partuuid/"; - size_t prefix_len = sizeof(prefix) - 1; - char *lc_uuid, *s; + u64 partsize; + int ret; - lc_uuid = xzalloc(prefix_len + strlen(uuid) + 1); - s = memcpy(lc_uuid, prefix, prefix_len) + prefix_len; + dev = of_find_device_by_uuid(NULL, uuid, false); + if (!dev) { + fprintf(stderr, "%s: cannot find device for uuid %s\n", __func__, + uuid); + return -ENODEV; + } - while (*uuid) - *s++ = tolower(*uuid++); - - cdev->devpath = lc_uuid; + ret = udev_device_parse_sysattr_u64(dev, "size", &partsize); + if (ret) + return -EINVAL; + cdev->size = partsize * 512; + cdev->devpath = strdup(udev_device_get_devnode(dev)); return 0; } } -- 2.39.2