From: Alain Spineux Date: Tue, 25 Jan 2022 16:59:59 +0000 (+0100) Subject: command ".status dedupengines [dedupengine=XXXX]" mimic .device command X-Git-Tag: Beta-15.0.0~659 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=09a7d997c6657c79782d29bd715ca77d65a2e817;p=thirdparty%2Fbacula.git command ".status dedupengines [dedupengine=XXXX]" mimic .device command --- diff --git a/bacula/src/dird/ua_status.c b/bacula/src/dird/ua_status.c index 1209db07d..295dd7ca4 100644 --- a/bacula/src/dird/ua_status.c +++ b/bacula/src/dird/ua_status.c @@ -607,7 +607,7 @@ static void do_storage_status(UAContext *ua, STORE *store, char *cmd) sd->fsend(".status %s api=%d api_opts=%s", cmd, ua->api, ua->api_opts); } - } else { + } else if (strcasecmp(cmd, "devices") == 0) { i = find_arg_with_value(ua, "device"); if (i>0) { Mmsg(devname, "device=%s", ua->argv[i]); @@ -615,6 +615,17 @@ static void do_storage_status(UAContext *ua, STORE *store, char *cmd) } sd->fsend(".status %s api=%d api_opts=%s %s", cmd, ua->api, ua->api_opts, devname.c_str()); + } else if (strcasecmp(cmd, "dedupengines") == 0) { + i = find_arg_with_value(ua, "dedupengine"); + if (i>0) { + Mmsg(devname, "dedupengine=%s", ua->argv[i]); + bash_spaces(devname.c_str()); + } + sd->fsend(".status %s api=%d api_opts=%s %s", + cmd, ua->api, ua->api_opts, devname.c_str()); + } else { + sd->fsend(".status %s api=%d api_opts=%s", + cmd, ua->api, ua->api_opts); } } else { sd->fsend("status"); diff --git a/bacula/src/stored/dedup_interface.h b/bacula/src/stored/dedup_interface.h index 71831eacf..b48d9f41d 100644 --- a/bacula/src/stored/dedup_interface.h +++ b/bacula/src/stored/dedup_interface.h @@ -22,7 +22,7 @@ bool is_dedup_server_side(DEVICE *dev, int32_t stream, uint64_t stream_len); bool is_dedup_ref(DEV_RECORD *rec, bool lazy); -void list_dedupengines(char *cmd, STATUS_PKT *sp); +void list_dedupengines(char *cmd, STATUS_PKT *sp, const char *target); void dedup_get_limits(int64_t *nofile, int64_t *memlock); bool dedup_parse_filter(char *fltr); void dedup_filter_record(int verbose, DCR *dcr, DEV_RECORD *rec, char *dedup_msg, int len); diff --git a/bacula/src/stored/org_stored_dedup.c b/bacula/src/stored/org_stored_dedup.c index ee4a0d2dc..9c9311e35 100644 --- a/bacula/src/stored/org_stored_dedup.c +++ b/bacula/src/stored/org_stored_dedup.c @@ -36,7 +36,7 @@ void dedup_get_limits(int64_t *nofile, int64_t *memlock) } /* dump the status of all dedupengines */ -void list_dedupengines(char *cmd, STATUS_PKT *sp) +void list_dedupengines(char *cmd, STATUS_PKT *sp, const char *target) { } diff --git a/bacula/src/stored/status.c b/bacula/src/stored/status.c index 1925887dd..0834c45b4 100644 --- a/bacula/src/stored/status.c +++ b/bacula/src/stored/status.c @@ -1162,6 +1162,7 @@ bool qstatus_cmd(JCR *jcr) char *cmd; char *device=NULL; char *collname=NULL; + char *dedupengine=NULL; int api = true; sp.bs = dir; @@ -1198,6 +1199,10 @@ bool qstatus_cmd(JCR *jcr) } else if (!strcmp(argk[i], "api_opts") && argv[i]) { bstrncpy(sp.api_opts, argv[i], sizeof(sp.api_opts)); } + else if (!strcmp(argk[i], "dedupengine") && argv[i]) { + dedupengine = argv[i]; + unbash_spaces(dedupengine); + } } Dmsg1(100, "cmd=%s\n", cmd); @@ -1241,10 +1246,10 @@ bool qstatus_cmd(JCR *jcr) sp.api = api; show_config(&sp); /* ***BEEF*** */ - } else if (strcasecmp(cmd, "dedupengine") == 0 || + } else if (strcasecmp(cmd, "dedupengines") == 0 || strcasecmp(cmd, "dedupengineandzerostats") == 0) { sp.api = api; - list_dedupengines(cmd, &sp); + list_dedupengines(cmd, &sp, dedupengine); } else if (strcasecmp(cmd, "shstore") == 0) { list_shared_storage(&sp, dir->msg); } else if (strcasecmp(cmd, "cloud") == 0) {