ctdb-daemon: Fix the usage for lock helper
[samba.git] / ctdb / server / ctdb_lock_helper.c
index 9e7535983e23e0ea0234c7ceeb08f20ab737ce9e..2161a9a0c446a2ec8abb5e4da4e4ea01bf92d865 100644 (file)
@@ -36,9 +36,9 @@ static void send_result(int fd, char result)
 static void usage(void)
 {
        fprintf(stderr, "\n");
-       fprintf(stderr, "Usage: %s <ctdbd-pid> <output-fd> RECORD <db-path> <db-key>\n",
+       fprintf(stderr, "Usage: %s <log-fd> <ctdbd-pid> <output-fd> RECORD <db-path> <db-key>\n",
                progname);
-       fprintf(stderr, "       %s <ctdbd-pid> <output-fd> DB <db1-path> [<db2-path> ...]\n",
+       fprintf(stderr, "       %s <log-fd> <ctdbd-pid> <output-fd> DB <db1-path> [<db2-path> ...]\n",
                progname);
 }
 
@@ -111,37 +111,49 @@ static int lock_db(const char *dbpath)
 
 int main(int argc, char *argv[])
 {
-       int write_fd;
+       int write_fd, log_fd;
        char result = 0;
        int ppid;
        const char *lock_type;
 
        progname = argv[0];
 
-       if (argc < 4) {
+       if (argc < 5) {
                usage();
                exit(1);
        }
 
-       ppid = atoi(argv[1]);
-       write_fd = atoi(argv[2]);
-       lock_type = argv[3];
+       if (!set_scheduler()) {
+               fprintf(stderr, "%s: Unable to set real-time scheduler priority\n",
+                       progname);
+       }
+
+       log_fd = atoi(argv[1]);
+       close(STDOUT_FILENO);
+       close(STDERR_FILENO);
+       dup2(log_fd, STDOUT_FILENO);
+       dup2(log_fd, STDERR_FILENO);
+       close(log_fd);
+
+       ppid = atoi(argv[2]);
+       write_fd = atoi(argv[3]);
+       lock_type = argv[4];
 
        if (strcmp(lock_type, "RECORD") == 0) {
-               if (argc != 6) {
+               if (argc != 7) {
                        fprintf(stderr, "%s: Invalid number of arguments (%d)\n",
                                progname, argc);
                        usage();
                        exit(1);
                }
-               result = lock_record(argv[4], argv[5]);
+               result = lock_record(argv[5], argv[6]);
 
        } else if (strcmp(lock_type, "DB") == 0) {
                int n;
 
                /* If there are no databases specified, no need for lock */
-               if (argc > 4) {
-                       for (n=4; n<argc; n++) {
+               if (argc > 5) {
+                       for (n=5; n<argc; n++) {
                                result = lock_db(argv[n]);
                                if (result != 0) {
                                        break;