diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-06-09 23:20:49 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-06-09 23:20:49 +0200 |
commit | 3b69ba799fd302a781f2ec760909f340e3b90236 (patch) | |
tree | 37f2545a39600dcbc45a65903ef8b0ca7679a5d6 /util-linux | |
parent | 7b6d4f50c97b4f375687e8216313b10598b44b49 (diff) | |
download | busybox-3b69ba799fd302a781f2ec760909f340e3b90236.tar.gz |
mount,losetup: use /dev/loop-control is it exists
function old new delta
get_free_loop - 58 +58
set_loop 597 649 +52
losetup_main 482 476 -6
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 110/-6) Total: 104 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/losetup.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/util-linux/losetup.c b/util-linux/losetup.c index b52d693ec..5dc757074 100644 --- a/util-linux/losetup.c +++ b/util-linux/losetup.c @@ -114,8 +114,14 @@ int losetup_main(int argc UNUSED_PARAM, char **argv) /* contains -f */ if (opt & OPT_f) { char *s; - int n = 0; + int n; + n = get_free_loop(); + if (n == -1) + bb_error_msg_and_die("no free loop devices"); + if (n < 0) /* n == -2: no /dev/loop-control, use legacy method */ + n = 0; + /* or: n >= 0: the number of next free loopdev, just verify it */ do { if (n > MAX_LOOP_NUM) bb_error_msg_and_die("no free loop devices"); |