summaryrefslogtreecommitdiffstats
path: root/mount/lomount.c
diff options
context:
space:
mode:
authorMike Frysinger2009-05-10 22:57:31 +0200
committerKarel Zak2009-05-11 10:54:41 +0200
commit72f6902e435612f848cbe9993ce6298da8af996c (patch)
tree1820fc6c6fdbf643476a5ad20fa5602c48a46386 /mount/lomount.c
parentlscpu: fix cpuid code on x86/PIC (diff)
downloadkernel-qcow2-util-linux-72f6902e435612f848cbe9993ce6298da8af996c.tar.gz
kernel-qcow2-util-linux-72f6902e435612f848cbe9993ce6298da8af996c.tar.xz
kernel-qcow2-util-linux-72f6902e435612f848cbe9993ce6298da8af996c.zip
losetup: handle symlinks in /dev/loop/
The loop_scandir() expects all the files in /dev/loop/ to be actual devices and not symlinks to devices. However, udev by default sets up symlinks in /dev/loop/ thereby breaking the fallback scan logic when looking for devices more than the default number of 8. Simple way to reproduce is: - <detach all devices> - cd /dev/loop - rm -f [2-7] - losetup 0 autogen.sh - mv 1 8 - for n in {1..7} ; do ln -s 0 $n ; done - losetup -f <error but should have found /dev/loop/8> [kay.sievers@vrfy.org: just a note, udev does not do that by default. It is devfs-nonsense, which the "default" never did.] Signed-off-by: Mike Frysinger <vapier@gentoo.org> Reported-by: Mario Bachmann <grafgrimm77@gmx.de>
Diffstat (limited to 'mount/lomount.c')
-rw-r--r--mount/lomount.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mount/lomount.c b/mount/lomount.c
index d62198ef2..c173409ec 100644
--- a/mount/lomount.c
+++ b/mount/lomount.c
@@ -256,7 +256,7 @@ loop_scandir(const char *dirname, int **ary, int hasprefix)
*ary = NULL;
while((d = readdir(dir))) {
- if (d->d_type != DT_BLK && d->d_type != DT_UNKNOWN)
+ if (d->d_type != DT_BLK && d->d_type != DT_UNKNOWN && d->d_type != DT_LNK)
continue;
n = name2minor(hasprefix, d->d_name);
if (n == -1 || n < NLOOPS_DEFAULT)