From: ondra Date: Fri, 11 Jan 2019 14:45:38 +0000 (+0000) Subject: Handle alternative loop device location on Android X-Git-Tag: lxc-3.2.0~187^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b11738d799321adfdb40f8af4cd758fe663e3805;p=thirdparty%2Flxc.git Handle alternative loop device location on Android Signed-off-by: ondra --- 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);