From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 07 Jun 2023 14:16:37 +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 1q6s5f-00EJuT-4z for lore@lore.pengutronix.de; Wed, 07 Jun 2023 14:16:37 +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 1q6s5a-0006Cu-T8; Wed, 07 Jun 2023 14:16:34 +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 1q6s5X-000660-Ru; Wed, 07 Jun 2023 14:16:31 +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 1q6s5X-005jma-8Q; Wed, 07 Jun 2023 14:16:31 +0200 Received: from afa by dude05.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1q6s5V-00DNCj-LS; Wed, 07 Jun 2023 14:16:29 +0200 From: Ahmad Fatoum To: oss-tools@pengutronix.de Date: Wed, 7 Jun 2023 14:16:27 +0200 Message-Id: <20230607121628.3180139-8-a.fatoum@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230607121628.3180139-1-a.fatoum@pengutronix.de> References: <20230607121628.3180139-1-a.fatoum@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [OSS-Tools] [PATCH v2 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 ae98543400b6..a55bc9b8d27d 100644 --- a/src/libdt.c +++ b/src/libdt.c @@ -2560,18 +2560,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