From 47f13f5eca6228b45b46ed0d05c9b943471fd90a Mon Sep 17 00:00:00 2001 From: liupan1111 Date: Wed, 7 Dec 2016 08:15:19 +0800 Subject: [PATCH] iscsi_tgt: add daemon mode for iscsi target (#69) * iscsi: add daemon mode for iscsi target * change the default daemon mode of iscsi tgt to false --- app/iscsi_tgt/iscsi_tgt.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/iscsi_tgt/iscsi_tgt.c b/app/iscsi_tgt/iscsi_tgt.c index a80b97a38..cfc63ecac 100644 --- a/app/iscsi_tgt/iscsi_tgt.c +++ b/app/iscsi_tgt/iscsi_tgt.c @@ -75,6 +75,7 @@ usage(char *executable_name) printf(" -s size memory size in MB for DPDK\n"); spdk_tracelog_usage(stdout, "-t"); printf(" -H show this usage\n"); + printf(" -b run iscsi target background, the default is foreground\n"); printf(" -d disable coredump file enabling\n"); printf(" -q disable notice level logging to stderr\n"); } @@ -93,6 +94,7 @@ main(int argc, char **argv) { int ch; int rc, app_rc; + int daemon_mode = 0; struct spdk_app_opts opts = {}; /* default value in opts structure */ @@ -101,7 +103,7 @@ main(int argc, char **argv) opts.config_file = SPDK_ISCSI_DEFAULT_CONFIG; opts.name = "iscsi"; - while ((ch = getopt(argc, argv, "c:de:i:l:m:n:p:qs:t:H")) != -1) { + while ((ch = getopt(argc, argv, "bc:de:i:l:m:n:p:qs:t:H")) != -1) { switch (ch) { case 'd': opts.enable_coredump = false; @@ -147,6 +149,9 @@ main(int argc, char **argv) case 's': opts.dpdk_mem_size = atoi(optarg); break; + case 'b': + daemon_mode = 1; + break; case 'H': default: usage(argv[0]); @@ -154,6 +159,13 @@ main(int argc, char **argv) } } + if (daemon_mode) { + if (daemon(1, 0) < 0) { + SPDK_ERRLOG("Start iscsi target daemon faild.\n"); + exit(EXIT_FAILURE); + } + } + if (spdk_g_notice_stderr_flag == 1 && isatty(STDERR_FILENO) && !strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) {