[PATCH 18/18] cdev: follow links in cdev_find_child_by_gpt_typeuuid

Ahmad Fatoum a.fatoum at pengutronix.de
Sun Apr 13 23:31:52 PDT 2025


Now that we can have a link pointing from the parent, follow it to make
cdev_find_child_by_gpt_typeuuid resolves to the correct partition.

This doesn't affect state-by-alias, because __of_cdev_find already calls
cdev_readlink, but that's an implementation detail that we shouldn't
depend on in cdev_find_child_by_gpt_typeuuid.

Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 fs/devfs-core.c | 3 +++
 include/block.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/fs/devfs-core.c b/fs/devfs-core.c
index d1e4e1f0f6b5..8f504abdfd8d 100644
--- a/fs/devfs-core.c
+++ b/fs/devfs-core.c
@@ -133,6 +133,9 @@ cdev_find_child_by_gpt_typeuuid(struct cdev *cdev, const guid_t *typeuuid)
 {
 	struct cdev *partcdev;
 
+        /* Follow links to support storage-by-alias */
+        cdev = cdev_readlink(cdev);
+
 	if (!cdev_is_gpt_partitioned(cdev))
 		return ERR_PTR(-EINVAL);
 
diff --git a/include/block.h b/include/block.h
index 0ca6c6aff6e9..5ce3eb7d7838 100644
--- a/include/block.h
+++ b/include/block.h
@@ -112,6 +112,7 @@ static inline bool cdev_is_block_partition(const struct cdev *cdev)
 
 static inline bool cdev_is_block_disk(const struct cdev *cdev)
 {
+	cdev = cdev_readlink(cdev);
 	return cdev_is_block_device(cdev) && !cdev_is_partition(cdev);
 }
 
-- 
2.39.5




More information about the barebox mailing list