Skip to content

Commit f1f6b11

Browse files
committed
casync: propagate --log-level option to helpers
Currently, casync-http handles the option --log-level but casync does not propagate its verbosity to its protocol helpers. This commit propagates the --log-level to the protocol helpers as it is done for option --rate-limit-bps. Now, the debug messages from the helper casync-http are printed to stderr if the --log-level is specified to casync.
1 parent c1c025c commit f1f6b11

File tree

6 files changed

+90
-2
lines changed

6 files changed

+90
-2
lines changed

src/caremote.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ struct CaRemote {
5858
int input_fd;
5959
int output_fd;
6060

61+
int log_level;
6162
uint64_t rate_limit_bps;
6263

6364
ReallocBuffer input_buffer;
@@ -112,6 +113,7 @@ CaRemote* ca_remote_new(void) {
112113
rr->local_feature_flags = UINT64_MAX;
113114
rr->remote_feature_flags = UINT64_MAX;
114115

116+
rr->log_level = -1;
115117
rr->rate_limit_bps = UINT64_MAX;
116118

117119
rr->digest_type = _CA_DIGEST_TYPE_INVALID;
@@ -228,6 +230,15 @@ CaRemote* ca_remote_unref(CaRemote *rr) {
228230
return mfree(rr);
229231
}
230232

233+
int ca_remote_set_log_level(CaRemote *rr, int log_level) {
234+
if (!rr)
235+
return -EINVAL;
236+
237+
rr->log_level = log_level;
238+
239+
return 0;
240+
}
241+
231242
int ca_remote_set_rate_limit_bps(CaRemote *rr, uint64_t rate_limit_bps) {
232243
if (!rr)
233244
return -EINVAL;
@@ -984,6 +995,9 @@ static int ca_remote_start(CaRemote *rr) {
984995

985996
argc = (rr->callout ? 1 : 3) + 5 + strv_length(rr->rstore_urls);
986997

998+
if (rr->log_level != -1)
999+
argc++;
1000+
9871001
if (rr->rate_limit_bps != UINT64_MAX)
9881002
argc++;
9891003

@@ -1016,6 +1030,14 @@ static int ca_remote_start(CaRemote *rr) {
10161030
args[i++] = (char*) remote_casync;
10171031
}
10181032

1033+
if (rr->log_level != -1) {
1034+
r = asprintf(args + i, "--log-level=%i", rr->log_level);
1035+
if (r < 0)
1036+
return log_oom();
1037+
1038+
i++;
1039+
}
1040+
10191041
if (rr->rate_limit_bps != UINT64_MAX) {
10201042
r = asprintf(args + i, "--rate-limit-bps=%" PRIu64, rr->rate_limit_bps);
10211043
if (r < 0)

src/caremote.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ int ca_remote_get_remote_feature_flags(CaRemote *rr, uint64_t* flags);
5050
int ca_remote_set_digest_type(CaRemote *rr, CaDigestType type);
5151
int ca_remote_get_digest_type(CaRemote *rr, CaDigestType *ret);
5252

53+
int ca_remote_set_log_level(CaRemote *rr, int log_level);
5354
int ca_remote_set_rate_limit_bps(CaRemote *rr, uint64_t rate_limit_bps);
5455

5556
int ca_remote_set_io_fds(CaRemote *rr, int input_fd, int output_fd);

src/casync-http.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
static volatile sig_atomic_t quit = false;
1717

18+
static int arg_log_level = -1;
1819
static bool arg_verbose = false;
1920
static curl_off_t arg_rate_limit_bps = 0;
2021
static bool arg_ssl_trust_peer = false;
@@ -1207,13 +1208,14 @@ static int parse_argv(int argc, char *argv[]) {
12071208

12081209
static const struct option options[] = {
12091210
{ "help", no_argument, NULL, 'h' },
1211+
{ "log-level", required_argument, NULL, 'l' },
12101212
{ "verbose", no_argument, NULL, 'v' },
12111213
{ "rate-limit-bps", required_argument, NULL, ARG_RATE_LIMIT_BPS },
12121214
{ "ssl-trust-peer", no_argument, NULL, ARG_SSL_TRUST_PEER },
12131215
{}
12141216
};
12151217

1216-
int c;
1218+
int c, r;
12171219

12181220
assert(argc >= 0);
12191221
assert(argv);
@@ -1234,14 +1236,23 @@ static int parse_argv(int argc, char *argv[]) {
12341236
if (getenv_bool("CASYNC_VERBOSE") > 0)
12351237
arg_verbose = true;
12361238

1237-
while ((c = getopt_long(argc, argv, "hv", options, NULL)) >= 0) {
1239+
while ((c = getopt_long(argc, argv, "hl:v", options, NULL)) >= 0) {
12381240

12391241
switch (c) {
12401242

12411243
case 'h':
12421244
help();
12431245
return 0;
12441246

1247+
case 'l':
1248+
r = set_log_level_from_string(optarg);
1249+
if (r < 0)
1250+
return log_error_errno(r, "Failed to parse log level \"%s\": %m", optarg);
1251+
1252+
arg_log_level = r;
1253+
1254+
break;
1255+
12451256
case 'v':
12461257
arg_verbose = true;
12471258
break;

src/casync-tool.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,6 +1318,12 @@ static int verb_make(int argc, char *argv[]) {
13181318
if (r < 0)
13191319
return r;
13201320

1321+
if (arg_log_level != -1) {
1322+
r = ca_sync_set_log_level(s, arg_log_level);
1323+
if (r < 0)
1324+
return log_error_errno(r, "Failed to set log level: %m");
1325+
}
1326+
13211327
if (arg_rate_limit_bps != UINT64_MAX) {
13221328
r = ca_sync_set_rate_limit_bps(s, arg_rate_limit_bps);
13231329
if (r < 0)
@@ -1617,6 +1623,12 @@ static int verb_extract(int argc, char *argv[]) {
16171623
}
16181624
}
16191625

1626+
if (arg_log_level != -1) {
1627+
r = ca_sync_set_log_level(s, arg_log_level);
1628+
if (r < 0)
1629+
return log_error_errno(r, "Failed to set log level: %m");
1630+
}
1631+
16201632
if (arg_rate_limit_bps != UINT64_MAX) {
16211633
r = ca_sync_set_rate_limit_bps(s, arg_rate_limit_bps);
16221634
if (r < 0)
@@ -2772,6 +2784,12 @@ static int verb_mount(int argc, char *argv[]) {
27722784
return r;
27732785
}
27742786

2787+
if (arg_log_level != -1) {
2788+
r = ca_sync_set_log_level(s, arg_log_level);
2789+
if (r < 0)
2790+
return log_error_errno(r, "Failed to set log level: %m");
2791+
}
2792+
27752793
if (arg_rate_limit_bps != UINT64_MAX) {
27762794
r = ca_sync_set_rate_limit_bps(s, arg_rate_limit_bps);
27772795
if (r < 0)
@@ -2892,6 +2910,12 @@ static int verb_mkdev(int argc, char *argv[]) {
28922910
goto finish;
28932911
}
28942912

2913+
if (arg_log_level != -1) {
2914+
r = ca_sync_set_log_level(s, arg_log_level);
2915+
if (r < 0)
2916+
return log_error_errno(r, "Failed to set log level: %m");
2917+
}
2918+
28952919
if (arg_rate_limit_bps != UINT64_MAX) {
28962920
r = ca_sync_set_rate_limit_bps(s, arg_rate_limit_bps);
28972921
if (r < 0)
@@ -3453,6 +3477,12 @@ static int verb_pull(int argc, char *argv[]) {
34533477
if (r < 0)
34543478
return log_error_errno(r, "Failed to set feature flags: %m");
34553479

3480+
if (arg_log_level != -1) {
3481+
r = ca_remote_set_log_level(rr, arg_log_level);
3482+
if (r < 0)
3483+
return log_error_errno(r, "Failed to set log level: %m");
3484+
}
3485+
34563486
if (arg_rate_limit_bps != UINT64_MAX) {
34573487
r = ca_remote_set_rate_limit_bps(rr, arg_rate_limit_bps);
34583488
if (r < 0)
@@ -3606,6 +3636,12 @@ static int verb_push(int argc, char *argv[]) {
36063636
if (r < 0)
36073637
log_error_errno(r, "Failed to set feature flags: %m");
36083638

3639+
if (arg_log_level != -1) {
3640+
r = ca_remote_set_log_level(rr, arg_log_level);
3641+
if (r < 0)
3642+
return log_error_errno(r, "Failed to set log level: %m");
3643+
}
3644+
36093645
if (arg_rate_limit_bps != UINT64_MAX) {
36103646
r = ca_remote_set_rate_limit_bps(rr, arg_rate_limit_bps);
36113647
if (r < 0)

src/casync.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ struct CaSync {
110110
bool archive_eof;
111111
bool remote_index_eof;
112112

113+
int log_level;
113114
size_t rate_limit_bps;
114115

115116
uint64_t feature_flags;
@@ -169,6 +170,7 @@ static CaSync *ca_sync_new(void) {
169170

170171
s->chunker = (CaChunker) CA_CHUNKER_INIT;
171172

173+
s->log_level = -1;
172174
s->archive_size = UINT64_MAX;
173175
s->punch_holes = true;
174176
s->reflink = true;
@@ -511,6 +513,15 @@ CaSync *ca_sync_unref(CaSync *s) {
511513
return mfree(s);
512514
}
513515

516+
int ca_sync_set_log_level(CaSync *s, int log_level) {
517+
if (!s)
518+
return -EINVAL;
519+
520+
s->log_level = log_level;
521+
522+
return 0;
523+
}
524+
514525
int ca_sync_set_rate_limit_bps(CaSync *s, uint64_t rate_limit_bps) {
515526
if (!s)
516527
return -EINVAL;
@@ -671,6 +682,12 @@ int ca_sync_set_index_remote(CaSync *s, const char *url) {
671682
if (!s->remote_index)
672683
return -ENOMEM;
673684

685+
if (s->log_level != -1) {
686+
r = ca_remote_set_log_level(s->remote_index, s->log_level);
687+
if (r < 0)
688+
return r;
689+
}
690+
674691
if (s->rate_limit_bps > 0) {
675692
r = ca_remote_set_rate_limit_bps(s->remote_index, s->rate_limit_bps);
676693
if (r < 0)

src/casync.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ CaSync *ca_sync_new_decode(void);
3131
CaSync *ca_sync_unref(CaSync *sync);
3232
DEFINE_TRIVIAL_CLEANUP_FUNC(CaSync *, ca_sync_unref);
3333

34+
int ca_sync_set_log_level(CaSync *s, int log_level);
3435
int ca_sync_set_rate_limit_bps(CaSync *s, uint64_t rate_limit_bps);
3536

3637
int ca_sync_set_feature_flags(CaSync *s, uint64_t flags);

0 commit comments

Comments
 (0)