From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Convert libfrog functions to return negative error codes like libxfs does. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- libfrog/bitmap.c | 29 ++++++++++++++++------------- repair/rmap.c | 4 ++-- scrub/phase6.c | 12 ++++++------ 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/libfrog/bitmap.c b/libfrog/bitmap.c index 5daa1081..3b4c603c 100644 --- a/libfrog/bitmap.c +++ b/libfrog/bitmap.c @@ -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) { diff --git a/repair/rmap.c b/repair/rmap.c index c6ed25a9..c4c99131 100644 --- a/repair/rmap.c +++ b/repair/rmap.c @@ -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) { /* diff --git a/scrub/phase6.c b/scrub/phase6.c index f0977d6a..bbe0d7d4 100644 --- a/scrub/phase6.c +++ b/scrub/phase6.c @@ -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;