]> git.proxmox.com Git - mirror_lxc.git/commitdiff
Handle alternative loop device location on Android
authorondra <ondrak@localhost.localdomain>
Fri, 11 Jan 2019 14:45:38 +0000 (14:45 +0000)
committerondra <ondrak@localhost.localdomain>
Fri, 18 Jan 2019 08:38:40 +0000 (10:38 +0200)
Signed-off-by: ondra <ondrak@localhost.localdomain>
src/lxc/utils.c

index ef71b6df7d2469aeb26c8ebd51ffef3838701f3e..22adf15a91c5a6d553a630f1f153ff16c790bbd3 100644 (file)
@@ -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);