mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git
synced 2025-01-22 19:53:22 +08:00
btrfs-progs: convert strerror to implicit %m
Similar to the changes where strerror(errno) was converted, continue with the remaining cases where the argument was stored in another variable. The savings in object size are about 4500 bytes: $ size btrfs.old btrfs.new text data bss dec hex filename 805055 24248 19748 849051 cf49b btrfs.old 804527 24248 19748 848523 cf28b btrfs.new Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
d59e19ca07
commit
e578b59bf6
@ -70,9 +70,9 @@ static int debug_corrupt_block(struct extent_buffer *eb,
|
||||
if (!copy || mirror_num == copy) {
|
||||
ret = read_extent_from_disk(eb, 0, eb->len);
|
||||
if (ret < 0) {
|
||||
error("cannot read eb bytenr %llu: %s",
|
||||
(unsigned long long)eb->dev_bytenr,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot read eb bytenr %llu: %m",
|
||||
(unsigned long long)eb->dev_bytenr);
|
||||
return ret;
|
||||
}
|
||||
printf("corrupting %llu copy %d\n", eb->start,
|
||||
@ -80,9 +80,9 @@ static int debug_corrupt_block(struct extent_buffer *eb,
|
||||
memset(eb->data, 0, eb->len);
|
||||
ret = write_extent_to_disk(eb);
|
||||
if (ret < 0) {
|
||||
error("cannot write eb bytenr %llu: %s",
|
||||
(unsigned long long)eb->dev_bytenr,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot write eb bytenr %llu: %m",
|
||||
(unsigned long long)eb->dev_bytenr);
|
||||
return ret;
|
||||
}
|
||||
fsync(eb->fd);
|
||||
|
@ -204,8 +204,8 @@ int main(int argc, char **argv)
|
||||
&filter.match_gen, &filter.match_level);
|
||||
ret = btrfs_find_root_search(fs_info, &filter, &result, &found);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "Fail to search the tree root: %s\n",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr, "Fail to search the tree root: %m\n");
|
||||
goto out;
|
||||
}
|
||||
if (ret > 0) {
|
||||
|
@ -515,8 +515,9 @@ static int add_root(struct root_lookup *root_lookup,
|
||||
|
||||
ret = root_tree_insert(root_lookup, ri);
|
||||
if (ret < 0) {
|
||||
error("failed to insert subvolume %llu to tree: %s",
|
||||
(unsigned long long)root_id, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to insert subvolume %llu to tree: %m",
|
||||
(unsigned long long)root_id);
|
||||
exit(1);
|
||||
}
|
||||
return 0;
|
||||
|
@ -113,9 +113,10 @@ static int __print_mapping_info(struct btrfs_fs_info *fs_info, u64 logical,
|
||||
ret = btrfs_map_block(fs_info, READ, logical + cur_offset,
|
||||
&cur_len, &multi, mirror_num, NULL);
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
fprintf(info_file,
|
||||
"Error: fails to map mirror%d logical %llu: %s\n",
|
||||
mirror_num, logical, strerror(-ret));
|
||||
"Error: fails to map mirror%d logical %llu: %m\n",
|
||||
mirror_num, logical);
|
||||
return ret;
|
||||
}
|
||||
for (i = 0; i < multi->num_stripes; i++) {
|
||||
@ -173,17 +174,18 @@ static int write_extent_content(struct btrfs_fs_info *fs_info, int out_fd,
|
||||
ret = read_extent_data(fs_info, buffer,
|
||||
logical + cur_offset, &cur_len, mirror);
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
fprintf(stderr,
|
||||
"Failed to read extent at [%llu, %llu]: %s\n",
|
||||
logical, logical + length, strerror(-ret));
|
||||
"Failed to read extent at [%llu, %llu]: %m\n",
|
||||
logical, logical + length);
|
||||
return ret;
|
||||
}
|
||||
ret = write(out_fd, buffer, cur_len);
|
||||
if (ret < 0 || ret != cur_len) {
|
||||
if (ret > 0)
|
||||
ret = -EINTR;
|
||||
fprintf(stderr, "output file write failed: %s\n",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr, "output file write failed: %m\n");
|
||||
return ret;
|
||||
}
|
||||
cur_offset += cur_len;
|
||||
@ -293,8 +295,9 @@ int main(int argc, char **argv)
|
||||
/* First find the nearest extent */
|
||||
ret = map_one_extent(root->fs_info, &cur_logical, &cur_len, 0);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "Failed to find extent at [%llu,%llu): %s\n",
|
||||
cur_logical, cur_logical + cur_len, strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr, "Failed to find extent at [%llu,%llu): %m\n",
|
||||
cur_logical, cur_logical + cur_len);
|
||||
goto out_close_fd;
|
||||
}
|
||||
/*
|
||||
@ -305,10 +308,10 @@ int main(int argc, char **argv)
|
||||
if (ret > 0) {
|
||||
ret = map_one_extent(root->fs_info, &cur_logical, &cur_len, 1);
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
fprintf(stderr,
|
||||
"Failed to find extent at [%llu,%llu): %s\n",
|
||||
cur_logical, cur_logical + cur_len,
|
||||
strerror(-ret));
|
||||
"Failed to find extent at [%llu,%llu): %m\n",
|
||||
cur_logical, cur_logical + cur_len);
|
||||
goto out_close_fd;
|
||||
}
|
||||
if (ret > 0) {
|
||||
|
@ -77,7 +77,8 @@ int main(int argc, char **argv)
|
||||
radix_tree_init();
|
||||
|
||||
if((ret = check_mounted(argv[optind])) < 0) {
|
||||
error("cannot check mount status: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot check mount status: %m");
|
||||
return ret;
|
||||
} else if(ret) {
|
||||
error("%s is currently mounted, aborting", argv[optind]);
|
||||
|
@ -477,8 +477,8 @@ int main(int argc, char *argv[])
|
||||
ret = check_mounted_where(fd, device, NULL, 0, NULL,
|
||||
SBREAD_IGNORE_FSID_MISMATCH);
|
||||
if (ret < 0) {
|
||||
error("could not check mount status of %s: %s", device,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("could not check mount status of %s: %m", device);
|
||||
close(fd);
|
||||
return 1;
|
||||
} else if (ret) {
|
||||
|
61
check/main.c
61
check/main.c
@ -2291,9 +2291,9 @@ static int repair_inode_nlinks(struct btrfs_trans_handle *trans,
|
||||
|
||||
ret = reset_nlink(trans, root, path, rec);
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
fprintf(stderr,
|
||||
"Failed to reset nlink for inode %llu: %s\n",
|
||||
rec->ino, strerror(-ret));
|
||||
"Failed to reset nlink for inode %llu: %m\n", rec->ino);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -3170,8 +3170,8 @@ static int repair_btree(struct btrfs_root *root,
|
||||
trans = btrfs_start_transaction(root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
fprintf(stderr, "Error starting transaction: %s\n",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr, "Error starting transaction: %m\n");
|
||||
return ret;
|
||||
}
|
||||
btrfs_init_path(&path);
|
||||
@ -3363,8 +3363,8 @@ skip_walking:
|
||||
root->root_key.objectid);
|
||||
ret = repair_btree(root, &corrupt_blocks);
|
||||
if (ret < 0)
|
||||
fprintf(stderr, "Failed to repair btree: %s\n",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr, "Failed to repair btree: %m\n");
|
||||
if (!ret)
|
||||
printf("Btree for root %llu is fixed\n",
|
||||
root->root_key.objectid);
|
||||
@ -5177,18 +5177,20 @@ static int process_extent_item(struct btrfs_root *root,
|
||||
case BTRFS_TREE_BLOCK_REF_KEY:
|
||||
ret = add_tree_backref(extent_cache, key.objectid,
|
||||
0, offset, 0);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"add_tree_backref failed (extent items tree block): %s",
|
||||
strerror(-ret));
|
||||
"add_tree_backref failed (extent items tree block): %m");
|
||||
}
|
||||
break;
|
||||
case BTRFS_SHARED_BLOCK_REF_KEY:
|
||||
ret = add_tree_backref(extent_cache, key.objectid,
|
||||
offset, 0, 0);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"add_tree_backref failed (extent items shared block): %s",
|
||||
strerror(-ret));
|
||||
"add_tree_backref failed (extent items shared block): %m");
|
||||
}
|
||||
break;
|
||||
case BTRFS_EXTENT_DATA_REF_KEY:
|
||||
dref = (struct btrfs_extent_data_ref *)(&iref->offset);
|
||||
@ -5420,16 +5422,18 @@ static int check_space_cache(struct btrfs_root *root)
|
||||
if (btrfs_fs_compat_ro(root->fs_info, FREE_SPACE_TREE)) {
|
||||
ret = exclude_super_stripes(root, cache);
|
||||
if (ret) {
|
||||
fprintf(stderr, "could not exclude super stripes: %s\n",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr,
|
||||
"could not exclude super stripes: %m\n");
|
||||
error++;
|
||||
continue;
|
||||
}
|
||||
ret = load_free_space_tree(root->fs_info, cache);
|
||||
free_excluded_extents(root, cache);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "could not load free space tree: %s\n",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr,
|
||||
"could not load free space tree: %m\n");
|
||||
error++;
|
||||
continue;
|
||||
}
|
||||
@ -6122,19 +6126,21 @@ static int run_next_block(struct btrfs_root *root,
|
||||
if (key.type == BTRFS_TREE_BLOCK_REF_KEY) {
|
||||
ret = add_tree_backref(extent_cache,
|
||||
key.objectid, 0, key.offset, 0);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"add_tree_backref failed (leaf tree block): %s",
|
||||
strerror(-ret));
|
||||
"add_tree_backref failed (leaf tree block): %m");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (key.type == BTRFS_SHARED_BLOCK_REF_KEY) {
|
||||
ret = add_tree_backref(extent_cache,
|
||||
key.objectid, key.offset, 0, 0);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"add_tree_backref failed (leaf shared block): %s",
|
||||
strerror(-ret));
|
||||
"add_tree_backref failed (leaf shared block): %m");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (key.type == BTRFS_EXTENT_DATA_REF_KEY) {
|
||||
@ -6236,9 +6242,9 @@ static int run_next_block(struct btrfs_root *root,
|
||||
ret = add_tree_backref(extent_cache, ptr, parent,
|
||||
owner, 1);
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"add_tree_backref failed (non-leaf block): %s",
|
||||
strerror(-ret));
|
||||
"add_tree_backref failed (non-leaf block): %m");
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -9678,8 +9684,8 @@ int cmd_check(int argc, char **argv)
|
||||
ret = check_mounted(argv[optind]);
|
||||
if (!force) {
|
||||
if (ret < 0) {
|
||||
error("could not check mount status: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("could not check mount status: %m");
|
||||
err |= !!ret;
|
||||
goto err_out;
|
||||
} else if (ret) {
|
||||
@ -9856,7 +9862,8 @@ int cmd_check(int argc, char **argv)
|
||||
task_stop(ctx.info);
|
||||
if (ret < 0) {
|
||||
err = !!ret;
|
||||
error("failed to repair root items: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to repair root items: %m");
|
||||
goto close_out;
|
||||
}
|
||||
if (repair) {
|
||||
|
@ -450,7 +450,8 @@ int link_inode_to_lostfound(struct btrfs_trans_handle *trans,
|
||||
BTRFS_FIRST_FREE_OBJECTID, &lost_found_ino,
|
||||
mode);
|
||||
if (ret < 0) {
|
||||
error("failed to create '%s' dir: %s", dir_name, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to create '%s' dir: %m", dir_name);
|
||||
goto out;
|
||||
}
|
||||
ret = btrfs_add_link(trans, root, ino, lost_found_ino,
|
||||
@ -474,8 +475,9 @@ int link_inode_to_lostfound(struct btrfs_trans_handle *trans,
|
||||
name_len, filetype, NULL, 1, 0);
|
||||
}
|
||||
if (ret < 0) {
|
||||
error("failed to link the inode %llu to %s dir: %s",
|
||||
ino, dir_name, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to link the inode %llu to %s dir: %m",
|
||||
ino, dir_name);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -284,7 +284,8 @@ static int modify_block_groups_cache(struct btrfs_fs_info *fs_info, u64 flags,
|
||||
btrfs_init_path(&path);
|
||||
ret = btrfs_search_slot(NULL, root, &key, &path, 0, 0);
|
||||
if (ret < 0) {
|
||||
error("fail to search block groups due to %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to search block groups due to %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -341,19 +342,22 @@ static int create_chunk_and_block_group(struct btrfs_fs_info *fs_info,
|
||||
trans = btrfs_start_transaction(root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("error starting transaction %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("error starting transaction %m");
|
||||
return ret;
|
||||
}
|
||||
ret = btrfs_alloc_chunk(trans, fs_info, start, nbytes, flags);
|
||||
if (ret) {
|
||||
error("fail to allocate new chunk %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to allocate new chunk %m");
|
||||
goto out;
|
||||
}
|
||||
ret = btrfs_make_block_group(trans, fs_info, 0, flags, *start,
|
||||
*nbytes);
|
||||
if (ret) {
|
||||
error("fail to make block group for chunk %llu %llu %s",
|
||||
*start, *nbytes, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to make block group for chunk %llu %llu %m",
|
||||
*start, *nbytes);
|
||||
goto out;
|
||||
}
|
||||
out:
|
||||
@ -521,8 +525,10 @@ static int avoid_extents_overwrite(struct btrfs_fs_info *fs_info)
|
||||
"Try to exclude all metadata blcoks and extents, it may be slow\n");
|
||||
ret = exclude_metadata_blocks(fs_info);
|
||||
out:
|
||||
if (ret)
|
||||
error("failed to avoid extents overwrite %s", strerror(-ret));
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
error("failed to avoid extents overwrite %m");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -552,7 +558,8 @@ static int repair_block_accounting(struct btrfs_fs_info *fs_info)
|
||||
trans = btrfs_start_transaction(root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("fail to start transaction %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to start transaction: %m");
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -629,7 +636,8 @@ static int repair_tree_block_ref(struct btrfs_root *root,
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
trans = NULL;
|
||||
error("fail to start transaction %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to start transaction: %m");
|
||||
goto out;
|
||||
}
|
||||
/* insert an extent item */
|
||||
@ -701,9 +709,10 @@ out:
|
||||
btrfs_commit_transaction(trans, extent_root);
|
||||
btrfs_release_path(&path);
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"failed to repair tree block ref start %llu root %llu due to %s",
|
||||
bytenr, root->objectid, strerror(-ret));
|
||||
"failed to repair tree block ref start %llu root %llu due to %m",
|
||||
bytenr, root->objectid);
|
||||
} else {
|
||||
printf("Added one tree block ref start %llu %s %llu\n",
|
||||
bytenr, parent ? "parent" : "root",
|
||||
@ -3006,7 +3015,8 @@ static int repair_extent_data_item(struct btrfs_root *root,
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
trans = NULL;
|
||||
error("fail to start transaction %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to start transaction: %m");
|
||||
goto out;
|
||||
}
|
||||
/* insert an extent item */
|
||||
@ -3820,7 +3830,8 @@ static int repair_extent_item(struct btrfs_root *root, struct btrfs_path *path,
|
||||
trans = btrfs_start_transaction(extent_root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("fail to start transaction %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to start transaction: %m");
|
||||
/* nothing happened */
|
||||
ret = 0;
|
||||
goto out;
|
||||
@ -4281,7 +4292,8 @@ static int repair_chunk_item(struct btrfs_root *chunk_root,
|
||||
trans = btrfs_start_transaction(extent_root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("fail to start transaction %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to start transaction: %m");
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -4316,7 +4328,8 @@ static int delete_extent_tree_item(struct btrfs_root *root,
|
||||
trans = btrfs_start_transaction(root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("fail to start transaction %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to start transaction: %m");
|
||||
goto out;
|
||||
}
|
||||
btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]);
|
||||
|
@ -442,8 +442,8 @@ static int cmd_device_stats(int argc, char **argv)
|
||||
|
||||
ret = get_fs_info(dev_path, &fi_args, &di_args);
|
||||
if (ret) {
|
||||
error("getting device info for %s failed: %s", dev_path,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("getting device info for %s failed: %m", dev_path);
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
|
@ -406,9 +406,10 @@ static int du_walk_dir(struct du_dir_ctxt *ctxt, struct rb_root *shared_extents)
|
||||
ret = 0;
|
||||
continue;
|
||||
} else if (ret) {
|
||||
errno = -ret;
|
||||
fprintf(stderr,
|
||||
"failed to walk dir/file: %s :%s\n",
|
||||
entry->d_name, strerror(-ret));
|
||||
"failed to walk dir/file: %s : %m\n",
|
||||
entry->d_name);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -601,8 +602,8 @@ int cmd_filesystem_du(int argc, char **argv)
|
||||
for (i = optind; i < argc; i++) {
|
||||
ret = du_add_file(argv[i], AT_FDCWD, NULL, NULL, NULL, 1);
|
||||
if (ret) {
|
||||
error("cannot check space of '%s': %s", argv[i],
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot check space of '%s': %m", argv[i]);
|
||||
err = 1;
|
||||
}
|
||||
|
||||
|
@ -145,7 +145,8 @@ static int cmd_filesystem_df(int argc, char **argv)
|
||||
print_df(sargs, unit_mode);
|
||||
free(sargs);
|
||||
} else {
|
||||
error("get_df failed %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("get_df failed: %m");
|
||||
}
|
||||
|
||||
close_file_or_dir(fd, dirstream);
|
||||
@ -1054,8 +1055,8 @@ static int cmd_filesystem_defrag(int argc, char **argv)
|
||||
break;
|
||||
}
|
||||
if (ret) {
|
||||
error("defrag failed on %s: %s", argv[i],
|
||||
strerror(defrag_err));
|
||||
errno = defrag_err;
|
||||
error("defrag failed on %s: %m", argv[i]);
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
|
@ -313,12 +313,13 @@ int cmd_inspect_dump_tree(int argc, char **argv)
|
||||
|
||||
ret = check_arg_type(argv[optind]);
|
||||
if (ret != BTRFS_ARG_BLKDEV && ret != BTRFS_ARG_REG) {
|
||||
if (ret < 0)
|
||||
error("invalid argument %s: %s", argv[optind],
|
||||
strerror(-ret));
|
||||
else
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error("invalid argument %s: %m", argv[optind]);
|
||||
} else {
|
||||
error("not a block device or regular file: %s",
|
||||
argv[optind]);
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -432,9 +433,9 @@ again:
|
||||
key.type = BTRFS_ROOT_ITEM_KEY;
|
||||
ret = btrfs_search_slot(NULL, tree_root_scan, &key, &path, 0, 0);
|
||||
if (ret < 0) {
|
||||
error("cannot read ROOT_ITEM from tree %llu: %s",
|
||||
(unsigned long long)tree_root_scan->root_key.objectid,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot read ROOT_ITEM from tree %llu: %m",
|
||||
(unsigned long long)tree_root_scan->root_key.objectid);
|
||||
goto close_root;
|
||||
}
|
||||
while (1) {
|
||||
|
@ -454,8 +454,8 @@ int cmd_inspect_tree_stats(int argc, char **argv)
|
||||
|
||||
ret = check_mounted(argv[optind]);
|
||||
if (ret < 0) {
|
||||
warning("unable to check mount status of: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
warning("unable to check mount status of: %m");
|
||||
} else if (ret) {
|
||||
warning("%s already mounted, results may be inaccurate",
|
||||
argv[optind]);
|
||||
|
@ -330,7 +330,8 @@ static int cmd_inspect_rootid(int argc, char **argv)
|
||||
|
||||
ret = lookup_path_rootid(fd, &rootid);
|
||||
if (ret) {
|
||||
error("failed to lookup root id: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to lookup root id: %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -565,7 +566,8 @@ static int print_min_dev_size(int fd, u64 devid)
|
||||
ret = add_dev_extent(&holes, last_pos,
|
||||
btrfs_search_header_offset(sh) - 1, 1);
|
||||
if (ret) {
|
||||
error("add device extent: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("add device extent: %m");
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
|
@ -91,7 +91,8 @@ static int check_is_root(const char *object)
|
||||
|
||||
ret = get_fsid(object, fsid, 0);
|
||||
if (ret < 0) {
|
||||
error("get_fsid for %s failed: %s", object, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("get_fsid for %s failed: %m", object);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -103,7 +104,8 @@ static int check_is_root(const char *object)
|
||||
ret = 1;
|
||||
goto out;
|
||||
} else if (ret < 0) {
|
||||
error("get_fsid for %s failed: %s", tmp, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("get_fsid for %s failed: %m", tmp);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -317,8 +319,8 @@ static void parse_args(int argc, char **argv,
|
||||
if (!*types) {
|
||||
ret = autodetect_object_types(*object, types);
|
||||
if (ret < 0) {
|
||||
error("failed to detect object type: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to detect object type: %m");
|
||||
usage(usage_str);
|
||||
}
|
||||
if (!*types) {
|
||||
|
@ -386,8 +386,8 @@ static int cmd_qgroup_show(int argc, char **argv)
|
||||
if (filter_flag) {
|
||||
ret = lookup_path_rootid(fd, &qgroupid);
|
||||
if (ret < 0) {
|
||||
error("cannot resolve rootid for %s: %s",
|
||||
path, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot resolve rootid for %s: %m", path);
|
||||
close_file_or_dir(fd, dirstream);
|
||||
goto out;
|
||||
}
|
||||
|
@ -103,8 +103,7 @@ static int finish_subvol(struct btrfs_receive *rctx)
|
||||
O_RDONLY | O_NOATIME);
|
||||
if (subvol_fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open %s: %s",
|
||||
rctx->cur_subvol_path, strerror(-ret));
|
||||
error("cannot open %s: %m", rctx->cur_subvol_path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -121,8 +120,7 @@ static int finish_subvol(struct btrfs_receive *rctx)
|
||||
ret = ioctl(subvol_fd, BTRFS_IOC_SET_RECEIVED_SUBVOL, &rs_args);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("ioctl BTRFS_IOC_SET_RECEIVED_SUBVOL failed: %s",
|
||||
strerror(-ret));
|
||||
error("ioctl BTRFS_IOC_SET_RECEIVED_SUBVOL failed: %m");
|
||||
goto out;
|
||||
}
|
||||
rctx->cur_subvol.rtransid = rs_args.rtransid;
|
||||
@ -130,8 +128,7 @@ static int finish_subvol(struct btrfs_receive *rctx)
|
||||
ret = ioctl(subvol_fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("ioctl BTRFS_IOC_SUBVOL_GETFLAGS failed: %s",
|
||||
strerror(-ret));
|
||||
error("ioctl BTRFS_IOC_SUBVOL_GETFLAGS failed: %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -140,8 +137,7 @@ static int finish_subvol(struct btrfs_receive *rctx)
|
||||
ret = ioctl(subvol_fd, BTRFS_IOC_SUBVOL_SETFLAGS, &flags);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("failed to make subvolume read only: %s",
|
||||
strerror(-ret));
|
||||
error("failed to make subvolume read only: %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -215,7 +211,7 @@ static int process_subvol(const char *path, const u8 *uuid, u64 ctransid,
|
||||
ret = ioctl(rctx->dest_dir_fd, BTRFS_IOC_SUBVOL_CREATE, &args_v1);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("creating subvolume %s failed: %s", path, strerror(-ret));
|
||||
error("creating subvolume %s failed: %m", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -360,8 +356,7 @@ static int process_snapshot(const char *path, const u8 *uuid, u64 ctransid,
|
||||
if (args_v2.fd < 0) {
|
||||
ret = -errno;
|
||||
if (errno != ENOENT)
|
||||
error("cannot open %s: %s",
|
||||
parent_subvol->path, strerror(-ret));
|
||||
error("cannot open %s: %m", parent_subvol->path);
|
||||
else
|
||||
fprintf(stderr,
|
||||
"It seems that you have changed your default "
|
||||
@ -375,8 +370,8 @@ static int process_snapshot(const char *path, const u8 *uuid, u64 ctransid,
|
||||
close(args_v2.fd);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("creating snapshot %s -> %s failed: %s",
|
||||
parent_subvol->path, path, strerror(-ret));
|
||||
error("creating snapshot %s -> %s failed: %m",
|
||||
parent_subvol->path, path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -406,7 +401,7 @@ static int process_mkfile(const char *path, void *user)
|
||||
ret = creat(full_path, 0600);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("mkfile %s failed: %s", path, strerror(-ret));
|
||||
error("mkfile %s failed: %m", path);
|
||||
goto out;
|
||||
}
|
||||
close(ret);
|
||||
@ -434,7 +429,7 @@ static int process_mkdir(const char *path, void *user)
|
||||
ret = mkdir(full_path, 0700);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("mkdir %s failed: %s", path, strerror(-ret));
|
||||
error("mkdir %s failed: %m", path);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -460,7 +455,7 @@ static int process_mknod(const char *path, u64 mode, u64 dev, void *user)
|
||||
ret = mknod(full_path, mode & S_IFMT, dev);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("mknod %s failed: %s", path, strerror(-ret));
|
||||
error("mknod %s failed: %m", path);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -485,7 +480,7 @@ static int process_mkfifo(const char *path, void *user)
|
||||
ret = mkfifo(full_path, 0600);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("mkfifo %s failed: %s", path, strerror(-ret));
|
||||
error("mkfifo %s failed: %m", path);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -510,7 +505,7 @@ static int process_mksock(const char *path, void *user)
|
||||
ret = mknod(full_path, 0600 | S_IFSOCK, 0);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("mknod %s failed: %s", path, strerror(-ret));
|
||||
error("mknod %s failed: %m", path);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -535,8 +530,7 @@ static int process_symlink(const char *path, const char *lnk, void *user)
|
||||
ret = symlink(lnk, full_path);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("symlink %s -> %s failed: %s", path,
|
||||
lnk, strerror(-ret));
|
||||
error("symlink %s -> %s failed: %m", path, lnk);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -568,8 +562,7 @@ static int process_rename(const char *from, const char *to, void *user)
|
||||
ret = rename(full_from, full_to);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("rename %s -> %s failed: %s", from,
|
||||
to, strerror(-ret));
|
||||
error("rename %s -> %s failed: %m", from, to);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -601,7 +594,7 @@ static int process_link(const char *path, const char *lnk, void *user)
|
||||
ret = link(full_link_path, full_path);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("link %s -> %s failed: %s", path, lnk, strerror(-ret));
|
||||
error("link %s -> %s failed: %m", path, lnk);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -627,7 +620,7 @@ static int process_unlink(const char *path, void *user)
|
||||
ret = unlink(full_path);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("unlink %s failed. %s", path, strerror(-ret));
|
||||
error("unlink %s failed: %m", path);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -652,7 +645,7 @@ static int process_rmdir(const char *path, void *user)
|
||||
ret = rmdir(full_path);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("rmdir %s failed: %s", path, strerror(-ret));
|
||||
error("rmdir %s failed: %m", path);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -673,7 +666,7 @@ static int open_inode_for_write(struct btrfs_receive *rctx, const char *path)
|
||||
rctx->write_fd = open(path, O_RDWR);
|
||||
if (rctx->write_fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open %s: %s", path, strerror(-ret));
|
||||
error("cannot open %s: %m", path);
|
||||
goto out;
|
||||
}
|
||||
strncpy_null(rctx->write_path, path);
|
||||
@ -716,8 +709,7 @@ static int process_write(const char *path, const void *data, u64 offset,
|
||||
offset + pos);
|
||||
if (w < 0) {
|
||||
ret = -errno;
|
||||
error("writing to %s failed: %s",
|
||||
path, strerror(-ret));
|
||||
error("writing to %s failed: %m", path);
|
||||
goto out;
|
||||
}
|
||||
pos += w;
|
||||
@ -812,7 +804,7 @@ static int process_clone(const char *path, u64 offset, u64 len,
|
||||
clone_fd = openat(rctx->mnt_fd, full_clone_path, O_RDONLY | O_NOATIME);
|
||||
if (clone_fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open %s: %s", full_clone_path, strerror(-ret));
|
||||
error("cannot open %s: %m", full_clone_path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -823,8 +815,7 @@ static int process_clone(const char *path, u64 offset, u64 len,
|
||||
ret = ioctl(rctx->write_fd, BTRFS_IOC_CLONE_RANGE, &clone_args);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("failed to clone extents to %s\n%s",
|
||||
path, strerror(-ret));
|
||||
error("failed to clone extents to %s: %m", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -878,8 +869,8 @@ static int process_set_xattr(const char *path, const char *name,
|
||||
ret = lsetxattr(full_path, name, data, len, 0);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("lsetxattr %s %s=%.*s failed: %s",
|
||||
path, name, len, (char*)data, strerror(-ret));
|
||||
error("lsetxattr %s %s=%.*s failed: %m",
|
||||
path, name, len, (char*)data);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -907,8 +898,7 @@ static int process_remove_xattr(const char *path, const char *name, void *user)
|
||||
ret = lremovexattr(full_path, name);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("lremovexattr %s %s failed: %s",
|
||||
path, name, strerror(-ret));
|
||||
error("lremovexattr %s %s failed: %m", path, name);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -934,7 +924,7 @@ static int process_truncate(const char *path, u64 size, void *user)
|
||||
ret = truncate(full_path, size);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("truncate %s failed: %s", path, strerror(-ret));
|
||||
error("truncate %s failed: %m", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -960,7 +950,7 @@ static int process_chmod(const char *path, u64 mode, void *user)
|
||||
ret = chmod(full_path, mode);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("chmod %s failed: %s", path, strerror(-ret));
|
||||
error("chmod %s failed: %m", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -987,7 +977,7 @@ static int process_chown(const char *path, u64 uid, u64 gid, void *user)
|
||||
ret = lchown(full_path, uid, gid);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("chown %s failed: %s", path, strerror(-ret));
|
||||
error("chown %s failed: %m", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1002,8 +992,7 @@ static int process_chown(const char *path, u64 uid, u64 gid, void *user)
|
||||
rctx->cached_capabilities_len = 0;
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("restoring capabilities %s: %s",
|
||||
path, strerror(-ret));
|
||||
error("restoring capabilities %s: %m", path);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@ -1035,8 +1024,7 @@ static int process_utimes(const char *path, struct timespec *at,
|
||||
ret = utimensat(AT_FDCWD, full_path, tv, AT_SYMLINK_NOFOLLOW);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("utimes %s failed: %s",
|
||||
path, strerror(-ret));
|
||||
error("utimes %s failed: %m", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1096,14 +1084,14 @@ static int do_receive(struct btrfs_receive *rctx, const char *tomnt,
|
||||
dest_dir_full_path = realpath(tomnt, NULL);
|
||||
if (!dest_dir_full_path) {
|
||||
ret = -errno;
|
||||
error("realpath(%s) failed: %s", tomnt, strerror(-ret));
|
||||
error("realpath(%s) failed: %m", tomnt);
|
||||
goto out;
|
||||
}
|
||||
rctx->dest_dir_fd = open(dest_dir_full_path, O_RDONLY | O_NOATIME);
|
||||
if (rctx->dest_dir_fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open destination directory %s: %s",
|
||||
dest_dir_full_path, strerror(-ret));
|
||||
error("cannot open destination directory %s: %m",
|
||||
dest_dir_full_path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1112,8 +1100,9 @@ static int do_receive(struct btrfs_receive *rctx, const char *tomnt,
|
||||
} else {
|
||||
ret = find_mount_root(dest_dir_full_path, &rctx->root_path);
|
||||
if (ret < 0) {
|
||||
error("failed to determine mount point for %s: %s",
|
||||
dest_dir_full_path, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to determine mount point for %s: %m",
|
||||
dest_dir_full_path);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@ -1127,7 +1116,7 @@ static int do_receive(struct btrfs_receive *rctx, const char *tomnt,
|
||||
rctx->mnt_fd = open(rctx->root_path, O_RDONLY | O_NOATIME);
|
||||
if (rctx->mnt_fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open %s: %s", rctx->root_path, strerror(-ret));
|
||||
error("cannot open %s: %m", rctx->root_path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1158,14 +1147,12 @@ static int do_receive(struct btrfs_receive *rctx, const char *tomnt,
|
||||
if (rctx->dest_dir_chroot) {
|
||||
if (chroot(dest_dir_full_path)) {
|
||||
ret = -errno;
|
||||
error("failed to chroot to %s: %s",
|
||||
dest_dir_full_path, strerror(-ret));
|
||||
error("failed to chroot to %s: %m", dest_dir_full_path);
|
||||
goto out;
|
||||
}
|
||||
if (chdir("/")) {
|
||||
ret = -errno;
|
||||
error("failed to chdir to / after chroot: %s",
|
||||
strerror(-ret));
|
||||
error("failed to chdir to / after chroot: %m");
|
||||
goto out;
|
||||
}
|
||||
fprintf(stderr, "Chroot to %s\n", dest_dir_full_path);
|
||||
@ -1345,9 +1332,10 @@ int cmd_receive(int argc, char **argv)
|
||||
dump_args.full_subvol_path[1] = '\0';
|
||||
ret = btrfs_read_and_process_send_stream(receive_fd,
|
||||
&btrfs_print_send_ops, &dump_args, 0, 0);
|
||||
if (ret < 0)
|
||||
error("failed to dump the send stream: %s",
|
||||
strerror(-ret));
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error("failed to dump the send stream: %m");
|
||||
}
|
||||
} else {
|
||||
ret = do_receive(&rctx, tomnt, realmnt, receive_fd, max_errors);
|
||||
}
|
||||
|
@ -208,7 +208,8 @@ static int cmd_replace_start(int argc, char **argv)
|
||||
|
||||
ret = get_fs_info(path, &fi_args, &di_args);
|
||||
if (ret) {
|
||||
error("failed to get device info: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to get device info: %m");
|
||||
free(di_args);
|
||||
goto leave_with_error;
|
||||
}
|
||||
|
@ -77,7 +77,8 @@ static int cmd_rescue_chunk_recover(int argc, char *argv[])
|
||||
|
||||
ret = check_mounted(file);
|
||||
if (ret < 0) {
|
||||
error("could not check mount status: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("could not check mount status: %m");
|
||||
return 1;
|
||||
} else if (ret) {
|
||||
error("the device is busy");
|
||||
@ -142,7 +143,8 @@ static int cmd_rescue_super_recover(int argc, char **argv)
|
||||
dname = argv[optind];
|
||||
ret = check_mounted(dname);
|
||||
if (ret < 0) {
|
||||
error("could not check mount status: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("could not check mount status: %m");
|
||||
return 1;
|
||||
} else if (ret) {
|
||||
error("the device is busy");
|
||||
@ -175,7 +177,8 @@ static int cmd_rescue_zero_log(int argc, char **argv)
|
||||
devname = argv[optind];
|
||||
ret = check_mounted(devname);
|
||||
if (ret < 0) {
|
||||
error("could not check mount status: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("could not check mount status: %m");
|
||||
goto out;
|
||||
} else if (ret) {
|
||||
error("%s is currently mounted", devname);
|
||||
@ -226,7 +229,8 @@ static int cmd_rescue_fix_device_size(int argc, char **argv)
|
||||
devname = argv[optind];
|
||||
ret = check_mounted(devname);
|
||||
if (ret < 0) {
|
||||
error("could not check mount status: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("could not check mount status: %m");
|
||||
goto out;
|
||||
} else if (ret) {
|
||||
error("%s is currently mounted", devname);
|
||||
|
@ -1542,8 +1542,8 @@ int cmd_restore(int argc, char **argv)
|
||||
}
|
||||
|
||||
if ((ret = check_mounted(argv[optind])) < 0) {
|
||||
fprintf(stderr, "Could not check mount status: %s\n",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
fprintf(stderr, "Could not check mount status: %m\n");
|
||||
return 1;
|
||||
} else if (ret) {
|
||||
fprintf(stderr, "%s is currently mounted. Aborting.\n", argv[optind]);
|
||||
@ -1591,8 +1591,9 @@ int cmd_restore(int argc, char **argv)
|
||||
key.offset = (u64)-1;
|
||||
root = btrfs_read_fs_root(orig_root->fs_info, &key);
|
||||
if (IS_ERR(root)) {
|
||||
fprintf(stderr, "fail to read root %llu: %s\n",
|
||||
root_objectid, strerror(-PTR_ERR(root)));
|
||||
errno = -PTR_ERR(root);
|
||||
fprintf(stderr, "fail to read root %llu: %m\n",
|
||||
root_objectid);
|
||||
root = orig_root;
|
||||
ret = 1;
|
||||
goto out;
|
||||
|
93
cmds-scrub.c
93
cmds-scrub.c
@ -1206,9 +1206,9 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
|
||||
ret = get_fs_info(path, &fi_args, &di_args);
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
error_on(!do_quiet,
|
||||
"getting dev info for scrub failed: %s",
|
||||
strerror(-ret));
|
||||
"getting dev info for scrub failed: %m");
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -1221,13 +1221,14 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
uuid_unparse(fi_args.fsid, fsid);
|
||||
fdres = scrub_open_file_r(SCRUB_DATA_FILE, fsid);
|
||||
if (fdres < 0 && fdres != -ENOENT) {
|
||||
warning_on(!do_quiet, "failed to open status file: %s",
|
||||
strerror(-fdres));
|
||||
errno = -fdres;
|
||||
warning_on(!do_quiet, "failed to open status file: %m");
|
||||
} else if (fdres >= 0) {
|
||||
past_scrubs = scrub_read_file(fdres, !do_quiet);
|
||||
if (IS_ERR(past_scrubs))
|
||||
warning_on(!do_quiet, "failed to read status file: %s",
|
||||
strerror(-PTR_ERR(past_scrubs)));
|
||||
if (IS_ERR(past_scrubs)) {
|
||||
errno = -PTR_ERR(past_scrubs);
|
||||
warning_on(!do_quiet, "failed to read status file: %m");
|
||||
}
|
||||
close(fdres);
|
||||
}
|
||||
|
||||
@ -1273,8 +1274,8 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
devid = di_args[i].devid;
|
||||
ret = pthread_mutex_init(&sp[i].progress_mutex, NULL);
|
||||
if (ret) {
|
||||
error_on(!do_quiet, "pthread_mutex_init failed: %s",
|
||||
strerror(ret));
|
||||
errno = ret;
|
||||
error_on(!do_quiet, "pthread_mutex_init failed: %m");
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -1359,9 +1360,9 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
ret = scrub_write_progress(&spc_write_mutex, fsid, sp,
|
||||
fi_args.num_devices);
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
warning_on(!do_quiet,
|
||||
"failed to write the progress status file: %s. Status recording disabled",
|
||||
strerror(-ret));
|
||||
"failed to write the progress status file: %m. Status recording disabled");
|
||||
do_record = 0;
|
||||
}
|
||||
}
|
||||
@ -1418,9 +1419,12 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
ret = pthread_create(&t_devs[i], NULL,
|
||||
scrub_one_dev, &sp[i]);
|
||||
if (ret) {
|
||||
if (do_print)
|
||||
error("creating scrub_one_dev[%llu] thread failed: %s",
|
||||
devid, strerror(ret));
|
||||
if (do_print) {
|
||||
errno = ret;
|
||||
error(
|
||||
"creating scrub_one_dev[%llu] thread failed: %m",
|
||||
devid);
|
||||
}
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -1434,9 +1438,10 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
spc.fi = &fi_args;
|
||||
ret = pthread_create(&t_prog, NULL, scrub_progress_cycle, &spc);
|
||||
if (ret) {
|
||||
if (do_print)
|
||||
error("creating progress thread failed: %s",
|
||||
strerror(ret));
|
||||
if (do_print) {
|
||||
errno = ret;
|
||||
error("creating progress thread failed: %m");
|
||||
}
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -1448,9 +1453,12 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
devid = di_args[i].devid;
|
||||
ret = pthread_join(t_devs[i], NULL);
|
||||
if (ret) {
|
||||
if (do_print)
|
||||
error("pthread_join failed for scrub_one_dev[%llu]: %s",
|
||||
devid, strerror(ret));
|
||||
if (do_print) {
|
||||
errno = ret;
|
||||
error(
|
||||
"pthread_join failed for scrub_one_dev[%llu]: %m",
|
||||
devid);
|
||||
}
|
||||
++err;
|
||||
continue;
|
||||
}
|
||||
@ -1465,11 +1473,13 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
++err;
|
||||
break;
|
||||
default:
|
||||
if (do_print)
|
||||
error("scrubbing %s failed for device id %lld: ret=%d, errno=%d (%s)",
|
||||
path, devid,
|
||||
sp[i].ret, sp[i].ioctl_errno,
|
||||
strerror(sp[i].ioctl_errno));
|
||||
if (do_print) {
|
||||
errno = sp[i].ioctl_errno;
|
||||
error(
|
||||
"scrubbing %s failed for device id %lld: ret=%d, errno=%d (%m)",
|
||||
path, devid, sp[i].ret,
|
||||
sp[i].ioctl_errno);
|
||||
}
|
||||
++err;
|
||||
continue;
|
||||
}
|
||||
@ -1511,21 +1521,23 @@ static int scrub_start(int argc, char **argv, int resume)
|
||||
|
||||
/* check for errors from the handling of the progress thread */
|
||||
if (do_print && ret) {
|
||||
error("progress thread handling failed: %s",
|
||||
strerror(ret));
|
||||
errno = ret;
|
||||
error("progress thread handling failed: %m");
|
||||
}
|
||||
|
||||
/* check for errors returned from the progress thread itself */
|
||||
if (do_print && terr && terr != PTHREAD_CANCELED)
|
||||
error("recording progress failed: %s",
|
||||
strerror(-PTR_ERR(terr)));
|
||||
if (do_print && terr && terr != PTHREAD_CANCELED) {
|
||||
errno = -PTR_ERR(terr);
|
||||
error("recording progress failed: %m");
|
||||
}
|
||||
|
||||
if (do_record) {
|
||||
ret = scrub_write_progress(&spc_write_mutex, fsid, sp,
|
||||
fi_args.num_devices);
|
||||
if (ret && do_print)
|
||||
error("failed to record the result: %s",
|
||||
strerror(-ret));
|
||||
if (ret && do_print) {
|
||||
errno = -ret;
|
||||
error("failed to record the result: %m");
|
||||
}
|
||||
}
|
||||
|
||||
scrub_handle_sigint_child(-1);
|
||||
@ -1701,8 +1713,8 @@ static int cmd_scrub_status(int argc, char **argv)
|
||||
|
||||
ret = get_fs_info(path, &fi_args, &di_args);
|
||||
if (ret) {
|
||||
error("getting dev info for scrub failed: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("getting dev info for scrub failed: %m");
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -1729,8 +1741,8 @@ static int cmd_scrub_status(int argc, char **argv)
|
||||
close(fdres);
|
||||
fdres = scrub_open_file_r(SCRUB_DATA_FILE, fsid);
|
||||
if (fdres < 0 && fdres != -ENOENT) {
|
||||
warning("failed to open status file: %s",
|
||||
strerror(-fdres));
|
||||
errno = -fdres;
|
||||
warning("failed to open status file: %m");
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -1738,9 +1750,10 @@ static int cmd_scrub_status(int argc, char **argv)
|
||||
|
||||
if (fdres >= 0) {
|
||||
past_scrubs = scrub_read_file(fdres, 1);
|
||||
if (IS_ERR(past_scrubs))
|
||||
warning("failed to read status: %s",
|
||||
strerror(-PTR_ERR(past_scrubs)));
|
||||
if (IS_ERR(past_scrubs)) {
|
||||
errno = -PTR_ERR(past_scrubs);
|
||||
warning("failed to read status: %m");
|
||||
}
|
||||
}
|
||||
in_progress = is_scrub_running_in_kernel(fdmnt, di_args, fi_args.num_devices);
|
||||
|
||||
|
51
cmds-send.c
51
cmds-send.c
@ -281,8 +281,7 @@ static void *read_sent_data(void *arg)
|
||||
NULL, SEND_BUFFER_SIZE, SPLICE_F_MORE);
|
||||
if (sbytes < 0) {
|
||||
ret = -errno;
|
||||
error("failed to read stream from kernel: %s",
|
||||
strerror(-ret));
|
||||
error("failed to read stream from kernel: %m");
|
||||
goto out;
|
||||
}
|
||||
if (!sbytes) {
|
||||
@ -312,14 +311,14 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
subvol_fd = openat(send->mnt_fd, subvol, O_RDONLY | O_NOATIME);
|
||||
if (subvol_fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open %s: %s", subvol, strerror(-ret));
|
||||
error("cannot open %s: %m", subvol);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = pipe(pipefd);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("pipe failed: %s", strerror(-ret));
|
||||
error("pipe failed: %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -331,7 +330,8 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
ret = pthread_create(&t_read, NULL, read_sent_data, send);
|
||||
if (ret) {
|
||||
ret = -ret;
|
||||
error("thread setup failed: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("thread setup failed: %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -346,7 +346,7 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
ret = ioctl(subvol_fd, BTRFS_IOC_SEND, &io_send);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("send ioctl failed with %d: %s", ret, strerror(-ret));
|
||||
error("send ioctl failed with %d: %m", ret);
|
||||
if (ret == -EINVAL && (!is_first_subvol || !is_last_subvol))
|
||||
fprintf(stderr,
|
||||
"Try upgrading your kernel or don't use -e.\n");
|
||||
@ -364,7 +364,8 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
ret = pthread_join(t_read, &t_err);
|
||||
if (ret) {
|
||||
ret = -ret;
|
||||
error("pthread_join failed: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("pthread_join failed: %m");
|
||||
goto out;
|
||||
}
|
||||
if (t_err) {
|
||||
@ -395,8 +396,8 @@ static int init_root_path(struct btrfs_send *sctx, const char *subvol)
|
||||
|
||||
ret = find_mount_root(subvol, &sctx->root_path);
|
||||
if (ret < 0) {
|
||||
error("failed to determine mount point for %s: %s",
|
||||
subvol, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to determine mount point for %s: %m", subvol);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@ -409,14 +410,14 @@ static int init_root_path(struct btrfs_send *sctx, const char *subvol)
|
||||
sctx->mnt_fd = open(sctx->root_path, O_RDONLY | O_NOATIME);
|
||||
if (sctx->mnt_fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open '%s': %s", sctx->root_path, strerror(-ret));
|
||||
error("cannot open '%s': %m", sctx->root_path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = subvol_uuid_search_init(sctx->mnt_fd, &sctx->sus);
|
||||
if (ret < 0) {
|
||||
error("failed to initialize subvol search: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to initialize subvol search: %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -434,15 +435,14 @@ static int is_subvol_ro(struct btrfs_send *sctx, const char *subvol)
|
||||
fd = openat(sctx->mnt_fd, subvol, O_RDONLY | O_NOATIME);
|
||||
if (fd < 0) {
|
||||
ret = -errno;
|
||||
error("cannot open %s: %s", subvol, strerror(-ret));
|
||||
error("cannot open %s: %m", subvol);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
error("failed to get flags for subvolume %s: %s",
|
||||
subvol, strerror(-ret));
|
||||
error("failed to get flags for subvolume %s: %m", subvol);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -535,7 +535,7 @@ int cmd_send(int argc, char **argv)
|
||||
subvol = realpath(optarg, NULL);
|
||||
if (!subvol) {
|
||||
ret = -errno;
|
||||
error("realpath %s failed: %s\n", optarg, strerror(-ret));
|
||||
error("realpath %s failed: %m\n", optarg);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -554,7 +554,8 @@ int cmd_send(int argc, char **argv)
|
||||
|
||||
ret = add_clone_source(&send, root_id);
|
||||
if (ret < 0) {
|
||||
error("cannot add clone source: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot add clone source: %m");
|
||||
goto out;
|
||||
}
|
||||
free(subvol);
|
||||
@ -578,7 +579,7 @@ int cmd_send(int argc, char **argv)
|
||||
snapshot_parent = realpath(optarg, NULL);
|
||||
if (!snapshot_parent) {
|
||||
ret = -errno;
|
||||
error("realpath %s failed: %s", optarg, strerror(-ret));
|
||||
error("realpath %s failed: %m", optarg);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -629,7 +630,7 @@ int cmd_send(int argc, char **argv)
|
||||
send.dump_fd = tmpfd;
|
||||
if (send.dump_fd == -1) {
|
||||
ret = -errno;
|
||||
error("cannot create '%s': %s", outname, strerror(-ret));
|
||||
error("cannot create '%s': %m", outname);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@ -664,7 +665,8 @@ int cmd_send(int argc, char **argv)
|
||||
|
||||
ret = add_clone_source(&send, parent_root_id);
|
||||
if (ret < 0) {
|
||||
error("cannot add clone source: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot add clone source: %m");
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@ -680,8 +682,8 @@ int cmd_send(int argc, char **argv)
|
||||
|
||||
ret = find_mount_root(subvol, &mount_root);
|
||||
if (ret < 0) {
|
||||
error("find_mount_root failed on %s: %s", subvol,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("find_mount_root failed on %s: %m", subvol);
|
||||
goto out;
|
||||
}
|
||||
if (ret > 0) {
|
||||
@ -724,7 +726,7 @@ int cmd_send(int argc, char **argv)
|
||||
subvol = realpath(subvol, NULL);
|
||||
if (!subvol) {
|
||||
ret = -errno;
|
||||
error("realpath %s failed: %s", argv[i], strerror(-ret));
|
||||
error("realpath %s failed: %m", argv[i]);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -759,7 +761,8 @@ int cmd_send(int argc, char **argv)
|
||||
/* done with this subvol, so add it to the clone sources */
|
||||
ret = add_clone_source(&send, root_id);
|
||||
if (ret < 0) {
|
||||
error("cannot add clone source: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot add clone source: %m");
|
||||
goto out;
|
||||
}
|
||||
free_send_info(&send);
|
||||
|
@ -136,7 +136,8 @@ static int cmd_subvol_create(int argc, char **argv)
|
||||
retval = 1; /* failure */
|
||||
res = test_isdir(dst);
|
||||
if (res < 0 && res != -ENOENT) {
|
||||
error("cannot access %s: %s", dst, strerror(-res));
|
||||
errno = -res;
|
||||
error("cannot access %s: %m", dst);
|
||||
goto out;
|
||||
}
|
||||
if (res >= 0) {
|
||||
@ -337,8 +338,8 @@ again:
|
||||
} else if (commit_mode == COMMIT_AFTER) {
|
||||
res = get_fsid(dname, fsid, 0);
|
||||
if (res < 0) {
|
||||
error("unable to get fsid for '%s': %s",
|
||||
path, strerror(-res));
|
||||
errno = -res;
|
||||
error("unable to get fsid for '%s': %m", path);
|
||||
error(
|
||||
"delete succeeded but commit may not be done in the end");
|
||||
ret = 1;
|
||||
@ -690,7 +691,8 @@ static int cmd_subvol_snapshot(int argc, char **argv)
|
||||
|
||||
res = test_isdir(dst);
|
||||
if (res < 0 && res != -ENOENT) {
|
||||
error("cannot access %s: %s", dst, strerror(-res));
|
||||
errno = -res;
|
||||
error("cannot access %s: %m", dst);
|
||||
goto out;
|
||||
}
|
||||
if (res == 0) {
|
||||
|
@ -318,10 +318,12 @@ static int create_image_file_range(struct btrfs_trans_handle *trans,
|
||||
|
||||
if (datacsum) {
|
||||
ret = csum_disk_extent(trans, root, bytenr, len);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"failed to calculate csum for bytenr %llu len %llu: %s",
|
||||
bytenr, len, strerror(-ret));
|
||||
"failed to calculate csum for bytenr %llu len %llu: %m",
|
||||
bytenr, len);
|
||||
}
|
||||
}
|
||||
*ret_len = len;
|
||||
return ret;
|
||||
@ -771,27 +773,31 @@ static int create_image(struct btrfs_root *root,
|
||||
ret = btrfs_find_free_objectid(trans, root, BTRFS_FIRST_FREE_OBJECTID,
|
||||
&ino);
|
||||
if (ret < 0) {
|
||||
error("failed to find free objectid for root %llu: %s",
|
||||
root->root_key.objectid, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to find free objectid for root %llu: %m",
|
||||
root->root_key.objectid);
|
||||
goto out;
|
||||
}
|
||||
ret = btrfs_new_inode(trans, root, ino, 0400 | S_IFREG);
|
||||
if (ret < 0) {
|
||||
error("failed to create new inode for root %llu: %s",
|
||||
root->root_key.objectid, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to create new inode for root %llu: %m",
|
||||
root->root_key.objectid);
|
||||
goto out;
|
||||
}
|
||||
ret = btrfs_change_inode_flags(trans, root, ino, flags);
|
||||
if (ret < 0) {
|
||||
error("failed to change inode flag for ino %llu root %llu: %s",
|
||||
ino, root->root_key.objectid, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to change inode flag for ino %llu root %llu: %m",
|
||||
ino, root->root_key.objectid);
|
||||
goto out;
|
||||
}
|
||||
ret = btrfs_add_link(trans, root, ino, BTRFS_FIRST_FREE_OBJECTID, name,
|
||||
strlen(name), BTRFS_FT_REG_FILE, NULL, 1, 0);
|
||||
if (ret < 0) {
|
||||
error("failed to link ino %llu to '/%s' in root %llu: %s",
|
||||
ino, name, root->root_key.objectid, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to link ino %llu to '/%s' in root %llu: %m",
|
||||
ino, name, root->root_key.objectid);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1158,7 +1164,8 @@ static int do_convert(const char *devname, u32 convert_flags, u32 nodesize,
|
||||
|
||||
ret = make_convert_btrfs(fd, &mkfs_cfg, &cctx);
|
||||
if (ret) {
|
||||
error("unable to create initial ctree: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("unable to create initial ctree: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -1376,8 +1383,8 @@ static int check_convert_image(struct btrfs_root *image_root, u64 ino,
|
||||
* So we only need to check if ret < 0
|
||||
*/
|
||||
if (ret < 0) {
|
||||
error("failed to iterate file extents at offset 0: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to iterate file extents at offset 0: %m");
|
||||
btrfs_release_path(&path);
|
||||
return ret;
|
||||
}
|
||||
@ -1581,8 +1588,8 @@ static int do_rollback(const char *devname)
|
||||
ret = -ENOENT;
|
||||
goto close_fs;
|
||||
} else if (ret < 0) {
|
||||
error("failed to find source fs image subvolume: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to find source fs image subvolume: %m");
|
||||
goto close_fs;
|
||||
}
|
||||
|
||||
@ -1593,8 +1600,8 @@ static int do_rollback(const char *devname)
|
||||
image_root = btrfs_read_fs_root(fs_info, &key);
|
||||
if (IS_ERR(image_root)) {
|
||||
ret = PTR_ERR(image_root);
|
||||
error("failed to open convert image subvolume: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to open convert image subvolume: %m");
|
||||
goto close_fs;
|
||||
}
|
||||
|
||||
@ -1609,8 +1616,8 @@ static int do_rollback(const char *devname)
|
||||
ret = PTR_ERR(dir);
|
||||
else
|
||||
ret = -ENOENT;
|
||||
error("failed to locate file %s: %s", image_name,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to locate file %s: %m", image_name);
|
||||
goto close_fs;
|
||||
}
|
||||
btrfs_dir_item_key_to_cpu(path.nodes[0], dir, &key);
|
||||
@ -1623,7 +1630,8 @@ static int do_rollback(const char *devname)
|
||||
|
||||
if (ret < 0) {
|
||||
btrfs_release_path(&path);
|
||||
error("unable to find inode %llu: %s", ino, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("unable to find inode %llu: %m", ino);
|
||||
goto close_fs;
|
||||
}
|
||||
inode_item = btrfs_item_ptr(path.nodes[0], path.slots[0],
|
||||
@ -1665,8 +1673,9 @@ close_fs:
|
||||
ret = -errno;
|
||||
else
|
||||
ret = -EIO;
|
||||
error("failed to recover range [%llu, %llu): %s",
|
||||
range->start, real_size, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to recover range [%llu, %llu): %m",
|
||||
range->start, real_size);
|
||||
goto free_mem;
|
||||
}
|
||||
ret = 0;
|
||||
@ -1828,7 +1837,8 @@ int main(int argc, char *argv[])
|
||||
file = argv[optind];
|
||||
ret = check_mounted(file);
|
||||
if (ret < 0) {
|
||||
error("could not check mount status: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("could not check mount status: %m");
|
||||
return 1;
|
||||
} else if (ret) {
|
||||
error("%s is mounted", file);
|
||||
|
@ -162,8 +162,8 @@ static int ext2_read_used_space(struct btrfs_convert_context *cctx)
|
||||
}
|
||||
ret = __ext2_add_one_block(fs, block_bitmap, i, used_tree);
|
||||
if (ret < 0) {
|
||||
error("fail to build used space tree, %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("fail to build used space tree, %m");
|
||||
break;
|
||||
}
|
||||
blk_itr += EXT2_CLUSTERS_PER_GROUP(fs->super);
|
||||
|
@ -493,10 +493,10 @@ static int reiserfs_copy_dirent(reiserfs_filsys_t fs,
|
||||
ret = reiserfs_copy_meta(fs, root, dirent_data->convert_flags,
|
||||
deh_dirid, deh_objectid, &type);
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
error(
|
||||
"an error occured while converting \"%.*s\", reiserfs key [%u %u]: %s",
|
||||
(int)len, name, deh_dirid, deh_objectid,
|
||||
strerror(-ret));
|
||||
"an error occured while converting \"%.*s\", reiserfs key [%u %u]: %m",
|
||||
(int)len, name, deh_dirid, deh_objectid);
|
||||
return ret;
|
||||
}
|
||||
trans = btrfs_start_transaction(root, 1);
|
||||
|
23
image/main.c
23
image/main.c
@ -499,7 +499,8 @@ static int write_buffers(struct metadump_struct *md, u64 *next)
|
||||
}
|
||||
|
||||
if (err) {
|
||||
error("one of the threads failed: %s", strerror(-err));
|
||||
errno = -err;
|
||||
error("one of the threads failed: %m");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -690,10 +691,12 @@ static int flush_pending(struct metadump_struct *md, int done)
|
||||
}
|
||||
if (md->num_items >= ITEMS_PER_CLUSTER || done) {
|
||||
ret = write_buffers(md, &start);
|
||||
if (ret)
|
||||
error("unable to write buffers: %s", strerror(-ret));
|
||||
else
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
error("unable to write buffers: %m");
|
||||
} else {
|
||||
meta_cluster_init(md, start);
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&md->mutex);
|
||||
return ret;
|
||||
@ -2377,10 +2380,12 @@ static int update_disk_super_on_device(struct btrfs_fs_info *info,
|
||||
|
||||
ret = pwrite64(fp, buf, BTRFS_SUPER_INFO_SIZE, BTRFS_SUPER_INFO_OFFSET);
|
||||
if (ret != BTRFS_SUPER_INFO_SIZE) {
|
||||
if (ret < 0)
|
||||
error("cannot write superblock: %s", strerror(ret));
|
||||
else
|
||||
if (ret < 0) {
|
||||
errno = ret;
|
||||
error("cannot write superblock: %m");
|
||||
} else {
|
||||
error("cannot write superblock");
|
||||
}
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
@ -2535,8 +2540,8 @@ int main(int argc, char *argv[])
|
||||
if (create) {
|
||||
ret = check_mounted(source);
|
||||
if (ret < 0) {
|
||||
warning("unable to check mount status of: %s",
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
warning("unable to check mount status of: %m");
|
||||
} else if (ret) {
|
||||
warning("%s already mounted, results may be inaccurate",
|
||||
source);
|
||||
|
@ -714,7 +714,8 @@ int test_dev_for_mkfs(const char *file, int force_overwrite)
|
||||
|
||||
ret = is_swap_device(file);
|
||||
if (ret < 0) {
|
||||
error("checking status of %s: %s", file, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("checking status of %s: %m", file);
|
||||
return 1;
|
||||
}
|
||||
if (ret == 1) {
|
||||
@ -760,8 +761,8 @@ int test_status_for_mkfs(const char *file, bool force_overwrite)
|
||||
}
|
||||
ret = check_mounted(file);
|
||||
if (ret < 0) {
|
||||
error("cannot check mount status of %s: %s", file,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot check mount status of %s: %m", file);
|
||||
return 1;
|
||||
}
|
||||
if (ret == 1) {
|
||||
|
@ -1094,7 +1094,8 @@ int main(int argc, char **argv)
|
||||
|
||||
ret = make_btrfs(fd, &mkfs_cfg);
|
||||
if (ret) {
|
||||
error("error during mkfs: %s", strerror(-ret));
|
||||
errno = -ret;
|
||||
error("error during mkfs: %m");
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
@ -261,8 +261,9 @@ static int add_xattr_item(struct btrfs_trans_handle *trans,
|
||||
cur_name_len, cur_value,
|
||||
ret, objectid);
|
||||
if (ret) {
|
||||
error("inserting a xattr item failed for %s: %s",
|
||||
file_name, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("inserting a xattr item failed for %s: %m",
|
||||
file_name);
|
||||
}
|
||||
|
||||
cur_name = strtok(next_location, &delimiter);
|
||||
@ -858,8 +859,8 @@ static int set_device_size(struct btrfs_fs_info *fs_info,
|
||||
trans = btrfs_start_transaction(chunk_root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("failed to start transaction: %d (%s)", ret,
|
||||
strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to start transaction: %d (%m)", ret);
|
||||
return ret;
|
||||
}
|
||||
key.objectid = BTRFS_DEV_ITEMS_OBJECTID;
|
||||
@ -887,9 +888,10 @@ static int set_device_size(struct btrfs_fs_info *fs_info,
|
||||
* super->dev_item
|
||||
*/
|
||||
ret = btrfs_commit_transaction(trans, chunk_root);
|
||||
if (ret < 0)
|
||||
error("failed to commit current transaction: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
if (ret < 0) {
|
||||
errno = -ret;
|
||||
error("failed to commit current transaction: %d (%m)", ret);
|
||||
}
|
||||
btrfs_release_path(&path);
|
||||
return ret;
|
||||
|
||||
@ -924,8 +926,8 @@ int btrfs_mkfs_shrink_fs(struct btrfs_fs_info *fs_info, u64 *new_size_ret,
|
||||
|
||||
ret = get_device_extent_end(fs_info, 1, &new_size);
|
||||
if (ret < 0) {
|
||||
error("failed to get minimal device size: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to get minimal device size: %d (%m)", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
9
props.c
9
props.c
@ -110,7 +110,7 @@ static int prop_compression(enum prop_object_type type,
|
||||
fd = open_file_or_dir3(object, &dirstream, open_flags);
|
||||
if (fd == -1) {
|
||||
ret = -errno;
|
||||
error("failed to open %s: %s", object, strerror(-ret));
|
||||
error("failed to open %s: %m", object);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -133,8 +133,8 @@ static int prop_compression(enum prop_object_type type,
|
||||
if (sret < 0) {
|
||||
ret = -errno;
|
||||
if (ret != -ENOATTR)
|
||||
error("failed to %s compression for %s: %s",
|
||||
value ? "set" : "get", object, strerror(-ret));
|
||||
error("failed to %s compression for %s: %m",
|
||||
value ? "set" : "get", object);
|
||||
else
|
||||
ret = 0;
|
||||
goto out;
|
||||
@ -150,8 +150,7 @@ static int prop_compression(enum prop_object_type type,
|
||||
sret = fgetxattr(fd, xattr_name, buf, len);
|
||||
if (sret < 0) {
|
||||
ret = -errno;
|
||||
error("failed to get compression for %s: %s",
|
||||
object, strerror(-ret));
|
||||
error("failed to get compression for %s: %m", object);
|
||||
goto out;
|
||||
}
|
||||
fprintf(stdout, "compression=%.*s\n", (int)len, buf);
|
||||
|
5
qgroup.c
5
qgroup.c
@ -610,8 +610,9 @@ static struct btrfs_qgroup *get_or_add_qgroup(
|
||||
|
||||
ret = qgroup_tree_insert(qgroup_lookup, bq);
|
||||
if (ret) {
|
||||
error("failed to insert %llu into tree: %s",
|
||||
(unsigned long long)bq->qgroupid, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to insert %llu into tree: %m",
|
||||
(unsigned long long)bq->qgroupid);
|
||||
free(bq);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
@ -61,8 +61,7 @@ static int read_buf(struct btrfs_send_stream *sctx, char *buf, size_t len)
|
||||
rbytes = read(sctx->fd, buf + pos, len - pos);
|
||||
if (rbytes < 0) {
|
||||
ret = -errno;
|
||||
error("read from stream failed: %s",
|
||||
strerror(-ret));
|
||||
error("read from stream failed: %m");
|
||||
goto out;
|
||||
}
|
||||
if (rbytes == 0) {
|
||||
|
@ -40,8 +40,7 @@ static int btrfs_get_root_id_by_sub_path(int mnt_fd, const char *sub_path,
|
||||
subvol_fd = openat(mnt_fd, sub_path, O_RDONLY);
|
||||
if (subvol_fd < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: open %s failed. %s\n", sub_path,
|
||||
strerror(-ret));
|
||||
fprintf(stderr, "ERROR: open %s failed: %m\n", sub_path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
18
utils.c
18
utils.c
@ -357,7 +357,8 @@ int btrfs_prepare_device(int fd, const char *file, u64 *block_count_ret,
|
||||
ZERO_DEV_BYTES, block_count);
|
||||
|
||||
if (ret < 0) {
|
||||
error("failed to zero device '%s': %s", file, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to zero device '%s': %m", file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -530,7 +531,8 @@ int get_btrfs_mount(const char *dev, char *mp, size_t mp_size)
|
||||
error("not a block device: %s", dev);
|
||||
ret = -EINVAL;
|
||||
} else {
|
||||
error("cannot check %s: %s", dev, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot check %s: %m", dev);
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
@ -1492,8 +1494,10 @@ path:
|
||||
if (fd < 0)
|
||||
goto err;
|
||||
ret = lookup_path_rootid(fd, &id);
|
||||
if (ret)
|
||||
error("failed to lookup root id: %s", strerror(-ret));
|
||||
if (ret) {
|
||||
errno = -ret;
|
||||
error("failed to lookup root id: %m");
|
||||
}
|
||||
close(fd);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
@ -1782,8 +1786,7 @@ int get_fsid(const char *path, u8 *fsid, int silent)
|
||||
if (fd < 0) {
|
||||
ret = -errno;
|
||||
if (!silent)
|
||||
error("failed to open %s: %s", path,
|
||||
strerror(-ret));
|
||||
error("failed to open %s: %m", path);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -2000,7 +2003,8 @@ int btrfs_scan_devices(void)
|
||||
&num_devices, BTRFS_SUPER_INFO_OFFSET,
|
||||
SBREAD_DEFAULT);
|
||||
if (ret) {
|
||||
error("cannot scan %s: %s", path, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("cannot scan %s: %m", path);
|
||||
close (fd);
|
||||
continue;
|
||||
}
|
||||
|
25
volumes.c
25
volumes.c
@ -1926,8 +1926,9 @@ static int read_one_chunk(struct btrfs_fs_info *fs_info, struct btrfs_key *key,
|
||||
}
|
||||
ret = insert_cache_extent(&map_tree->cache_tree, &map->ce);
|
||||
if (ret < 0) {
|
||||
error("failed to add chunk map start=%llu len=%llu: %d (%s)",
|
||||
map->ce.start, map->ce.size, ret, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to add chunk map start=%llu len=%llu: %d (%m)",
|
||||
map->ce.start, map->ce.size, ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -2448,8 +2449,8 @@ int btrfs_fix_device_size(struct btrfs_fs_info *fs_info,
|
||||
trans = btrfs_start_transaction(chunk_root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("error starting transaction: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("error starting transaction: %d (%m)", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2461,8 +2462,8 @@ int btrfs_fix_device_size(struct btrfs_fs_info *fs_info,
|
||||
goto err;
|
||||
}
|
||||
if (ret < 0) {
|
||||
error("failed to search chunk root: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to search chunk root: %d (%m)", ret);
|
||||
goto err;
|
||||
}
|
||||
di = btrfs_item_ptr(path.nodes[0], path.slots[0], struct btrfs_dev_item);
|
||||
@ -2470,8 +2471,8 @@ int btrfs_fix_device_size(struct btrfs_fs_info *fs_info,
|
||||
btrfs_mark_buffer_dirty(path.nodes[0]);
|
||||
ret = btrfs_commit_transaction(trans, chunk_root);
|
||||
if (ret < 0) {
|
||||
error("failed to commit current transaction: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to commit current transaction: %d (%m)", ret);
|
||||
btrfs_release_path(&path);
|
||||
return ret;
|
||||
}
|
||||
@ -2524,14 +2525,14 @@ int btrfs_fix_super_size(struct btrfs_fs_info *fs_info)
|
||||
trans = btrfs_start_transaction(fs_info->tree_root, 1);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
error("error starting transaction: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("error starting transaction: %d (%m)", ret);
|
||||
return ret;
|
||||
}
|
||||
ret = btrfs_commit_transaction(trans, fs_info->tree_root);
|
||||
if (ret < 0) {
|
||||
error("failed to commit current transaction: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
errno = -ret;
|
||||
error("failed to commit current transaction: %d (%m)", ret);
|
||||
return ret;
|
||||
}
|
||||
printf("Fixed super total bytes, old size: %llu new size: %llu\n",
|
||||
|
Loading…
Reference in New Issue
Block a user