@@ -76,14 +76,14 @@ bitmap_alloc(
bmap = calloc(1, sizeof(struct bitmap));
if (!bmap)
- return errno;
+ return -errno;
bmap->bt_tree = malloc(sizeof(struct avl64tree_desc));
if (!bmap->bt_tree) {
- ret = errno;
+ ret = -errno;
goto out;
}
- ret = pthread_mutex_init(&bmap->bt_lock, NULL);
+ ret = -pthread_mutex_init(&bmap->bt_lock, NULL);
if (ret)
goto out_tree;
@@ -149,12 +149,12 @@ __bitmap_insert(
ext = bitmap_node_init(start, length);
if (!ext)
- return errno;
+ return -errno;
node = avl64_insert(bmap->bt_tree, &ext->btn_node);
if (node == NULL) {
free(ext);
- return EEXIST;
+ return -EEXIST;
}
return 0;
@@ -235,7 +235,7 @@ bitmap_set(
#if 0 /* Unused, provided for completeness. */
/* Clear a region of bits. */
-bool
+int
bitmap_clear(
struct bitmap *bmap,
uint64_t start,
@@ -259,7 +259,7 @@ bitmap_clear(
/* Nothing, we're done. */
if (firstn == NULL && lastn == NULL) {
pthread_mutex_unlock(&bmap->bt_lock);
- return true;
+ return 0;
}
assert(firstn != NULL && lastn != NULL);
@@ -297,20 +297,23 @@ bitmap_clear(
new_start;
ext = bitmap_node_init(new_start, new_length);
- if (!ext)
- return false;
+ if (!ext) {
+ ret = -errno;
+ goto out;
+ }
node = avl64_insert(bmap->bt_tree, &ext->btn_node);
if (node == NULL) {
- errno = EEXIST;
- return false;
+ ret = -EEXIST;
+ goto out;
}
break;
}
}
+out:
pthread_mutex_unlock(&bmap->bt_lock);
- return true;
+ return ret;
}
#endif
@@ -323,7 +326,7 @@ bitmap_iterate(
{
struct avl64node *node;
struct bitmap_node *ext;
- int ret;
+ int ret = 0;
pthread_mutex_lock(&bmap->bt_lock);
avl_for_each(bmap->bt_tree, node) {
@@ -490,13 +490,13 @@ rmap_store_ag_btree_rec(
error = init_slab_cursor(ag_rmap->ar_raw_rmaps, rmap_compare, &rm_cur);
if (error)
goto err;
- error = bitmap_alloc(&own_ag_bitmap);
+ error = -bitmap_alloc(&own_ag_bitmap);
if (error)
goto err_slab;
while ((rm_rec = pop_slab_cursor(rm_cur)) != NULL) {
if (rm_rec->rm_owner != XFS_RMAP_OWN_AG)
continue;
- error = bitmap_set(own_ag_bitmap, rm_rec->rm_startblock,
+ error = -bitmap_set(own_ag_bitmap, rm_rec->rm_startblock,
rm_rec->rm_blockcount);
if (error) {
/*
@@ -174,7 +174,7 @@ report_data_loss(
else
bmp = vs->d_bad;
- return bitmap_iterate_range(bmp, bmap->bm_physical, bmap->bm_length,
+ return -bitmap_iterate_range(bmp, bmap->bm_physical, bmap->bm_length,
report_badfile, br);
}
@@ -444,7 +444,7 @@ remember_ioerr(
if (!tree)
return;
- ret = bitmap_set(tree, start, length);
+ ret = -bitmap_set(tree, start, length);
if (ret)
str_liberror(ctx, ret, _("setting bad block bitmap"));
}
@@ -476,7 +476,7 @@ walk_ioerr(
(keys + 1)->fmr_owner = ULLONG_MAX;
(keys + 1)->fmr_offset = ULLONG_MAX;
(keys + 1)->fmr_flags = UINT_MAX;
- return scrub_iterate_fsmap(wioerr->ctx, keys, ioerr_fsmap_report,
+ return -scrub_iterate_fsmap(wioerr->ctx, keys, ioerr_fsmap_report,
&start);
}
@@ -498,7 +498,7 @@ walk_ioerrs(
tree = bitmap_for_disk(ctx, disk, vs);
if (!tree)
return 0;
- return bitmap_iterate(tree, walk_ioerr, &wioerr);
+ return -bitmap_iterate(tree, walk_ioerr, &wioerr);
}
/* Given bad extent lists for the data & rtdev, find bad files. */
@@ -666,13 +666,13 @@ phase6_func(
struct media_verify_state vs = { NULL };
int ret, ret2, ret3;
- ret = bitmap_alloc(&vs.d_bad);
+ ret = -bitmap_alloc(&vs.d_bad);
if (ret) {
str_liberror(ctx, ret, _("creating datadev badblock bitmap"));
return ret;
}
- ret = bitmap_alloc(&vs.r_bad);
+ ret = -bitmap_alloc(&vs.r_bad);
if (ret) {
str_liberror(ctx, ret, _("creating realtime badblock bitmap"));
goto out_dbad;