void cmd_link (flux_t h, int argc, char **argv) { if (argc != 2) msg_exit ("link: specify target and link_name"); if (kvs_symlink (h, argv[1], argv[0]) < 0) err_exit ("%s", argv[1]); if (kvs_commit (h) < 0) err_exit ("kvs_commit"); }
static int kvs_job_set_state (flux_t h, unsigned long jobid, const char *state) { int rc; char *key = NULL; char *link = NULL; char *target = NULL; /* Create lwj entry in lwj-active dir at first: */ if ((asprintf (&key, "lwj-active.%lu.state", jobid) < 0) || (asprintf (&link, "lwj.%lu", jobid) < 0) || (asprintf (&target, "lwj-active.%lu", jobid) < 0)) { flux_log_error (h, "kvs_job_set_state: asprintf"); return (-1); } flux_log (h, LOG_INFO, "Setting job %ld to %s", jobid, state); if ((rc = kvs_put_string (h, key, state)) < 0) { flux_log_error (h, "kvs_put_string (%s)", key); goto out; } /* * Create link from lwj.<id> to lwj-active.<id> */ if ((rc = kvs_symlink (h, link, target)) < 0) { flux_log_error (h, "kvs_symlink (%s, %s)", link, key); goto out; } if ((rc = kvs_commit (h)) < 0) flux_log_error (h, "kvs_job_set_state: kvs_commit"); out: free (key); free (link); free (target); return rc; }