]> err.no Git - util-linux/commit
losetup: looplist_* refactoring, remove scandir()
authorKarel Zak <kzak@redhat.com>
Fri, 1 Aug 2008 10:18:03 +0000 (12:18 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 4 Aug 2008 11:54:27 +0000 (13:54 +0200)
commitedb68d0ca36c54fa5996bfd917eb236780f0ff80
tree3bdadcc76666480f4422b68c3ab880b4210cd18a
parentd144727bc3e5f77692fc2d6b5c1dbf5d05fc495c
losetup: looplist_* refactoring, remove scandir()

This patch replaces scandir-based implementation with readdir(). The
readdir(3) is less expensive and more portable (to non-glibc environment).

The patch also replaces sysfs-based solution with simpler /proc/partitions
parsing. The /proc/partitions includes all used loop devices on all systems
(include 2.4). This solution seems faster than scandir(/sys/block/) too.

Summary, the losetup (with this patch) uses three methods to found a
loop device:

  a) parse /proc/partitions to found already used loop devices (for
     loserup -a)

  b) stat(2) for all loop[0-7] devices (default number of loop devices).
     This is classic method from util-linux <= 2.13. This method is good
     enough for standard Linux machines with default number of loop
     devices.

  c) scan all /dev or /dev/loop/ for loop devices. This is useful for
     crazy people who need more than 8 loop devices.

Signed-off-by: Karel Zak <kzak@redhat.com>
include/pathnames.h
mount/lomount.c