14.08.2012 16:33, Harald Becker wrote: > Hi all, > > looks like there is a bug in Busybox mountpoint: > > $ mkdir m r > $ mount -obind m r > $ touch m/a touch m/b > $ ls m/ > a b > $ ls r/ > a b > $ mountpoint r > r is a mountpoint > $ busybox mountpoint > r is not a mountpoint !!! > > Looks that Busybox mountpoint ignore via bind mounted directories and > illegally report them as not being a mounted point. Did not dig into > source, just detected that bug.
If you can detect such a mountpoint somehow, without resorting to parsing /proc/mounts, please let the world know. Usual trick to detect a mountpoint is to stat(2) the directory in question and the parent directory of it, and compare st_rdev fields of the two (see man 2 stat). If they differ, it is a mountpoint, if they're the same, it is not. When you bind-mount one directory into another in the same system, both will have the same st_rdev. So there's no known way to detect such mountpoints, and parsing /proc/mounts is at least slow and unreliable. Note: you can also bind-mount a single _file_, not a directory. This has the same issue. This is a kernel interface problem, and is known since the day bind mounts were introduced in 2.4 kernel. Thanks, /mjt _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
