no-fork option for tapdisk2 debugging. To simplify running tapdisk2 from a debugger, add an opttion "-n" to disable foring into the background. Signed-off-by: Philipp Hahn -- [v2] fold extra indention patch into patch. --- xen-4.0.1.orig/tools/blktap2/drivers/tapdisk2.c 2010-08-25 12:22:07.000000000 +0200 +++ xen-4.0.1/tools/blktap2/drivers/tapdisk2.c 2011-06-17 17:37:35.000000000 +0200 @@ -402,7 +402,7 @@ tapdisk2_wait_for_device(void) static void usage(const char *app, int err) { - fprintf(stderr, "usage: %s <-n file>\n", app); + fprintf(stderr, "usage: %s [-f] -n driver:file\n", app); exit(err); } @@ -411,10 +411,11 @@ main(int argc, char *argv[]) { int c; char *params; + int do_fork = 1; params = NULL; - while ((c = getopt(argc, argv, "n:s:h")) != -1) { + while ((c = getopt(argc, argv, "n:s:fh")) != -1) { switch (c) { case 'n': params = optarg; @@ -430,6 +431,9 @@ main(int argc, char *argv[]) exit(EXIT_FAILURE); #endif break; + case 'f': + do_fork = 0; + break; default: usage(argv[0], EINVAL); } @@ -438,12 +442,17 @@ main(int argc, char *argv[]) if (!params || optind != argc) usage(argv[0], EINVAL); - if (pipe(channel) == -1) { - printf("pipe failed: %d\n", errno); - return errno; - } + if (do_fork) { + if (pipe(channel) == -1) { + printf("pipe failed: %d\n", errno); + return errno; + } + } else { + channel[0] = dup(STDIN_FILENO); + channel[1] = dup(STDERR_FILENO); + } - switch (fork()) { + switch (do_fork ? fork() : 0) { case -1: printf("fork failed: %d\n", errno); return errno;