]> git.proxmox.com Git - mirror_lxc.git/commitdiff
tools: lxc-autostart: Reverse order on stop
authorcorubba <corubba@gmx.de>
Sun, 27 Mar 2022 00:36:20 +0000 (01:36 +0100)
committercorubba <corubba@gmx.de>
Sun, 27 Mar 2022 00:36:20 +0000 (01:36 +0100)
As it was already discussed in lxc/lxd#2082, containers should be
stopped in the opposite order they are started in. LXD does so already,
lxc should do the same.

Signed-off-by: Corubba Smith <corubba@gmx.de>
src/lxc/tools/lxc_autostart.c

index 91596d4f6e260f255b93d396dedb0fe1ad78c51d..062135d4039e7d7d1f94d041ec3d4340f7dcdbb9 100644 (file)
@@ -282,6 +282,11 @@ static int cmporder(const void *p1, const void *p2)
        return (c1_order - c2_order);
 }
 
+static int cmporder_reverse(const void *p1, const void *p2)
+{
+       return -1 * cmporder(p1, p2);
+}
+
 static int toss_list(struct lxc_list *c_groups_list)
 {
        struct lxc_list *it, *next;
@@ -332,7 +337,8 @@ int main(int argc, char *argv[])
        if (!my_args.all)
                c_groups_lists = calloc( count, sizeof( struct lxc_list * ) );
 
-       qsort(&containers[0], count, sizeof(struct lxc_container *), cmporder);
+       qsort(&containers[0], count, sizeof(struct lxc_container *),
+             (my_args.shutdown || my_args.hardstop) ? cmporder_reverse : cmporder);
 
        if (cmd_groups_list && my_args.all)
                ERROR("Specifying -a (all) with -g (groups) doesn't make sense. All option overrides");