You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2169 lines
50 KiB
2169 lines
50 KiB
commit fb8220fb6961e563d6a760a70bd1e1b27a62bde0 |
|
Author: Alasdair G Kergon <agk@redhat.com> |
|
Date: Sat Sep 5 23:56:30 2015 +0100 |
|
|
|
style: Standardise some error paths. |
|
--- |
|
daemons/cmirrord/functions.c | 4 +- |
|
daemons/lvmetad/lvmetad-core.c | 2 +- |
|
lib/metadata/metadata.c | 3 +- |
|
libdm/libdm-file.c | 4 +- |
|
libdm/libdm-report.c | 2 +- |
|
libdm/libdm-stats.c | 197 +++++++++-------- |
|
liblvm/lvm_pv.c | 5 +- |
|
tools/dmsetup.c | 475 +++++++++++++++++++++-------------------- |
|
8 files changed, 355 insertions(+), 337 deletions(-) |
|
|
|
diff --git a/daemons/cmirrord/functions.c b/daemons/cmirrord/functions.c |
|
index 61b3e11..4f36cc6 100644 |
|
--- a/daemons/cmirrord/functions.c |
|
+++ b/daemons/cmirrord/functions.c |
|
@@ -1445,7 +1445,7 @@ static int disk_status_info(struct log_c *lc, struct dm_ulog_request *rq) |
|
char *data = (char *)rq->data; |
|
struct stat statbuf; |
|
|
|
- if(fstat(lc->disk_fd, &statbuf)) { |
|
+ if (fstat(lc->disk_fd, &statbuf)) { |
|
rq->error = -errno; |
|
return -errno; |
|
} |
|
@@ -1508,7 +1508,7 @@ static int disk_status_table(struct log_c *lc, struct dm_ulog_request *rq) |
|
char *data = (char *)rq->data; |
|
struct stat statbuf; |
|
|
|
- if(fstat(lc->disk_fd, &statbuf)) { |
|
+ if (fstat(lc->disk_fd, &statbuf)) { |
|
rq->error = -errno; |
|
return -errno; |
|
} |
|
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c |
|
index 19e8723..89aaaf8 100644 |
|
--- a/daemons/lvmetad/lvmetad-core.c |
|
+++ b/daemons/lvmetad/lvmetad-core.c |
|
@@ -578,7 +578,7 @@ static void mark_outdated_pv(lvmetad_state *s, const char *vgid, const char *pvi |
|
!(cft_vgid = make_text_node(outdated_pvs, "vgid", dm_pool_strdup(outdated_pvs->mem, vgid), |
|
outdated_pvs->root, NULL))) |
|
abort(); |
|
- if(!dm_hash_insert(s->vgid_to_outdated_pvs, cft_vgid->v->v.str, outdated_pvs)) |
|
+ if (!dm_hash_insert(s->vgid_to_outdated_pvs, cft_vgid->v->v.str, outdated_pvs)) |
|
abort(); |
|
DEBUGLOG(s, "created outdated_pvs list for VG %s", vgid); |
|
} |
|
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c |
|
index 8757331..b45f850 100644 |
|
--- a/lib/metadata/metadata.c |
|
+++ b/lib/metadata/metadata.c |
|
@@ -319,10 +319,11 @@ static struct pv_list *_copy_pvl(struct dm_pool *pvmem, struct pv_list *pvl_from |
|
if (!(pvl_to->pv = dm_pool_alloc(pvmem, sizeof(*pvl_to->pv)))) |
|
goto_bad; |
|
|
|
- if(!_copy_pv(pvmem, pvl_to->pv, pvl_from->pv)) |
|
+ if (!_copy_pv(pvmem, pvl_to->pv, pvl_from->pv)) |
|
goto_bad; |
|
|
|
return pvl_to; |
|
+ |
|
bad: |
|
dm_pool_free(pvmem, pvl_to); |
|
return NULL; |
|
diff --git a/libdm/libdm-file.c b/libdm/libdm-file.c |
|
index 52f9d45..e4beddd 100644 |
|
--- a/libdm/libdm-file.c |
|
+++ b/libdm/libdm-file.c |
|
@@ -119,8 +119,8 @@ int dm_create_lockfile(const char *lockfile) |
|
char buffer[50]; |
|
int retries = 0; |
|
|
|
- if((fd = open(lockfile, O_CREAT | O_WRONLY, |
|
- (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH))) < 0) { |
|
+ if ((fd = open(lockfile, O_CREAT | O_WRONLY, |
|
+ (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH))) < 0) { |
|
log_error("Cannot open lockfile [%s], error was [%s]", |
|
lockfile, strerror(errno)); |
|
return 0; |
|
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c |
|
index 6416f18..10ab7df 100644 |
|
--- a/libdm/libdm-report.c |
|
+++ b/libdm/libdm-report.c |
|
@@ -4195,7 +4195,7 @@ static void _destroy_rows(struct dm_report *rh) |
|
* pool allocation this will also free all subsequently allocated |
|
* rows from the report and any associated string data. |
|
*/ |
|
- if(rh->first_row) |
|
+ if (rh->first_row) |
|
dm_pool_free(rh->mem, rh->first_row); |
|
rh->first_row = NULL; |
|
dm_list_init(&rh->rows); |
|
diff --git a/libdm/libdm-stats.c b/libdm/libdm-stats.c |
|
index 736aae5..93c7760 100644 |
|
--- a/libdm/libdm-stats.c |
|
+++ b/libdm/libdm-stats.c |
|
@@ -105,7 +105,7 @@ static char *_program_id_from_proc(void) |
|
|
|
if (!fgets(buf, sizeof(buf), comm)) { |
|
log_error("Could not read from %s", PROC_SELF_COMM); |
|
- if(fclose(comm)) |
|
+ if (fclose(comm)) |
|
stack; |
|
return NULL; |
|
} |
|
@@ -145,7 +145,7 @@ struct dm_stats *dm_stats_create(const char *program_id) |
|
|
|
/* FIXME: better hint. */ |
|
if (!(dms->mem = dm_pool_create("stats_pool", 4096))) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
if (!(dms->hist_mem = dm_pool_create("histogram_pool", hist_hint))) |
|
return_0; |
|
@@ -169,7 +169,8 @@ struct dm_stats *dm_stats_create(const char *program_id) |
|
dms->regions = NULL; |
|
|
|
return dms; |
|
-out: |
|
+ |
|
+bad: |
|
dm_free(dms); |
|
return NULL; |
|
} |
|
@@ -354,7 +355,7 @@ static char *_build_histogram_arg(struct dm_histogram *bounds, int *precise) |
|
hist_len += 1 + (size_t) lround(log10(value)); |
|
} |
|
|
|
- if(!(hist_arg = dm_zalloc(hist_len))) { |
|
+ if (!(hist_arg = dm_zalloc(hist_len))) { |
|
log_error("Could not allocate memory for histogram argument."); |
|
return 0; |
|
} |
|
@@ -373,14 +374,16 @@ static char *_build_histogram_arg(struct dm_histogram *bounds, int *precise) |
|
value = entry->upper / scale; |
|
if ((l = dm_snprintf(arg, hist_len - len, FMTu64"%s", value, |
|
(last) ? "" : ",")) < 0) |
|
- goto out; |
|
+ goto_bad; |
|
len += (size_t) l; |
|
arg += (size_t) l; |
|
} |
|
return hist_arg; |
|
-out: |
|
+ |
|
+bad: |
|
log_error("Could not build histogram arguments."); |
|
dm_free(hist_arg); |
|
+ |
|
return NULL; |
|
} |
|
|
|
@@ -392,16 +395,17 @@ static struct dm_task *_stats_send_message(struct dm_stats *dms, char *msg) |
|
return_0; |
|
|
|
if (!_set_stats_device(dms, dmt)) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
if (!dm_task_set_message(dmt, msg)) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
if (!dm_task_run(dmt)) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
return dmt; |
|
-out: |
|
+ |
|
+bad: |
|
dm_task_destroy(dmt); |
|
return NULL; |
|
} |
|
@@ -425,7 +429,7 @@ static int _stats_parse_histogram_spec(struct dm_stats *dms, |
|
|
|
/* Advance past "histogram:". */ |
|
histogram = strchr(histogram, ':'); |
|
- if(!histogram) { |
|
+ if (!histogram) { |
|
log_error("Could not parse histogram description."); |
|
return 0; |
|
} |
|
@@ -444,21 +448,23 @@ static int _stats_parse_histogram_spec(struct dm_stats *dms, |
|
hist.region = region; |
|
hist.dms = dms; |
|
|
|
- if(!dm_pool_grow_object(mem, &hist, sizeof(hist))) |
|
- goto_out; |
|
+ if (!dm_pool_grow_object(mem, &hist, sizeof(hist))) |
|
+ goto_bad; |
|
|
|
c = histogram; |
|
do { |
|
- for(v = _valid_chars; *v; v++) |
|
+ for (v = _valid_chars; *v; v++) |
|
if (*c == *v) |
|
break; |
|
- if(!*v) |
|
+ if (!*v) { |
|
+ stack; |
|
goto badchar; |
|
+ } |
|
|
|
if (*c == ',') { |
|
log_error("Invalid histogram description: %s", |
|
histogram); |
|
- goto out; |
|
+ goto bad; |
|
} else { |
|
const char *val_start = c; |
|
char *endptr = NULL; |
|
@@ -467,15 +473,17 @@ static int _stats_parse_histogram_spec(struct dm_stats *dms, |
|
this_val = strtoull(val_start, &endptr, 10); |
|
if (!endptr) { |
|
log_error("Could not parse histogram boundary."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
|
|
c = endptr; /* Advance to units, comma, or end. */ |
|
|
|
if (*c == ',') |
|
c++; |
|
- else if (*c || (*c == ' ')) /* Expected ',' or NULL. */ |
|
+ else if (*c || (*c == ' ')) { /* Expected ',' or NULL. */ |
|
+ stack; |
|
goto badchar; |
|
+ } |
|
|
|
if (*c == ',') |
|
c++; |
|
@@ -484,7 +492,7 @@ static int _stats_parse_histogram_spec(struct dm_stats *dms, |
|
cur.count = 0; |
|
|
|
if (!dm_pool_grow_object(mem, &cur, sizeof(cur))) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
nr_bins++; |
|
} |
|
@@ -493,7 +501,7 @@ static int _stats_parse_histogram_spec(struct dm_stats *dms, |
|
/* final upper bound. */ |
|
cur.upper = UINT64_MAX; |
|
if (!dm_pool_grow_object(mem, &cur, sizeof(cur))) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
region->bounds = dm_pool_end_object(mem); |
|
|
|
@@ -507,7 +515,7 @@ static int _stats_parse_histogram_spec(struct dm_stats *dms, |
|
|
|
badchar: |
|
log_error("Invalid character in histogram: '%c' (0x%x)", *c, *c); |
|
-out: |
|
+bad: |
|
dm_pool_abandon_object(mem); |
|
return 0; |
|
} |
|
@@ -614,12 +622,12 @@ static int _stats_parse_list(struct dm_stats *dms, const char *resp) |
|
return_0; |
|
|
|
if (!dm_pool_begin_object(mem, 1024)) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
while(fgets(line, sizeof(line), list_rows)) { |
|
|
|
if (!_stats_parse_list_region(dms, &cur, line)) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
/* handle holes in the list of region_ids */ |
|
if (cur.region_id > max_region) { |
|
@@ -628,12 +636,12 @@ static int _stats_parse_list(struct dm_stats *dms, const char *resp) |
|
fill.region_id = DM_STATS_REGION_NOT_PRESENT; |
|
do { |
|
if (!dm_pool_grow_object(mem, &fill, sizeof(fill))) |
|
- goto_out; |
|
+ goto_bad; |
|
} while (max_region++ < (cur.region_id - 1)); |
|
} |
|
|
|
if (!dm_pool_grow_object(mem, &cur, sizeof(cur))) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
max_region++; |
|
nr_regions++; |
|
@@ -647,10 +655,12 @@ static int _stats_parse_list(struct dm_stats *dms, const char *resp) |
|
stack; |
|
|
|
return 1; |
|
-out: |
|
- if(fclose(list_rows)) |
|
+ |
|
+bad: |
|
+ if (fclose(list_rows)) |
|
stack; |
|
dm_pool_abandon_object(mem); |
|
+ |
|
return 0; |
|
} |
|
|
|
@@ -675,17 +685,17 @@ int dm_stats_list(struct dm_stats *dms, const char *program_id) |
|
} |
|
|
|
if (!(dmt = _stats_send_message(dms, msg))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_stats_parse_list(dms, dm_task_get_message_response(dmt))) { |
|
log_error("Could not parse @stats_list response."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
|
|
dm_task_destroy(dmt); |
|
return 1; |
|
|
|
-out: |
|
+bad: |
|
dm_task_destroy(dmt); |
|
return 0; |
|
} |
|
@@ -715,15 +725,17 @@ static int _stats_parse_histogram(struct dm_pool *mem, char *hist_str, |
|
|
|
do { |
|
memset(&cur, 0, sizeof(cur)); |
|
- for(v = _valid_chars; *v; v++) |
|
+ for (v = _valid_chars; *v; v++) |
|
if (*c == *v) |
|
break; |
|
- if(!*v) |
|
+ if (!*v) { |
|
+ stack; |
|
goto badchar; |
|
+ } |
|
|
|
if (*c == ',') { |
|
log_error("Invalid histogram: %s", hist_str); |
|
- goto out; |
|
+ return 0; |
|
} else { |
|
const char *val_start = c; |
|
char *endptr = NULL; |
|
@@ -732,15 +744,17 @@ static int _stats_parse_histogram(struct dm_pool *mem, char *hist_str, |
|
this_val = strtoull(val_start, &endptr, 10); |
|
if (!endptr) { |
|
log_error("Could not parse histogram value."); |
|
- goto out; |
|
+ return 0; |
|
} |
|
c = endptr; /* Advance to colon, or end. */ |
|
|
|
if (*c == ':') |
|
c++; |
|
- else if (*c & (*c != '\n')) |
|
+ else if (*c & (*c != '\n')) { |
|
/* Expected ':', '\n', or NULL. */ |
|
+ stack; |
|
goto badchar; |
|
+ } |
|
|
|
if (*c == ':') |
|
c++; |
|
@@ -764,7 +778,6 @@ static int _stats_parse_histogram(struct dm_pool *mem, char *hist_str, |
|
|
|
badchar: |
|
log_error("Invalid character in histogram data: '%c' (0x%x)", *c, *c); |
|
-out: |
|
return 0; |
|
} |
|
|
|
@@ -788,7 +801,7 @@ static int _stats_parse_region(struct dm_stats *dms, const char *resp, |
|
region->start = UINT64_MAX; |
|
|
|
if (!dm_pool_begin_object(mem, 512)) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
/* |
|
* dm_task_get_message_response() returns a 'const char *' but |
|
@@ -796,7 +809,7 @@ static int _stats_parse_region(struct dm_stats *dms, const char *resp, |
|
*/ |
|
stats_rows = fmemopen((char *)resp, strlen(resp), "r"); |
|
if (!stats_rows) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
/* |
|
* Output format for each step-sized area of a region: |
|
@@ -844,7 +857,7 @@ static int _stats_parse_region(struct dm_stats *dms, const char *resp, |
|
&cur.total_read_nsecs, &cur.total_write_nsecs); |
|
if (r != 15) { |
|
log_error("Could not parse @stats_print row."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
|
|
/* scale time values up if needed */ |
|
@@ -862,7 +875,7 @@ static int _stats_parse_region(struct dm_stats *dms, const char *resp, |
|
char *hist_str = strchr(row, ':'); |
|
if (!hist_str) { |
|
log_error("Could not parse histogram value."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
/* Find space preceding histogram. */ |
|
while (hist_str && *(hist_str - 1) != ' ') |
|
@@ -874,15 +887,15 @@ static int _stats_parse_region(struct dm_stats *dms, const char *resp, |
|
*/ |
|
if (!_stats_parse_histogram(dms->hist_mem, hist_str, |
|
&hist, region)) |
|
- goto out; |
|
+ goto_bad; |
|
hist->dms = dms; |
|
hist->region = region; |
|
} |
|
|
|
cur.histogram = hist; |
|
|
|
- if(!dm_pool_grow_object(mem, &cur, sizeof(cur))) |
|
- goto_out; |
|
+ if (!dm_pool_grow_object(mem, &cur, sizeof(cur))) |
|
+ goto_bad; |
|
|
|
if (region->start == UINT64_MAX) { |
|
region->start = start; |
|
@@ -899,12 +912,12 @@ static int _stats_parse_region(struct dm_stats *dms, const char *resp, |
|
|
|
return 1; |
|
|
|
-out: |
|
- |
|
+bad: |
|
if (stats_rows) |
|
- if(fclose(stats_rows)) |
|
+ if (fclose(stats_rows)) |
|
stack; |
|
dm_pool_abandon_object(mem); |
|
+ |
|
return 0; |
|
} |
|
|
|
@@ -1017,7 +1030,7 @@ int dm_stats_get_region_nr_histogram_bins(const struct dm_stats *dms, |
|
? dms->cur_region : region_id ; |
|
|
|
if (!dms->regions[region_id].bounds) |
|
- return 0; |
|
+ return_0; |
|
|
|
return dms->regions[region_id].bounds->nr_bins; |
|
} |
|
@@ -1083,7 +1096,7 @@ static int _stats_create_region(struct dm_stats *dms, uint64_t *region_id, |
|
} |
|
|
|
if (!(dmt = _stats_send_message(dms, msg))) |
|
- goto out; |
|
+ goto_out; |
|
|
|
resp = dm_task_get_message_response(dmt); |
|
if (!resp) { |
|
@@ -1101,9 +1114,10 @@ static int _stats_create_region(struct dm_stats *dms, uint64_t *region_id, |
|
r = 1; |
|
|
|
out: |
|
- if(dmt) |
|
+ if (dmt) |
|
dm_task_destroy(dmt); |
|
dm_free((void *) opt_args); |
|
+ |
|
return r; |
|
} |
|
|
|
@@ -1116,9 +1130,8 @@ int dm_stats_create_region(struct dm_stats *dms, uint64_t *region_id, |
|
int r = 0; |
|
|
|
/* Nanosecond counters and histograms both need precise_timestamps. */ |
|
- if ((precise || bounds) |
|
- && !_stats_check_precise_timestamps(dms)) |
|
- return 0; |
|
+ if ((precise || bounds) && !_stats_check_precise_timestamps(dms)) |
|
+ return_0; |
|
|
|
if (bounds) { |
|
/* _build_histogram_arg enables precise if vals < 1ms. */ |
|
@@ -1129,6 +1142,7 @@ int dm_stats_create_region(struct dm_stats *dms, uint64_t *region_id, |
|
r = _stats_create_region(dms, region_id, start, len, step, |
|
precise, hist_arg, program_id, aux_data); |
|
dm_free(hist_arg); |
|
+ |
|
out: |
|
return r; |
|
} |
|
@@ -1143,17 +1157,15 @@ int dm_stats_delete_region(struct dm_stats *dms, uint64_t region_id) |
|
|
|
if (!dm_snprintf(msg, sizeof(msg), "@stats_delete " FMTu64, region_id)) { |
|
log_error("Could not prepare @stats_delete message."); |
|
- goto out; |
|
+ return 0; |
|
} |
|
|
|
dmt = _stats_send_message(dms, msg); |
|
if (!dmt) |
|
- goto_out; |
|
+ return_0; |
|
dm_task_destroy(dmt); |
|
- return 1; |
|
|
|
-out: |
|
- return 0; |
|
+ return 1; |
|
} |
|
|
|
int dm_stats_clear_region(struct dm_stats *dms, uint64_t region_id) |
|
@@ -1166,17 +1178,17 @@ int dm_stats_clear_region(struct dm_stats *dms, uint64_t region_id) |
|
|
|
if (!dm_snprintf(msg, sizeof(msg), "@stats_clear " FMTu64, region_id)) { |
|
log_error("Could not prepare @stats_clear message."); |
|
- goto out; |
|
+ return 0; |
|
} |
|
|
|
dmt = _stats_send_message(dms, msg); |
|
+ |
|
if (!dmt) |
|
- goto_out; |
|
+ return_0; |
|
+ |
|
dm_task_destroy(dmt); |
|
- return 1; |
|
|
|
-out: |
|
- return 0; |
|
+ return 1; |
|
} |
|
|
|
static struct dm_task *_stats_print_region(struct dm_stats *dms, |
|
@@ -1194,22 +1206,19 @@ static struct dm_task *_stats_print_region(struct dm_stats *dms, |
|
if (!dm_snprintf(lines, sizeof(lines), |
|
lines_fmt, start_line, num_lines)) { |
|
log_error(err_fmt, "row specification"); |
|
- goto out; |
|
+ return NULL; |
|
} |
|
|
|
if (!dm_snprintf(msg, sizeof(msg), msg_fmt, (clear) ? clear_str : "", |
|
region_id, (start_line || num_lines) ? lines : "")) { |
|
log_error(err_fmt, "message"); |
|
- goto out; |
|
+ return NULL; |
|
} |
|
|
|
if (!(dmt = _stats_send_message(dms, msg))) |
|
- goto out; |
|
+ return_NULL; |
|
|
|
return dmt; |
|
- |
|
-out: |
|
- return NULL; |
|
} |
|
|
|
char *dm_stats_print_region(struct dm_stats *dms, uint64_t region_id, |
|
@@ -1226,7 +1235,7 @@ char *dm_stats_print_region(struct dm_stats *dms, uint64_t region_id, |
|
start_line, num_lines, clear); |
|
|
|
if (!dmt) |
|
- return 0; |
|
+ return_0; |
|
|
|
resp = dm_pool_strdup(dms->mem, dm_task_get_message_response(dmt)); |
|
dm_task_destroy(dmt); |
|
@@ -1245,7 +1254,7 @@ void dm_stats_buffer_destroy(struct dm_stats *dms, char *buffer) |
|
uint64_t dm_stats_get_nr_regions(const struct dm_stats *dms) |
|
{ |
|
if (!dms || !dms->regions) |
|
- return 0; |
|
+ return_0; |
|
return dms->nr_regions; |
|
} |
|
|
|
@@ -1255,10 +1264,10 @@ uint64_t dm_stats_get_nr_regions(const struct dm_stats *dms) |
|
int dm_stats_region_present(const struct dm_stats *dms, uint64_t region_id) |
|
{ |
|
if (!dms->regions) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (region_id > dms->max_region) |
|
- return 0; |
|
+ return_0; |
|
|
|
return _stats_region_present(&dms->regions[region_id]); |
|
} |
|
@@ -1293,12 +1302,12 @@ int dm_stats_populate(struct dm_stats *dms, const char *program_id, |
|
|
|
if (all_regions && !dm_stats_list(dms, program_id)) { |
|
log_error("Could not parse @stats_list response."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
|
|
/* successful list but no regions registered */ |
|
if (!dms->nr_regions) |
|
- return 0; |
|
+ return_0; |
|
|
|
dm_stats_walk_start(dms); |
|
do { |
|
@@ -1310,12 +1319,12 @@ int dm_stats_populate(struct dm_stats *dms, const char *program_id, |
|
|
|
/* obtain all lines and clear counter values */ |
|
if (!(dmt = _stats_print_region(dms, region_id, 0, 0, 1))) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
resp = dm_task_get_message_response(dmt); |
|
if (!_dm_stats_populate_region(dms, region_id, resp)) { |
|
dm_task_destroy(dmt); |
|
- goto_out; |
|
+ goto_bad; |
|
} |
|
|
|
dm_task_destroy(dmt); |
|
@@ -1325,7 +1334,7 @@ int dm_stats_populate(struct dm_stats *dms, const char *program_id, |
|
|
|
return 1; |
|
|
|
-out: |
|
+bad: |
|
_stats_regions_destroy(dms); |
|
dms->regions = NULL; |
|
return 0; |
|
@@ -1620,10 +1629,10 @@ int dm_stats_get_service_time(const struct dm_stats *dms, double *svctm, |
|
double tput; |
|
|
|
if (!dm_stats_get_throughput(dms, &tput, region_id, area_id)) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!dm_stats_get_utilization(dms, &util, region_id, area_id)) |
|
- return 0; |
|
+ return_0; |
|
|
|
/* avoid NAN with zero counter values */ |
|
if ( (uint64_t) tput == 0 || (uint64_t) util == 0) { |
|
@@ -1973,23 +1982,26 @@ struct dm_histogram *dm_histogram_bounds_from_string(const char *bounds_str) |
|
c = bounds_str; |
|
|
|
if (!(dmh = _alloc_dm_histogram(nr_entries))) |
|
- return 0; |
|
+ return_0; |
|
|
|
dmh->nr_bins = nr_entries; |
|
|
|
cur = dmh->bins; |
|
|
|
do { |
|
- for(v = _valid_chars; *v; v++) |
|
+ for (v = _valid_chars; *v; v++) |
|
if (*c == *v) |
|
break; |
|
- if(!*v) |
|
+ |
|
+ if (!*v) { |
|
+ stack; |
|
goto badchar; |
|
+ } |
|
|
|
if (*c == ',') { |
|
log_error("Empty histogram bin not allowed: %s", |
|
bounds_str); |
|
- goto out; |
|
+ goto bad; |
|
} else { |
|
const char *val_start = c; |
|
char *endptr = NULL; |
|
@@ -1998,7 +2010,7 @@ struct dm_histogram *dm_histogram_bounds_from_string(const char *bounds_str) |
|
this_val = strtoull(val_start, &endptr, 10); |
|
if (!endptr) { |
|
log_error("Could not parse histogram bound."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
c = endptr; /* Advance to units, comma, or end. */ |
|
|
|
@@ -2012,13 +2024,17 @@ struct dm_histogram *dm_histogram_bounds_from_string(const char *bounds_str) |
|
mult = NSEC_PER_USEC; |
|
else if (*c == 'n') |
|
mult = 1; |
|
- else |
|
+ else { |
|
+ stack; |
|
goto badchar; |
|
+ } |
|
c += 2; /* Advance over 'ms', 'us', or 'ns'. */ |
|
} else if (*c == ',') |
|
c++; |
|
- else if (*c) /* Expected ',' or NULL. */ |
|
+ else if (*c) { /* Expected ',' or NULL. */ |
|
+ stack; |
|
goto badchar; |
|
+ } |
|
|
|
if (*c == ',') |
|
c++; |
|
@@ -2035,7 +2051,7 @@ struct dm_histogram *dm_histogram_bounds_from_string(const char *bounds_str) |
|
|
|
badchar: |
|
log_error("Invalid character in histogram: %c", *c); |
|
-out: |
|
+bad: |
|
dm_free(dmh); |
|
return NULL; |
|
} |
|
@@ -2121,7 +2137,7 @@ static int _make_bounds_string(char *buf, size_t size, uint64_t lower, |
|
int bounds = flags & DM_HISTOGRAM_BOUNDS_MASK; |
|
|
|
if (!bounds) |
|
- return 0; |
|
+ return_0; |
|
|
|
*buf = '\0'; |
|
|
|
@@ -2258,14 +2274,15 @@ const char *dm_histogram_to_string(const struct dm_histogram *dmh, int bin, |
|
sep); |
|
|
|
if (len < 0) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
width = minwidth; /* re-set histogram column width. */ |
|
dm_pool_grow_object(mem, buf, (size_t) len); |
|
} |
|
dm_pool_grow_object(mem, "\0", 1); |
|
return (const char *) dm_pool_end_object(mem); |
|
-out: |
|
+ |
|
+bad: |
|
dm_pool_abandon_object(mem); |
|
return NULL; |
|
} |
|
diff --git a/liblvm/lvm_pv.c b/liblvm/lvm_pv.c |
|
index 24b2732..5933e0a 100644 |
|
--- a/liblvm/lvm_pv.c |
|
+++ b/liblvm/lvm_pv.c |
|
@@ -155,9 +155,8 @@ static struct dm_list *_lvm_list_pvs(lvm_t libh) |
|
} else { |
|
dm_list_init(&rc->pvslist); |
|
dm_list_init(&rc->vgslist); |
|
- if( !get_pvs_perserve_vg(cmd, &rc->pvslist, &rc->vgslist) ) { |
|
- return NULL; |
|
- } |
|
+ if (!get_pvs_perserve_vg(cmd, &rc->pvslist, &rc->vgslist)) |
|
+ return_NULL; |
|
|
|
/* |
|
* If we have no PVs we still need to have access to cmd |
|
diff --git a/tools/dmsetup.c b/tools/dmsetup.c |
|
index 8983e18..61ad5a9 100644 |
|
--- a/tools/dmsetup.c |
|
+++ b/tools/dmsetup.c |
|
@@ -327,7 +327,7 @@ static int _parse_line(struct dm_task *dmt, char *buffer, const char *file, |
|
*comment = '\0'; |
|
|
|
if (!dm_task_add_target(dmt, start, size, ttype, ptr)) |
|
- return 0; |
|
+ return_0; |
|
|
|
return 1; |
|
} |
|
@@ -364,11 +364,11 @@ static int _parse_file(struct dm_task *dmt, const char *file) |
|
while (getline(&buffer, &buffer_size, fp) > 0) |
|
#endif |
|
if (!_parse_line(dmt, buffer, file ? : "on stdin", ++line)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
memset(buffer, 0, buffer_size); |
|
#ifndef HAVE_GETLINE |
|
dm_free(buffer); |
|
@@ -421,33 +421,33 @@ static struct dm_task *_get_deps_task(int major, int minor) |
|
struct dm_info info; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_DEPS))) |
|
- return NULL; |
|
+ return_NULL; |
|
|
|
if (!dm_task_set_major(dmt, major) || |
|
!dm_task_set_minor(dmt, minor)) |
|
- goto err; |
|
+ goto_bad; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto err; |
|
+ goto_bad; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto err; |
|
+ goto_bad; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto err; |
|
+ goto_bad; |
|
|
|
if (!_task_run(dmt)) |
|
- goto err; |
|
+ goto_bad; |
|
|
|
if (!dm_task_get_info(dmt, &info)) |
|
- goto err; |
|
+ goto_bad; |
|
|
|
if (!info.exists) |
|
- goto err; |
|
+ goto_bad; |
|
|
|
return dmt; |
|
|
|
- err: |
|
+bad: |
|
dm_task_destroy(dmt); |
|
return NULL; |
|
} |
|
@@ -581,7 +581,7 @@ static int _do_timerfd_wait(void) |
|
ssize_t bytes; |
|
|
|
if (_timer_fd < 0) |
|
- return 0; |
|
+ return_0; |
|
|
|
/* read on timerfd returns a uint64_t in host byte order. */ |
|
bytes = read(_timer_fd, &expired, sizeof(expired)); |
|
@@ -646,9 +646,9 @@ static int _do_usleep_wait(void) |
|
*/ |
|
if (!_last_sleep && !_now) { |
|
if (!(_last_sleep = dm_timestamp_alloc())) |
|
- goto_out; |
|
+ return_0; |
|
if (!(_now = dm_timestamp_alloc())) |
|
- goto_out; |
|
+ return_0; |
|
dm_timestamp_get(_now); |
|
this_interval = _interval; |
|
log_error("Using "FMTu64" as first interval.", this_interval); |
|
@@ -673,17 +673,15 @@ static int _do_usleep_wait(void) |
|
log_error("Report interval interrupted by signal."); |
|
if (errno == EINVAL) |
|
log_error("Report interval too short."); |
|
- goto out; |
|
+ return_0; |
|
} |
|
|
|
- if(_count == 2) { |
|
+ if (_count == 2) { |
|
dm_timestamp_destroy(_last_sleep); |
|
dm_timestamp_destroy(_now); |
|
} |
|
|
|
return 1; |
|
-out: |
|
- return 0; |
|
} |
|
|
|
static int _start_timer(void) |
|
@@ -838,7 +836,7 @@ static int _display_info_cols(struct dm_task *dmt, struct dm_info *info) |
|
dm_stats_bind_devno(obj.stats, info->major, info->minor); |
|
|
|
if (!dm_stats_populate(obj.stats, _program_id, DM_STATS_REGIONS_ALL)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
/* Update timestamps and handle end-of-interval accounting. */ |
|
_update_interval_times(); |
|
@@ -856,11 +854,11 @@ static int _display_info_cols(struct dm_task *dmt, struct dm_info *info) |
|
dm_stats_bind_devno(obj.stats, info->major, info->minor); |
|
|
|
if (!dm_stats_list(obj.stats, _program_id)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
/* No regions to report */ |
|
if (!dm_stats_get_nr_regions(obj.stats)) |
|
- goto out; |
|
+ goto_out; |
|
} |
|
|
|
/* |
|
@@ -879,7 +877,7 @@ static int _display_info_cols(struct dm_task *dmt, struct dm_info *info) |
|
} dm_stats_walk_while(obj.stats); |
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
if (obj.deps_task) |
|
dm_task_destroy(obj.deps_task); |
|
if (obj.split_name) |
|
@@ -938,7 +936,7 @@ static int _display_info(struct dm_task *dmt) |
|
struct dm_info info; |
|
|
|
if (!dm_task_get_info(dmt, &info)) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_switches[COLS_ARG]) |
|
_display_info_long(dmt, &info); |
|
@@ -953,14 +951,14 @@ static int _set_task_device(struct dm_task *dmt, const char *name, int optional) |
|
{ |
|
if (name) { |
|
if (!dm_task_set_name(dmt, name)) |
|
- return 0; |
|
+ return_0; |
|
} else if (_switches[UUID_ARG]) { |
|
if (!dm_task_set_uuid(dmt, _uuid)) |
|
- return 0; |
|
+ return_0; |
|
} else if (_switches[MAJOR_ARG] && _switches[MINOR_ARG]) { |
|
if (!dm_task_set_major(dmt, _int_args[MAJOR_ARG]) || |
|
!dm_task_set_minor(dmt, _int_args[MINOR_ARG])) |
|
- return 0; |
|
+ return_0; |
|
} else if (!optional) { |
|
fprintf(stderr, "No device specified.\n"); |
|
return 0; |
|
@@ -972,15 +970,15 @@ static int _set_task_device(struct dm_task *dmt, const char *name, int optional) |
|
static int _set_task_add_node(struct dm_task *dmt) |
|
{ |
|
if (!dm_task_set_add_node(dmt, DEFAULT_DM_ADD_NODE)) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (_switches[ADD_NODE_ON_RESUME_ARG] && |
|
!dm_task_set_add_node(dmt, DM_ADD_NODE_ON_RESUME)) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (_switches[ADD_NODE_ON_CREATE_ARG] && |
|
!dm_task_set_add_node(dmt, DM_ADD_NODE_ON_CREATE)) |
|
- return 0; |
|
+ return_0; |
|
|
|
return 1; |
|
} |
|
@@ -1014,35 +1012,35 @@ static int _load(CMD_ARGS) |
|
file = argv[0]; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_RELOAD))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_switches[NOTABLE_ARG] && !_parse_file(dmt, file)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[READ_ONLY] && !dm_task_set_ro(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = 1; |
|
|
|
if (_switches[VERBOSE_ARG]) |
|
r = _display_info(dmt); |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
|
|
return r; |
|
@@ -1060,45 +1058,45 @@ static int _create(CMD_ARGS) |
|
file = argv[1]; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_CREATE))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!dm_task_set_name(dmt, argv[0])) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[UUID_ARG] && !dm_task_set_uuid(dmt, _uuid)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_switches[NOTABLE_ARG] && !_parse_file(dmt, file)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[READ_ONLY] && !dm_task_set_ro(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[MAJOR_ARG] && !dm_task_set_major(dmt, _int_args[MAJOR_ARG])) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[MINOR_ARG] && !dm_task_set_minor(dmt, _int_args[MINOR_ARG])) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[UID_ARG] && !dm_task_set_uid(dmt, _int_args[UID_ARG])) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[GID_ARG] && !dm_task_set_gid(dmt, _int_args[GID_ARG])) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[MODE_ARG] && !dm_task_set_mode(dmt, _int_args[MODE_ARG])) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[READAHEAD_ARG] && |
|
!dm_task_set_read_ahead(dmt, _int_args[READAHEAD_ARG], |
|
_read_ahead_flags)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOTABLE_ARG]) |
|
dm_udev_set_sync_support(0); |
|
@@ -1108,10 +1106,10 @@ static int _create(CMD_ARGS) |
|
DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_set_task_add_node(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_udev_cookie) |
|
cookie = _udev_cookie; |
|
@@ -1121,11 +1119,11 @@ static int _create(CMD_ARGS) |
|
|
|
if (!dm_task_set_cookie(dmt, &cookie, udev_flags) || |
|
!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
if (!_udev_cookie) |
|
(void) dm_udev_wait(cookie); |
|
|
|
@@ -1144,26 +1142,26 @@ static int _do_rename(const char *name, const char *new_name, const char *new_uu |
|
uint16_t udev_flags = 0; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_RENAME))) |
|
- return 0; |
|
+ return_0; |
|
|
|
/* FIXME Kernel doesn't support uuid or device number here yet */ |
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (new_uuid) { |
|
if (!dm_task_set_newuuid(dmt, new_uuid)) |
|
- goto out; |
|
+ goto_out; |
|
} else if (!new_name || !dm_task_set_newname(dmt, new_name)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOUDEVRULES_ARG]) |
|
udev_flags |= DM_UDEV_DISABLE_DM_RULES_FLAG | |
|
@@ -1177,11 +1175,11 @@ static int _do_rename(const char *name, const char *new_name, const char *new_uu |
|
|
|
if (!dm_task_set_cookie(dmt, &cookie, udev_flags) || |
|
!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
if (!_udev_cookie) |
|
(void) dm_udev_wait(cookie); |
|
|
|
@@ -1210,14 +1208,14 @@ static int _message(CMD_ARGS) |
|
char *endptr; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_TARGET_MSG))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (_switches[UUID_ARG] || _switches[MAJOR_ARG]) { |
|
if (!_set_task_device(dmt, NULL, 0)) |
|
- goto out; |
|
+ goto_out; |
|
} else { |
|
if (!_set_task_device(dmt, argv[0], 0)) |
|
- goto out; |
|
+ goto_out; |
|
argc--; |
|
argv++; |
|
} |
|
@@ -1228,7 +1226,7 @@ static int _message(CMD_ARGS) |
|
goto out; |
|
} |
|
if (!dm_task_set_sector(dmt, sector)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
argc--; |
|
argv++; |
|
@@ -1255,19 +1253,19 @@ static int _message(CMD_ARGS) |
|
dm_free(str); |
|
|
|
if (!i) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if ((response = dm_task_get_message_response(dmt))) { |
|
if (!*response || response[strlen(response) - 1] == '\n') |
|
@@ -1278,7 +1276,7 @@ static int _message(CMD_ARGS) |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
|
|
return r; |
|
@@ -1290,37 +1288,37 @@ static int _setgeometry(CMD_ARGS) |
|
struct dm_task *dmt; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_SET_GEOMETRY))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (_switches[UUID_ARG] || _switches[MAJOR_ARG]) { |
|
if (!_set_task_device(dmt, NULL, 0)) |
|
- goto out; |
|
+ goto_out; |
|
} else { |
|
if (!_set_task_device(dmt, argv[0], 0)) |
|
- goto out; |
|
+ goto_out; |
|
argc--; |
|
argv++; |
|
} |
|
|
|
if (!dm_task_set_geometry(dmt, argv[0], argv[1], argv[2], argv[3])) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
/* run the task */ |
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
|
|
return r; |
|
@@ -1373,7 +1371,7 @@ static int _udevflags(CMD_ARGS) |
|
0}; |
|
|
|
if (!(cookie = _get_cookie_value(argv[0]))) |
|
- return 0; |
|
+ return_0; |
|
|
|
flags = cookie >> DM_UDEV_FLAGS_SHIFT; |
|
|
|
@@ -1405,7 +1403,7 @@ static int _udevcomplete(CMD_ARGS) |
|
uint32_t cookie; |
|
|
|
if (!(cookie = _get_cookie_value(argv[0]))) |
|
- return 0; |
|
+ return_0; |
|
|
|
/* |
|
* Strip flags from the cookie and use cookie magic instead. |
|
@@ -1519,7 +1517,7 @@ static int _udevcreatecookie(CMD_ARGS) |
|
uint32_t cookie; |
|
|
|
if (!dm_udev_create_cookie(&cookie)) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (cookie) |
|
printf("0x%08" PRIX32 "\n", cookie); |
|
@@ -1530,7 +1528,7 @@ static int _udevcreatecookie(CMD_ARGS) |
|
static int _udevreleasecookie(CMD_ARGS) |
|
{ |
|
if (argv[0] && !(_udev_cookie = _get_cookie_value(argv[0]))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_udev_cookie) { |
|
log_error("No udev transaction cookie given."); |
|
@@ -1686,7 +1684,7 @@ static int _version(CMD_ARGS) |
|
printf("Library version: %s\n", version); |
|
|
|
if (!dm_driver_version(version, sizeof(version))) |
|
- return 0; |
|
+ return_0; |
|
|
|
printf("Driver version: %s\n", version); |
|
|
|
@@ -1710,37 +1708,37 @@ static int _simple(int task, const char *name, uint32_t event_nr, int display) |
|
struct dm_task *dmt; |
|
|
|
if (!(dmt = dm_task_create(task))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (event_nr && !dm_task_set_event_nr(dmt, event_nr)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOFLUSH_ARG] && !dm_task_no_flush(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOLOCKFS_ARG] && !dm_task_skip_lockfs(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
/* FIXME: needs to coperate with udev */ |
|
if (!_set_task_add_node(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[READAHEAD_ARG] && |
|
!dm_task_set_read_ahead(dmt, _int_args[READAHEAD_ARG], |
|
_read_ahead_flags)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOUDEVRULES_ARG]) |
|
udev_flags |= DM_UDEV_DISABLE_DM_RULES_FLAG | |
|
@@ -1753,7 +1751,7 @@ static int _simple(int task, const char *name, uint32_t event_nr, int display) |
|
udev_flags |= DM_UDEV_DISABLE_LIBRARY_FALLBACK; |
|
|
|
if (udev_wait_flag && !dm_task_set_cookie(dmt, &cookie, udev_flags)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[RETRY_ARG] && task == DM_DEVICE_REMOVE) |
|
dm_task_retry_remove(dmt); |
|
@@ -1763,7 +1761,7 @@ static int _simple(int task, const char *name, uint32_t event_nr, int display) |
|
|
|
r = _task_run(dmt); |
|
|
|
- out: |
|
+out: |
|
if (!_udev_cookie && udev_wait_flag) |
|
(void) dm_udev_wait(cookie); |
|
|
|
@@ -1817,19 +1815,19 @@ static int _process_all(const struct command *cmd, const char *subcommand, int a |
|
struct dm_task *dmt; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_LIST))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) { |
|
r = 0; |
|
- goto out; |
|
+ goto_out; |
|
} |
|
|
|
if (!(names = dm_task_get_names(dmt))) { |
|
r = 0; |
|
- goto out; |
|
+ goto_out; |
|
} |
|
|
|
if (!names->dev) { |
|
@@ -1845,7 +1843,7 @@ static int _process_all(const struct command *cmd, const char *subcommand, int a |
|
next = names->next; |
|
} while (next); |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
return r; |
|
} |
|
@@ -1859,25 +1857,25 @@ static uint64_t _get_device_size(const char *name) |
|
void *next = NULL; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_TABLE))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!dm_task_get_info(dmt, &info) || !info.exists) |
|
- goto out; |
|
+ goto_out; |
|
|
|
do { |
|
next = dm_get_next_target(dmt, next, &start, &length, |
|
@@ -1885,7 +1883,7 @@ static uint64_t _get_device_size(const char *name) |
|
size += length; |
|
} while (next); |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
return size; |
|
} |
|
@@ -1902,37 +1900,37 @@ static int _error_device(CMD_ARGS) |
|
size = _get_device_size(name); |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_RELOAD))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (!dm_task_add_target(dmt, UINT64_C(0), size, "error", "")) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (_switches[READ_ONLY] && !dm_task_set_ro(dmt)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (!_task_run(dmt)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (!_simple(DM_DEVICE_RESUME, name, 0, 0)) { |
|
_simple(DM_DEVICE_CLEAR, name, 0, 0); |
|
- goto error; |
|
+ goto_bad; |
|
} |
|
|
|
r = 1; |
|
|
|
-error: |
|
+bad: |
|
dm_task_destroy(dmt); |
|
return r; |
|
} |
|
@@ -2013,14 +2011,14 @@ static int _exec_command(const char *name) |
|
pid_t pid; |
|
|
|
if (argc < 0) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!dm_mknodes(name)) |
|
- return 0; |
|
+ return_0; |
|
|
|
n = snprintf(path, sizeof(path), "%s/%s", dm_dir(), name); |
|
if (n < 0 || n > (int) sizeof(path) - 1) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!argc) { |
|
c = _command_to_exec; |
|
@@ -2038,7 +2036,7 @@ static int _exec_command(const char *name) |
|
|
|
if (!argc) { |
|
argc = -1; |
|
- return 0; |
|
+ return_0; |
|
} |
|
|
|
if (argc == ARGS_MAX) { |
|
@@ -2093,28 +2091,28 @@ static int _status(CMD_ARGS) |
|
ls_only = 1; |
|
|
|
if (!(dmt = dm_task_create(cmdno))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOFLUSH_ARG] && !dm_task_no_flush(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!dm_task_get_info(dmt, &info) || !info.exists) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!name) |
|
name = dm_task_get_name(dmt); |
|
@@ -2163,11 +2161,11 @@ static int _status(CMD_ARGS) |
|
printf("\n"); |
|
|
|
if (matched && _switches[EXEC_ARG] && _command_to_exec && !_exec_command(name)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
return r; |
|
} |
|
@@ -2181,13 +2179,13 @@ static int _targets(CMD_ARGS) |
|
struct dm_versions *last_target; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_LIST_VERSIONS))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
target = dm_task_get_versions(dmt); |
|
|
|
@@ -2203,7 +2201,7 @@ static int _targets(CMD_ARGS) |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
return r; |
|
} |
|
@@ -2224,26 +2222,26 @@ static int _info(CMD_ARGS) |
|
} |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_INFO))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = _display_info(dmt); |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
return r; |
|
} |
|
@@ -2268,28 +2266,28 @@ static int _deps(CMD_ARGS) |
|
} |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_DEPS))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[INACTIVE_ARG] && !dm_task_query_inactive_table(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!dm_task_get_info(dmt, &info)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!(deps = dm_task_get_deps(dmt))) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!info.exists) { |
|
printf("Device does not exist.\n"); |
|
@@ -2322,7 +2320,7 @@ static int _deps(CMD_ARGS) |
|
|
|
r = 1; |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
return r; |
|
} |
|
@@ -2670,7 +2668,7 @@ static int _add_dep(CMD_ARGS) |
|
{ |
|
if (names && |
|
!dm_tree_add_dev(_dtree, (unsigned) MAJOR(names->dev), (unsigned) MINOR(names->dev))) |
|
- return 0; |
|
+ return_0; |
|
|
|
return 1; |
|
} |
|
@@ -2684,10 +2682,10 @@ static int _build_whole_deptree(const struct command *cmd) |
|
return 1; |
|
|
|
if (!(_dtree = dm_tree_create())) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_process_all(cmd, NULL, 0, NULL, 0, _add_dep)) |
|
- return 0; |
|
+ return_0; |
|
|
|
return 1; |
|
} |
|
@@ -2695,7 +2693,7 @@ static int _build_whole_deptree(const struct command *cmd) |
|
static int _display_tree(CMD_ARGS) |
|
{ |
|
if (!_build_whole_deptree(cmd)) |
|
- return 0; |
|
+ return_0; |
|
|
|
_display_tree_walk_children(dm_tree_find_node(_dtree, 0, 0), 0); |
|
|
|
@@ -2732,7 +2730,7 @@ static int _show_units(void) |
|
{ |
|
/* --nosuffix overrides --units */ |
|
if (_switches[NOSUFFIX_ARG]) |
|
- return 0; |
|
+ return_0; |
|
|
|
return (_int_args[UNITS_ARG]) ? 1 : 0; |
|
} |
|
@@ -2944,8 +2942,10 @@ static int _dm_info_devno_disp(struct dm_report *rh, struct dm_pool *mem, |
|
|
|
if (private) { |
|
if (!dm_device_get_name(info->major, info->minor, |
|
- 1, buf, PATH_MAX)) |
|
+ 1, buf, PATH_MAX)) { |
|
+ stack; |
|
goto out_abandon; |
|
+ } |
|
} |
|
else { |
|
if (dm_snprintf(buf, sizeof(buf), "%d:%d", |
|
@@ -4375,7 +4375,7 @@ static int _report_init(const struct command *cmd, const char *subcommand) |
|
if (!(_report = dm_report_init_with_selection(&_report_type, _report_types, |
|
_report_fields, options, separator, flags, keys, |
|
selection, NULL, NULL))) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if ((_report_type & DR_TREE) && !_build_whole_deptree(cmd)) { |
|
err("Internal device dependency tree creation failed."); |
|
@@ -4431,19 +4431,19 @@ static int _mangle(CMD_ARGS) |
|
} |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!(_set_task_device(dmt, name, 0))) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!dm_task_get_info(dmt, &info) || !info.exists) |
|
- goto out; |
|
+ goto_out; |
|
|
|
uuid = dm_task_get_uuid(dmt); |
|
|
|
@@ -4465,15 +4465,15 @@ static int _mangle(CMD_ARGS) |
|
|
|
if (target_format == DM_STRING_MANGLING_NONE) { |
|
if (!(new_name = dm_task_get_name_unmangled(dmt))) |
|
- goto out; |
|
+ goto_out; |
|
if (!(new_uuid = dm_task_get_uuid_unmangled(dmt))) |
|
- goto out; |
|
+ goto_out; |
|
} |
|
else { |
|
if (!(new_name = dm_task_get_name_mangled(dmt))) |
|
- goto out; |
|
+ goto_out; |
|
if (!(new_uuid = dm_task_get_uuid_mangled(dmt))) |
|
- goto out; |
|
+ goto_out; |
|
} |
|
|
|
/* We can't rename the UUID, the device must be reactivated manually. */ |
|
@@ -4508,13 +4508,13 @@ static int _stats(CMD_ARGS); |
|
static int _bind_stats_device(struct dm_stats *dms, const char *name) |
|
{ |
|
if (name && !dm_stats_bind_name(dms, name)) |
|
- return 0; |
|
+ return_0; |
|
else if (_switches[UUID_ARG] && !dm_stats_bind_uuid(dms, _uuid)) |
|
- return 0; |
|
+ return_0; |
|
else if (_switches[MAJOR_ARG] && _switches[MINOR_ARG] |
|
&& !dm_stats_bind_devno(dms, _int_args[MAJOR_ARG], |
|
_int_args[MINOR_ARG])) |
|
- return 0; |
|
+ return_0; |
|
|
|
return 1; |
|
} |
|
@@ -4524,10 +4524,10 @@ static int _stats_clear_regions(struct dm_stats *dms, uint64_t region_id) |
|
int allregions = (region_id == DM_STATS_REGIONS_ALL); |
|
|
|
if (!dm_stats_list(dms, NULL)) |
|
- goto_out; |
|
+ return_0; |
|
|
|
if (!dm_stats_get_nr_regions(dms)) |
|
- goto done; |
|
+ return 1; |
|
|
|
dm_stats_walk_do(dms) { |
|
if (allregions) |
|
@@ -4535,21 +4535,18 @@ static int _stats_clear_regions(struct dm_stats *dms, uint64_t region_id) |
|
|
|
if (!dm_stats_region_present(dms, region_id)) { |
|
log_error("No such region: %"PRIu64".", region_id); |
|
- goto out; |
|
+ return 0; |
|
} |
|
if (!dm_stats_clear_region(dms, region_id)) { |
|
log_error("Clearing statistics region %"PRIu64" failed.", |
|
region_id); |
|
- goto out; |
|
+ return 0; |
|
} |
|
log_info("Cleared statistics region %"PRIu64".", region_id); |
|
dm_stats_walk_next_region(dms); |
|
} dm_stats_walk_while(dms); |
|
-done: |
|
- return 1; |
|
|
|
-out: |
|
- return 0; |
|
+ return 1; |
|
} |
|
|
|
static int _stats_clear(CMD_ARGS) |
|
@@ -4611,7 +4608,7 @@ static int _size_from_string(char *argptr, uint64_t *size, const char *name) |
|
uint64_t factor; |
|
char *endptr = NULL, unit_type; |
|
if (!argptr) |
|
- return 0; |
|
+ return_0; |
|
|
|
*size = strtoull(argptr, &endptr, 10); |
|
if (endptr == argptr) { |
|
@@ -4674,30 +4671,30 @@ static int _do_stats_create_regions(struct dm_stats *dms, |
|
void *next = NULL; |
|
|
|
if (histogram && !(bounds = dm_histogram_bounds_from_string(histogram))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_TABLE))) { |
|
dm_stats_destroy(dms); |
|
- return 0; |
|
+ return_0; |
|
} |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!dm_task_no_open_count(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!dm_task_get_info(dmt, &info) || !info.exists) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!(devname = dm_task_get_name(dmt))) |
|
- goto out; |
|
+ goto_out; |
|
|
|
do { |
|
uint64_t segment_start, segment_len; |
|
@@ -4797,7 +4794,7 @@ static int _stats_create(CMD_ARGS) |
|
if (_switches[AREA_SIZE_ARG]) |
|
if (!_size_from_string(_string_args[AREA_SIZE_ARG], |
|
&area_size, "areasize")) |
|
- return 0; |
|
+ return_0; |
|
|
|
areas = (areas) ? areas : 1; |
|
/* bytes to sectors or -(areas): promote to signed before conversion */ |
|
@@ -4806,7 +4803,7 @@ static int _stats_create(CMD_ARGS) |
|
if (_switches[START_ARG]) { |
|
if (!_size_from_string(_string_args[START_ARG], |
|
&start, "start")) |
|
- return 0; |
|
+ return_0; |
|
} |
|
|
|
/* bytes to sectors */ |
|
@@ -4815,7 +4812,7 @@ static int _stats_create(CMD_ARGS) |
|
if (_switches[LENGTH_ARG]) { |
|
if (!_size_from_string(_string_args[LENGTH_ARG], |
|
&len, "length")) |
|
- return 0; |
|
+ return_0; |
|
} |
|
|
|
/* bytes to sectors */ |
|
@@ -4831,13 +4828,13 @@ static int _stats_create(CMD_ARGS) |
|
|
|
dms = dm_stats_create(DM_STATS_PROGRAM_ID); |
|
if (!_bind_stats_device(dms, name)) |
|
- goto_out; |
|
+ goto_bad; |
|
|
|
if (_switches[PRECISE_ARG]) { |
|
if (!dm_stats_driver_supports_precise()) { |
|
log_error("Using --precise requires driver version " |
|
"4.32.0 or later."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
} |
|
|
|
@@ -4845,7 +4842,7 @@ static int _stats_create(CMD_ARGS) |
|
if (!dm_stats_driver_supports_histogram()) { |
|
log_error("Using --bounds requires driver version " |
|
"4.32.0 or later."); |
|
- goto out; |
|
+ goto bad; |
|
} |
|
} |
|
|
|
@@ -4857,7 +4854,7 @@ static int _stats_create(CMD_ARGS) |
|
_switches[SEGMENTS_ARG], |
|
program_id, aux_data); |
|
|
|
-out: |
|
+bad: |
|
dm_stats_destroy(dms); |
|
return 0; |
|
} |
|
@@ -4869,6 +4866,7 @@ static int _stats_delete(CMD_ARGS) |
|
char *name = NULL; |
|
const char *program_id = DM_STATS_PROGRAM_ID; |
|
int allregions = _switches[ALL_REGIONS_ARG]; |
|
+ int r = 0; |
|
|
|
/* delete does not use a report */ |
|
if (_report) { |
|
@@ -4908,9 +4906,11 @@ static int _stats_delete(CMD_ARGS) |
|
if (allregions && !dm_stats_list(dms, program_id)) |
|
goto_out; |
|
|
|
- if (allregions && !dm_stats_get_nr_regions(dms)) |
|
+ if (allregions && !dm_stats_get_nr_regions(dms)) { |
|
/* no regions present */ |
|
- goto done; |
|
+ r = 1; |
|
+ goto out; |
|
+ } |
|
|
|
dm_stats_walk_do(dms) { |
|
if (_switches[ALL_REGIONS_ARG]) |
|
@@ -4923,13 +4923,11 @@ static int _stats_delete(CMD_ARGS) |
|
dm_stats_walk_next_region(dms); |
|
} dm_stats_walk_while(dms); |
|
|
|
-done: |
|
- dm_stats_destroy(dms); |
|
- return 1; |
|
+ r = 1; |
|
|
|
out: |
|
dm_stats_destroy(dms); |
|
- return 0; |
|
+ return r; |
|
} |
|
|
|
static int _stats_print(CMD_ARGS) |
|
@@ -4939,6 +4937,7 @@ static int _stats_print(CMD_ARGS) |
|
uint64_t region_id; |
|
unsigned clear = (unsigned) _switches[CLEAR_ARG]; |
|
int allregions = _switches[ALL_REGIONS_ARG]; |
|
+ int r = 0; |
|
|
|
/* print does not use a report */ |
|
if (_report) { |
|
@@ -4969,8 +4968,10 @@ static int _stats_print(CMD_ARGS) |
|
if (!dm_stats_list(dms, NULL)) |
|
goto_out; |
|
|
|
- if (allregions && !dm_stats_get_nr_regions(dms)) |
|
- goto done; |
|
+ if (allregions && !dm_stats_get_nr_regions(dms)) { |
|
+ r = 1; |
|
+ goto out; |
|
+ } |
|
|
|
dm_stats_walk_do(dms) { |
|
if (_switches[ALL_REGIONS_ARG]) |
|
@@ -4994,13 +4995,11 @@ static int _stats_print(CMD_ARGS) |
|
|
|
} dm_stats_walk_while(dms); |
|
|
|
-done: |
|
- dm_stats_destroy(dms); |
|
- return 1; |
|
+ r = 1; |
|
|
|
out: |
|
dm_stats_destroy(dms); |
|
- return 0; |
|
+ return r; |
|
} |
|
|
|
static int _stats_report(CMD_ARGS) |
|
@@ -5028,25 +5027,27 @@ static int _stats_report(CMD_ARGS) |
|
} |
|
|
|
if (!(dmt = dm_task_create(DM_DEVICE_INFO))) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (!_set_task_device(dmt, name, 0)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[CHECKS_ARG] && !dm_task_enable_checks(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (!_task_run(dmt)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
r = _display_info(dmt); |
|
|
|
- out: |
|
+out: |
|
dm_task_destroy(dmt); |
|
+ |
|
if (!r && _report) { |
|
dm_report_free(_report); |
|
_report = NULL; |
|
} |
|
+ |
|
return r; |
|
} |
|
|
|
@@ -5321,7 +5322,7 @@ static int _stats(CMD_ARGS) |
|
*/ |
|
if (!stats_cmd->fn(stats_cmd, subcommand, argc, argv, NULL, |
|
multiple_devices)) |
|
- return 0; |
|
+ return_0; |
|
|
|
return 1; |
|
} |
|
@@ -5418,35 +5419,35 @@ static char *parse_loop_device_name(const char *dev, const char *dev_dir) |
|
char *device = NULL; |
|
|
|
if (!(buf = dm_malloc(PATH_MAX))) |
|
- return NULL; |
|
+ return_NULL; |
|
|
|
if (dev[0] == '/') { |
|
if (!(device = _get_abspath(dev))) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (strncmp(device, dev_dir, strlen(dev_dir))) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
/* If dev_dir does not end in a slash, ensure that the |
|
following byte in the device string is "/". */ |
|
if (dev_dir[strlen(dev_dir) - 1] != '/' && |
|
device[strlen(dev_dir)] != '/') |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (!dm_strncpy(buf, strrchr(device, '/') + 1, PATH_MAX)) |
|
- goto error; |
|
+ goto_bad; |
|
dm_free(device); |
|
} else { |
|
/* check for device number */ |
|
if (strncmp(dev, "loop", sizeof("loop") - 1)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (!dm_strncpy(buf, dev, PATH_MAX)) |
|
- goto error; |
|
+ goto_bad; |
|
} |
|
|
|
return buf; |
|
-error: |
|
+bad: |
|
dm_free(device); |
|
dm_free(buf); |
|
|
|
@@ -5476,10 +5477,10 @@ static int _loop_table(char *table, size_t tlen, char *file, |
|
} |
|
|
|
if (fd < 0) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
if (fstat(fd, &fbuf)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
size = (fbuf.st_size - off); |
|
sectors = size >> SECTOR_SHIFT; |
|
@@ -5491,7 +5492,7 @@ static int _loop_table(char *table, size_t tlen, char *file, |
|
|
|
#ifdef HAVE_SYS_STATVFS_H |
|
if (fstatvfs(fd, &fsbuf)) |
|
- goto error; |
|
+ goto_bad; |
|
|
|
/* FIXME Fragment size currently unused */ |
|
blksize = fsbuf.f_frsize; |
|
@@ -5502,18 +5503,18 @@ static int _loop_table(char *table, size_t tlen, char *file, |
|
|
|
if (dm_snprintf(table, tlen, "%llu %llu loop %s %llu\n", 0ULL, |
|
(long long unsigned)sectors, file, (long long unsigned)off) < 0) |
|
- return 0; |
|
+ return_0; |
|
|
|
if (_switches[VERBOSE_ARG] > 1) |
|
fprintf(stderr, "Table: %s\n", table); |
|
|
|
return 1; |
|
|
|
-error: |
|
+bad: |
|
if (fd > -1 && close(fd)) |
|
log_sys_error("close", file); |
|
|
|
- return 0; |
|
+ return_0; |
|
} |
|
|
|
static int _process_losetup_switches(const char *base, int *argcp, char ***argvp, |
|
@@ -5536,7 +5537,7 @@ static int _process_losetup_switches(const char *base, int *argcp, char ***argvp |
|
while ((c = GETOPTLONG_FN(*argcp, *argvp, "ade:fo:v", |
|
long_options, NULL)) != -1 ) { |
|
if (c == ':' || c == '?') |
|
- return 0; |
|
+ return_0; |
|
if (c == 'a') |
|
show_all++; |
|
if (c == 'd') |
|
@@ -5836,7 +5837,7 @@ static int _process_switches(int *argcp, char ***argvp, const char *dev_dir) |
|
_string_args[AUX_DATA_ARG] = optarg; |
|
} |
|
if (c == ':' || c == '?') |
|
- return 0; |
|
+ return_0; |
|
if (c == 'h' || ind == HELP_ARG) |
|
_switches[HELP_ARG]++; |
|
if (ind == BOUNDS_ARG) { |
|
@@ -6201,7 +6202,7 @@ unknown: |
|
|
|
#ifdef UDEV_SYNC_SUPPORT |
|
if (!_set_up_udev_support(dev_dir)) |
|
- goto out; |
|
+ goto_out; |
|
#endif |
|
|
|
/* |
|
@@ -6215,7 +6216,7 @@ unknown: |
|
subcommand = (char *) ""; |
|
|
|
if (_switches[COLS_ARG] && !_report_init(cmd, subcommand)) |
|
- goto out; |
|
+ goto_out; |
|
|
|
if (_switches[COUNT_ARG]) |
|
_count = ((uint32_t)_int_args[COUNT_ARG]) ? : UINT32_MAX;
|
|
|