From 3b69ba799fd302a781f2ec760909f340e3b90236 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 9 Jun 2019 23:20:49 +0200 Subject: 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 --- util-linux/losetup.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'util-linux') 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"); -- cgit v1.2.3