From b11738d799321adfdb40f8af4cd758fe663e3805 Mon Sep 17 00:00:00 2001 From: ondra Date: Fri, 11 Jan 2019 14:45:38 +0000 Subject: [PATCH] Handle alternative loop device location on Android Signed-off-by: ondra --- src/lxc/utils.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index ef71b6df7..22adf15a9 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -1485,8 +1485,16 @@ static int lxc_get_unused_loop_dev(char *name_loop) goto on_error; fd_tmp = open(name_loop, O_RDWR | O_CLOEXEC); - if (fd_tmp < 0) - SYSERROR("Failed to open loop \"%s\"", name_loop); + if (fd_tmp < 0) { + /* on Android loop devices are moved under /dev/block, give it a shot */ + ret = snprintf(name_loop, LO_NAME_SIZE, "/dev/block/loop%d", loop_nr); + if (ret < 0 || ret >= LO_NAME_SIZE) + goto on_error; + + fd_tmp = open(name_loop, O_RDWR | O_CLOEXEC); + if (fd_tmp < 0) + SYSERROR("Failed to open loop \"%s\"", name_loop); + } on_error: close(fd_ctl); -- 2.47.2