]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
nbd: exit cleanly if nbd fails to attach
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Thu, 15 May 2014 15:26:48 +0000 (15:26 +0000)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Fri, 16 May 2014 13:58:39 +0000 (09:58 -0400)
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Dwight Engen <dwight.engen@oracle.com>
src/lxc/bdev.c

index e22d83dbaaad4a395ec805433b909c2897e87122..751fa9fc6424d9af314173df34ef878a039dbcb9 100644 (file)
@@ -2491,7 +2491,15 @@ static int do_attach_nbd(void *d)
                                exit(0);
                        } else if (fdsi.ssi_signo == SIGCHLD) {
                                int status;
-                               while (waitpid(-1, &status, WNOHANG) > 0);
+                               /* If qemu-nbd fails, or is killed by a signal,
+                                * then exit */
+                               while (waitpid(-1, &status, WNOHANG) > 0) {
+                                       if ((WIFEXITED(status) && WEXITSTATUS(status) != 0) ||
+                                                       WIFSIGNALED(status)) {
+                                               nbd_detach(nbd);
+                                               exit(1);
+                                       }
+                               }
                        }
                }
        }