]> git.ipfire.org Git - thirdparty/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)
committerChristian Brauner <christian.brauner@ubuntu.com>
Wed, 10 Apr 2019 16:40:14 +0000 (18:40 +0200)
Signed-off-by: ondra <ondrak@localhost.localdomain>
src/lxc/utils.c

index 1e48498aef823f22a777f8073873d39dd2895343..4d5f6a06151481a0a35bd62496b4a7cf2c100b5a 100644 (file)
@@ -1482,8 +1482,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);