[Toybox] [PATCH] mdev: Follow symbolic links in /sys
Marius Adaskevicius
marius.a at fods.com
Thu Nov 15 22:08:31 PST 2018
The current code does not follow symbolic links when iterating over /sys
entries
for block devices when run with -s flag. As a result, mdev rules are never
executed, for example, for USB flash drive partitions.
On i.MX6 board with 4.9.11 kernel:
/sys/block/sda ->
/sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda
/sys/block/sda/sda1 ->
/sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1
As a workaround, USB flash drive has to be reinserted so that mdev rules are
executed in response to kernel hotplug events. The issue can be fixed by
adding a flag to follow symbolic links so that partition entries could be
processed as well.
---
toys/pending/mdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/toys/pending/mdev.c b/toys/pending/mdev.c
index 0493f1a..b80efea 100644
--- a/toys/pending/mdev.c
+++ b/toys/pending/mdev.c
@@ -280,7 +280,7 @@ static int callback(struct dirtree *node)
// Circa 2.6.25 the entries more than 2 deep are all either redundant
// (mouse#, event#) or unnamed (every usb_* entry is called "device").
- return (node->parent && node->parent->parent) ? 0 : DIRTREE_RECURSE;
+ return (node->parent && node->parent->parent) ? 0 : (DIRTREE_RECURSE
| DIRTREE_SYMFOLLOW);
}
void mdev_main(void)
--
2.7.4
More information about the Toybox
mailing list