server: write pid file for backgrounded server to specified file

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/init.c b/init.c
index f25bbe6..e8fef21 100644
--- a/init.c
+++ b/init.c
@@ -194,7 +194,7 @@
 		.val		= 'S',
 	},
 	{	.name		= (char *) "daemonize",
-		.has_arg	= no_argument,
+		.has_arg	= required_argument,
 		.val		= 'D',
 	},
 	{
@@ -1121,6 +1121,7 @@
 	printf("\t--warnings-fatal Fio parser warnings are fatal\n");
 	printf("\t--max-jobs\tMaximum number of threads/processes to support\n");
 	printf("\t--server=args\tStart a backend fio server\n");
+	printf("\t--daemonize=pidfile Background fio server, write pid to file\n");
 	printf("\t--client=hostname Talk to remote backend fio server at hostname\n");
 	printf("\nFio was written by Jens Axboe <jens.axboe@oracle.com>");
 	printf("\n                   Jens Axboe <jaxboe@fusionio.com>\n");
@@ -1253,7 +1254,7 @@
 	struct thread_data *td = NULL;
 	int c, ini_idx = 0, lidx, ret = 0, do_exit = 0, exit_val = 0;
 	char *ostr = cmd_optstr;
-	int daemonize_server = 0;
+	void *pid_file = NULL;
 	void *cur_client = NULL;
 	int backend = 0;
 
@@ -1408,7 +1409,7 @@
 			backend = 1;
 			break;
 		case 'D':
-			daemonize_server = 1;
+			pid_file = strdup(optarg);
 			break;
 		case 'C':
 			if (is_backend) {
@@ -1445,7 +1446,7 @@
 	}
 
 	if (is_backend && backend)
-		return fio_start_server(daemonize_server);
+		return fio_start_server(pid_file);
 
 	if (td) {
 		if (!ret)