OPT_HELP = 1,
OPT_LIST_OPTIONS,
OPT_MAX_SIZE,
+ OPT_LIST_COMMANDS,
};
static struct poptOption snapshot_opts[] = {
{"name", 'n', POPT_ARG_STRING, &opt_output_name, 0, 0, 0},
{"max-size", 'm', POPT_ARG_STRING, 0, OPT_MAX_SIZE, 0, 0},
{"list-options", 0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, NULL, NULL},
+ {"list-commands", 0, POPT_ARG_NONE, NULL, OPT_LIST_COMMANDS},
{0, 0, 0, 0, 0, 0, 0}
};
MSG("Snapshot output list for session %s", current_session_name);
while ((s_iter = lttng_snapshot_output_list_get_next(list)) != NULL) {
- MSG("%s[%" PRIu32 "] %s: %s", indent4,
+ MSG("%s[%" PRIu32 "] %s: %s (max-size: %" PRId64 ")", indent4,
lttng_snapshot_output_get_id(s_iter),
lttng_snapshot_output_get_name(s_iter),
- lttng_snapshot_output_get_ctrl_url(s_iter));
+ lttng_snapshot_output_get_ctrl_url(s_iter),
+ lttng_snapshot_output_get_maxsize(s_iter));
output_seen = 1;
}
{
int ret;
struct lttng_snapshot_output *output = NULL;
+ char name[NAME_MAX];
+ const char *n_ptr;
if (!url && (!opt_data_url || !opt_ctrl_url)) {
ret = CMD_ERROR;
goto error;
}
+ n_ptr = lttng_snapshot_output_get_name(output);
+ if (*n_ptr == '\0') {
+ int pret;
+ pret = snprintf(name, sizeof(name), DEFAULT_SNAPSHOT_NAME "-%" PRIu32,
+ lttng_snapshot_output_get_id(output));
+ if (pret < 0) {
+ PERROR("snprintf add output name");
+ }
+ n_ptr = name;
+ }
+
MSG("Snapshot output successfully added for session %s",
current_session_name);
MSG(" [%" PRIu32 "] %s: %s (max-size: %" PRId64 ")",
- lttng_snapshot_output_get_id(output),
- lttng_snapshot_output_get_name(output),
+ lttng_snapshot_output_get_id(output), n_ptr,
lttng_snapshot_output_get_ctrl_url(output),
lttng_snapshot_output_get_maxsize(output));
error:
ret = lttng_snapshot_record(current_session_name, output, 0);
if (ret < 0) {
+ if (ret == -LTTNG_ERR_MAX_SIZE_INVALID) {
+ ERR("The minimum size of a snapshot is computed by multiplying "
+ "the total amount of streams with the largest subbuffer "
+ "in the session.");
+ }
goto error;
}
pc = poptGetContext(NULL, argc, argv, snapshot_opts, 0);
poptReadDefaultConfig(pc, 0);
+ /* TODO: mi support */
+ if (lttng_opt_mi) {
+ ret = -LTTNG_ERR_MI_NOT_IMPLEMENTED;
+ ERR("mi option not supported");
+ goto end;
+ }
+
while ((opt = poptGetNextOpt(pc)) != -1) {
switch (opt) {
case OPT_HELP:
case OPT_LIST_OPTIONS:
list_cmd_options(stdout, snapshot_opts);
goto end;
+ case OPT_LIST_COMMANDS:
+ list_commands(actions, stdout);
+ goto end;
case OPT_MAX_SIZE:
{
uint64_t val;
ret = handle_command(poptGetArgs(pc));
if (ret < 0) {
- if (ret == -LTTNG_ERR_EPERM) {
+ switch (-ret) {
+ case LTTNG_ERR_EPERM:
ERR("The session needs to be set in no output mode (--no-output)");
+ break;
+ case LTTNG_ERR_SNAPSHOT_NODATA:
+ WARN("%s", lttng_strerror(ret));
+ break;
+ default:
+ ERR("%s", lttng_strerror(ret));
+ break;
}
- ERR("%s", lttng_strerror(ret));
goto end;
}