diff options
Diffstat (limited to 'meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0005-Improve-error-handling-in-the-btrfs-command.patch')
-rw-r--r-- | meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0005-Improve-error-handling-in-the-btrfs-command.patch | 510 |
1 files changed, 0 insertions, 510 deletions
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0005-Improve-error-handling-in-the-btrfs-command.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0005-Improve-error-handling-in-the-btrfs-command.patch deleted file mode 100644 index e7e3fae332..0000000000 --- a/meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0005-Improve-error-handling-in-the-btrfs-command.patch +++ /dev/null @@ -1,510 +0,0 @@ -Upstream-Status: Inappropriate [Backport] -From b3007332100e01ca84c161b6c75f0a414ab4611b Mon Sep 17 00:00:00 2001 -From: Goffredo Baroncelli <kreijack@libero.it> -Date: Mon, 20 Dec 2010 20:06:19 +0000 -Subject: [PATCH 05/15] Improve error handling in the btrfs command - -Hi Chris, - -below is enclosed a trivial patch, which has the aim to improve the error -reporting of the "btrfs" command. - -You can pull from - - http://cassiopea.homelinux.net/git/btrfs-progs-unstable.git - -branch - - strerror - -I changed every printf("some-error") to something like: - - e = errno; - fprintf(stderr, "ERROR: .... - %s", strerror(e)); - -so: - -1) all the error are reported to standard error -2) At the end of the message is printed the error as returned by the system. - -The change is quite simple, I replaced every printf("some-error") to the line -above. I don't touched anything other. -I also integrated a missing "printf" on the basis of the Ben patch. - -This patch leads the btrfs command to be more "user friendly" :-) - -Regards -G.Baroncelli - - btrfs-list.c | 40 ++++++++++++++++++++++-------- - btrfs_cmds.c | 77 ++++++++++++++++++++++++++++++++++++++++----------------- - utils.c | 6 ++++ - 3 files changed, 89 insertions(+), 34 deletions(-) - -Signed-off-by: Chris Mason <chris.mason@oracle.com> ---- - btrfs-list.c | 40 ++++++++++++++++++++++-------- - btrfs_cmds.c | 77 ++++++++++++++++++++++++++++++++++++++++----------------- - utils.c | 6 ++++ - 3 files changed, 89 insertions(+), 34 deletions(-) - -diff --git a/btrfs-list.c b/btrfs-list.c -index 93766a8..abcc2f4 100644 ---- a/btrfs-list.c -+++ b/btrfs-list.c -@@ -265,7 +265,7 @@ static int resolve_root(struct root_lookup *rl, struct root_info *ri) - static int lookup_ino_path(int fd, struct root_info *ri) - { - struct btrfs_ioctl_ino_lookup_args args; -- int ret; -+ int ret, e; - - if (ri->path) - return 0; -@@ -275,9 +275,11 @@ static int lookup_ino_path(int fd, struct root_info *ri) - args.objectid = ri->dir_id; - - ret = ioctl(fd, BTRFS_IOC_INO_LOOKUP, &args); -+ e = errno; - if (ret) { -- fprintf(stderr, "ERROR: Failed to lookup path for root %llu\n", -- (unsigned long long)ri->ref_tree); -+ fprintf(stderr, "ERROR: Failed to lookup path for root %llu - %s\n", -+ (unsigned long long)ri->ref_tree, -+ strerror(e)); - return ret; - } - -@@ -320,15 +322,18 @@ static u64 find_root_gen(int fd) - unsigned long off = 0; - u64 max_found = 0; - int i; -+ int e; - - memset(&ino_args, 0, sizeof(ino_args)); - ino_args.objectid = BTRFS_FIRST_FREE_OBJECTID; - - /* this ioctl fills in ino_args->treeid */ - ret = ioctl(fd, BTRFS_IOC_INO_LOOKUP, &ino_args); -+ e = errno; - if (ret) { -- fprintf(stderr, "ERROR: Failed to lookup path for dirid %llu\n", -- (unsigned long long)BTRFS_FIRST_FREE_OBJECTID); -+ fprintf(stderr, "ERROR: Failed to lookup path for dirid %llu - %s\n", -+ (unsigned long long)BTRFS_FIRST_FREE_OBJECTID, -+ strerror(e)); - return 0; - } - -@@ -351,8 +356,10 @@ static u64 find_root_gen(int fd) - - while (1) { - ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args); -+ e = errno; - if (ret < 0) { -- fprintf(stderr, "ERROR: can't perform the search\n"); -+ fprintf(stderr, "ERROR: can't perform the search - %s\n", -+ strerror(e)); - return 0; - } - /* the ioctl returns the number of item it found in nr_items */ -@@ -407,14 +414,16 @@ static char *__ino_resolve(int fd, u64 dirid) - struct btrfs_ioctl_ino_lookup_args args; - int ret; - char *full; -+ int e; - - memset(&args, 0, sizeof(args)); - args.objectid = dirid; - - ret = ioctl(fd, BTRFS_IOC_INO_LOOKUP, &args); -+ e = errno; - if (ret) { -- fprintf(stderr, "ERROR: Failed to lookup path for dirid %llu\n", -- (unsigned long long)dirid); -+ fprintf(stderr, "ERROR: Failed to lookup path for dirid %llu - %s\n", -+ (unsigned long long)dirid, strerror(e) ); - return ERR_PTR(ret); - } - -@@ -472,6 +481,7 @@ static char *ino_resolve(int fd, u64 ino, u64 *cache_dirid, char **cache_name) - struct btrfs_ioctl_search_header *sh; - unsigned long off = 0; - int namelen; -+ int e; - - memset(&args, 0, sizeof(args)); - -@@ -490,8 +500,10 @@ static char *ino_resolve(int fd, u64 ino, u64 *cache_dirid, char **cache_name) - sk->nr_items = 1; - - ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args); -+ e = errno; - if (ret < 0) { -- fprintf(stderr, "ERROR: can't perform the search\n"); -+ fprintf(stderr, "ERROR: can't perform the search - %s\n", -+ strerror(e)); - return NULL; - } - /* the ioctl returns the number of item it found in nr_items */ -@@ -550,6 +562,7 @@ int list_subvols(int fd) - char *name; - u64 dir_id; - int i; -+ int e; - - root_lookup_init(&root_lookup); - -@@ -578,8 +591,10 @@ int list_subvols(int fd) - - while(1) { - ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args); -+ e = errno; - if (ret < 0) { -- fprintf(stderr, "ERROR: can't perform the search\n"); -+ fprintf(stderr, "ERROR: can't perform the search - %s\n", -+ strerror(e)); - return ret; - } - /* the ioctl returns the number of item it found in nr_items */ -@@ -747,6 +762,7 @@ int find_updated_files(int fd, u64 root_id, u64 oldest_gen) - u64 found_gen; - u64 max_found = 0; - int i; -+ int e; - u64 cache_dirid = 0; - u64 cache_ino = 0; - char *cache_dir_name = NULL; -@@ -773,8 +789,10 @@ int find_updated_files(int fd, u64 root_id, u64 oldest_gen) - max_found = find_root_gen(fd); - while(1) { - ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args); -+ e = errno; - if (ret < 0) { -- fprintf(stderr, "ERROR: can't perform the search\n"); -+ fprintf(stderr, "ERROR: can't perform the search- %s\n", -+ strerror(e)); - return ret; - } - /* the ioctl returns the number of item it found in nr_items */ -diff --git a/btrfs_cmds.c b/btrfs_cmds.c -index fffb423..775bfe1 100644 ---- a/btrfs_cmds.c -+++ b/btrfs_cmds.c -@@ -156,6 +156,7 @@ int do_defrag(int ac, char **av) - int verbose = 0; - int fancy_ioctl = 0; - struct btrfs_ioctl_defrag_range_args range; -+ int e=0; - - optind = 1; - while(1) { -@@ -219,19 +220,21 @@ int do_defrag(int ac, char **av) - } - if (!fancy_ioctl) { - ret = ioctl(fd, BTRFS_IOC_DEFRAG, NULL); -+ e=errno; - } else { - ret = ioctl(fd, BTRFS_IOC_DEFRAG_RANGE, &range); - if (ret && errno == ENOTTY) { -- fprintf(stderr, "defrag range ioctl not " -+ fprintf(stderr, "ERROR: defrag range ioctl not " - "supported in this kernel, please try " - "without any options.\n"); - errors++; -+ close(fd); - break; - } - } - if (ret) { -- fprintf(stderr, "ioctl failed on %s ret %d errno %d\n", -- av[i], ret, errno); -+ fprintf(stderr, "ERROR: defrag failed on %s - %s\n", -+ av[i], strerror(e)); - errors++; - } - close(fd); -@@ -310,7 +313,7 @@ int do_subvol_list(int argc, char **argv) - int do_clone(int argc, char **argv) - { - char *subvol, *dst; -- int res, fd, fddst, len; -+ int res, fd, fddst, len, e; - char *newname; - char *dstdir; - -@@ -377,12 +380,14 @@ int do_clone(int argc, char **argv) - args.fd = fd; - strncpy(args.name, newname, BTRFS_PATH_NAME_MAX); - res = ioctl(fddst, BTRFS_IOC_SNAP_CREATE, &args); -+ e = errno; - - close(fd); - close(fddst); - - if(res < 0 ){ -- fprintf( stderr, "ERROR: cannot snapshot '%s'\n",subvol); -+ fprintf( stderr, "ERROR: cannot snapshot '%s' - %s\n", -+ subvol, strerror(e)); - return 11; - } - -@@ -392,7 +397,7 @@ int do_clone(int argc, char **argv) - - int do_delete_subvolume(int argc, char **argv) - { -- int res, fd, len; -+ int res, fd, len, e; - struct btrfs_ioctl_vol_args args; - char *dname, *vname, *cpath; - char *path = argv[1]; -@@ -438,11 +443,13 @@ int do_delete_subvolume(int argc, char **argv) - printf("Delete subvolume '%s/%s'\n", dname, vname); - strncpy(args.name, vname, BTRFS_PATH_NAME_MAX); - res = ioctl(fd, BTRFS_IOC_SNAP_DESTROY, &args); -+ e = errno; - - close(fd); - - if(res < 0 ){ -- fprintf( stderr, "ERROR: cannot delete '%s/%s'\n",dname, vname); -+ fprintf( stderr, "ERROR: cannot delete '%s/%s' - %s\n", -+ dname, vname, strerror(e)); - return 11; - } - -@@ -452,7 +459,7 @@ int do_delete_subvolume(int argc, char **argv) - - int do_create_subvol(int argc, char **argv) - { -- int res, fddst, len; -+ int res, fddst, len, e; - char *newname; - char *dstdir; - struct btrfs_ioctl_vol_args args; -@@ -492,11 +499,13 @@ int do_create_subvol(int argc, char **argv) - printf("Create subvolume '%s/%s'\n", dstdir, newname); - strncpy(args.name, newname, BTRFS_PATH_NAME_MAX); - res = ioctl(fddst, BTRFS_IOC_SUBVOL_CREATE, &args); -+ e = errno; - - close(fddst); - - if(res < 0 ){ -- fprintf( stderr, "ERROR: cannot create subvolume\n"); -+ fprintf( stderr, "ERROR: cannot create subvolume - %s\n", -+ strerror(e)); - return 11; - } - -@@ -506,7 +515,7 @@ int do_create_subvol(int argc, char **argv) - - int do_fssync(int argc, char **argv) - { -- int fd, res; -+ int fd, res, e; - char *path = argv[1]; - - fd = open_file_or_dir(path); -@@ -517,9 +526,11 @@ int do_fssync(int argc, char **argv) - - printf("FSSync '%s'\n", path); - res = ioctl(fd, BTRFS_IOC_SYNC); -+ e = errno; - close(fd); - if( res < 0 ){ -- fprintf(stderr, "ERROR: unable to fs-syncing '%s'\n", path); -+ fprintf(stderr, "ERROR: unable to fs-syncing '%s' - %s\n", -+ path, strerror(e)); - return 16; - } - -@@ -528,7 +539,7 @@ int do_fssync(int argc, char **argv) - - int do_scan(int argc, char **argv) - { -- int i, fd; -+ int i, fd, e; - if(argc<=1){ - int ret; - -@@ -560,10 +571,12 @@ int do_scan(int argc, char **argv) - * a btrfs filesystem from an I/O error !!! - */ - ret = ioctl(fd, BTRFS_IOC_SCAN_DEV, &args); -+ e = errno; - - if( ret < 0 ){ - close(fd); -- fprintf(stderr, "ERROR: unable to scan the device '%s'\n", argv[i]); -+ fprintf(stderr, "ERROR: unable to scan the device '%s' - %s\n", -+ argv[i], strerror(e)); - return 11; - } - } -@@ -577,7 +590,7 @@ int do_resize(int argc, char **argv) - { - - struct btrfs_ioctl_vol_args args; -- int fd, res, len; -+ int fd, res, len, e; - char *amount=argv[1], *path=argv[2]; - - fd = open_file_or_dir(path); -@@ -595,9 +608,11 @@ int do_resize(int argc, char **argv) - printf("Resize '%s' of '%s'\n", path, amount); - strncpy(args.name, amount, BTRFS_PATH_NAME_MAX); - res = ioctl(fd, BTRFS_IOC_RESIZE, &args); -+ e = errno; - close(fd); - if( res < 0 ){ -- fprintf(stderr, "ERROR: unable to resize '%s'\n", path); -+ fprintf(stderr, "ERROR: unable to resize '%s' - %s\n", -+ path, strerror(e)); - return 30; - } - return 0; -@@ -691,7 +706,7 @@ int do_add_volume(int nargs, char **args) - { - - char *mntpnt = args[nargs-1]; -- int i, fdmnt, ret=0; -+ int i, fdmnt, ret=0, e; - - - fdmnt = open_file_or_dir(mntpnt); -@@ -738,8 +753,10 @@ int do_add_volume(int nargs, char **args) - - strncpy(ioctl_args.name, args[i], BTRFS_PATH_NAME_MAX); - res = ioctl(fdmnt, BTRFS_IOC_ADD_DEV, &ioctl_args); -+ e = errno; - if(res<0){ -- fprintf(stderr, "ERROR: error adding the device '%s'\n", args[i]); -+ fprintf(stderr, "ERROR: error adding the device '%s' - %s\n", -+ args[i], strerror(e)); - ret++; - } - -@@ -756,7 +773,7 @@ int do_add_volume(int nargs, char **args) - int do_balance(int argc, char **argv) - { - -- int fdmnt, ret=0; -+ int fdmnt, ret=0, e; - struct btrfs_ioctl_vol_args args; - char *path = argv[1]; - -@@ -768,9 +785,11 @@ int do_balance(int argc, char **argv) - - memset(&args, 0, sizeof(args)); - ret = ioctl(fdmnt, BTRFS_IOC_BALANCE, &args); -+ e = errno; - close(fdmnt); - if(ret<0){ -- fprintf(stderr, "ERROR: balancing '%s'\n", path); -+ fprintf(stderr, "ERROR: error during balancing '%s' - %s\n", -+ path, strerror(e)); - - return 19; - } -@@ -780,7 +799,7 @@ int do_remove_volume(int nargs, char **args) - { - - char *mntpnt = args[nargs-1]; -- int i, fdmnt, ret=0; -+ int i, fdmnt, ret=0, e; - - fdmnt = open_file_or_dir(mntpnt); - if (fdmnt < 0) { -@@ -794,8 +813,10 @@ int do_remove_volume(int nargs, char **args) - - strncpy(arg.name, args[i], BTRFS_PATH_NAME_MAX); - res = ioctl(fdmnt, BTRFS_IOC_RM_DEV, &arg); -+ e = errno; - if(res<0){ -- fprintf(stderr, "ERROR: error removing the device '%s'\n", args[i]); -+ fprintf(stderr, "ERROR: error removing the device '%s' - %s\n", -+ args[i], strerror(e)); - ret++; - } - } -@@ -809,7 +830,7 @@ int do_remove_volume(int nargs, char **args) - - int do_set_default_subvol(int nargs, char **argv) - { -- int ret=0, fd; -+ int ret=0, fd, e; - u64 objectid; - char *path = argv[2]; - char *subvolid = argv[1]; -@@ -826,9 +847,11 @@ int do_set_default_subvol(int nargs, char **argv) - return 30; - } - ret = ioctl(fd, BTRFS_IOC_DEFAULT_SUBVOL, &objectid); -+ e = errno; - close(fd); - if( ret < 0 ){ -- fprintf(stderr, "ERROR: unable to set a new default subvolume\n"); -+ fprintf(stderr, "ERROR: unable to set a new default subvolume - %s\n", -+ strerror(e)); - return 30; - } - return 0; -@@ -840,6 +863,7 @@ int do_df_filesystem(int nargs, char **argv) - u64 count = 0, i; - int ret; - int fd; -+ int e; - char *path = argv[1]; - - fd = open_file_or_dir(path); -@@ -856,7 +880,10 @@ int do_df_filesystem(int nargs, char **argv) - sargs->total_spaces = 0; - - ret = ioctl(fd, BTRFS_IOC_SPACE_INFO, sargs); -+ e = errno; - if (ret) { -+ fprintf(stderr, "ERROR: couldn't get space info on '%s' - %s\n", -+ path, strerror(e)); - free(sargs); - return ret; - } -@@ -874,7 +901,11 @@ int do_df_filesystem(int nargs, char **argv) - sargs->total_spaces = 0; - - ret = ioctl(fd, BTRFS_IOC_SPACE_INFO, sargs); -+ e = errno; - if (ret) { -+ fprintf(stderr, "ERROR: couldn't get space info on '%s' - %s\n", -+ path, strerror(e)); -+ close(fd); - free(sargs); - return ret; - } -diff --git a/utils.c b/utils.c -index d8c3dcc..2a15d86 100644 ---- a/utils.c -+++ b/utils.c -@@ -821,6 +821,7 @@ void btrfs_register_one_device(char *fname) - struct btrfs_ioctl_vol_args args; - int fd; - int ret; -+ int e; - - fd = open("/dev/btrfs-control", O_RDONLY); - if (fd < 0) { -@@ -830,6 +831,11 @@ void btrfs_register_one_device(char *fname) - } - strncpy(args.name, fname, BTRFS_PATH_NAME_MAX); - ret = ioctl(fd, BTRFS_IOC_SCAN_DEV, &args); -+ e = errno; -+ if(ret<0){ -+ fprintf(stderr, "ERROR: unable to scan the device '%s' - %s\n", -+ fname, strerror(e)); -+ } - close(fd); - } - --- -1.7.2.3 - |