+ trigger(C_WRITE, threads, atoi(argv[2]),
+ (argc == 4) ? atoi(argv[3]) : 0);
+ return 0;
+}
+
+char ecsname[] = "echosrv";
+static int loadgen_stop_echosrv(int argc, char **argv)
+{
+ int verbose = (argc != 9);
+ if (my_oss) {
+ char name[]="OSS";
+ cleanup(name, verbose);
+ my_oss = 0;
+ }
+ if (my_ecs || (argc == 9)) {
+ cleanup(ecsname, verbose);
+ my_ecs = 0;
+ }
+ return 0;
+}
+
+static int loadgen_start_echosrv(int argc, char **argv)
+{
+ char *args[5];
+ int rc;
+
+ pthread_mutex_lock(&m_config);
+
+ args[0] = cmdname;
+
+ /* attach obdecho echosrv echosrv_UUID */
+ args[1] = "obdecho";
+ args[2] = args[3] = ecsname;
+ rc = jt_lcfg_attach(4, args);
+ if (rc) {
+ fprintf(stderr, "%s: can't attach echo server (%d)\n",
+ cmdname, rc);
+ /* Assume we want e.g. an old one cleaned anyhow. */
+ goto clean;
+ }
+ my_ecs = 1;
+
+ /* setup */
+ rc = jt_lcfg_setup(1, args);
+ if (rc) {
+ fprintf(stderr, "%s: can't setup echo server (%d)\n",
+ cmdname, rc);
+ goto clean;
+ }
+
+ /* Create an OSS to handle the communications */
+ /* attach ost OSS OSS_UUID */
+ args[1] = "ost";
+ args[2] = args[3] = "OSS";
+
+ rc = jt_lcfg_attach(4, args);
+ if (rc == EEXIST) {
+ /* Already set up for somebody else, that's fine. */
+ printf("OSS already set up, no problem.\n");
+ pthread_mutex_unlock(&m_config);
+ return 0;
+ }
+ if (rc) {
+ fprintf(stderr, "%s: can't attach OSS (%d)\n",
+ cmdname, rc);
+ goto clean;
+ }
+ my_oss = 1;
+
+ /* setup */
+ rc = jt_lcfg_setup(1, args);
+ if (rc) {
+ fprintf(stderr, "%s: can't setup OSS (%d)\n",
+ cmdname, rc);
+ goto clean;
+ }
+
+ pthread_mutex_unlock(&m_config);
+ return rc;
+
+clean:
+ pthread_mutex_unlock(&m_config);
+ loadgen_stop_echosrv(9, argv);
+ return rc;
+}
+
+static int loadgen_wait(int argc, char **argv)
+{
+ /* Give scripts a chance to start some threads */
+ sleep(1);
+ while (!all_done) {
+ sleep(1);
+ }