X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=cmds-qgroup.c;h=4f99e4191e001643f8788c81df6ae2e4bab1b1f3;hb=811303eab26961edab3de4ab4434080a798ce2df;hp=7c5532c49deae35d9a1c322325b4e5ecadb0e0f5;hpb=f2744dbc936b844702ae61254a0fb7470fb5b02d;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/cmds-qgroup.c b/cmds-qgroup.c index 7c5532c..4f99e41 100644 --- a/cmds-qgroup.c +++ b/cmds-qgroup.c @@ -26,6 +26,7 @@ #include "commands.h" #include "qgroup.h" #include "utils.h" +#include "help.h" static const char * const qgroup_cmd_group_usage[] = { "btrfs qgroup [options] ", @@ -95,7 +96,7 @@ static int _cmd_qgroup_assign(int assign, int argc, char **argv, ret = ioctl(fd, BTRFS_IOC_QGROUP_ASSIGN, &args); if (ret < 0) { - error("unable to assign quota group: %s", strerror(errno)); + error("unable to assign quota group: %m"); close_file_or_dir(fd, dirstream); return 1; } @@ -116,8 +117,7 @@ static int _cmd_qgroup_assign(int assign, int argc, char **argv, memset(&qargs, 0, sizeof(qargs)); ret = ioctl(fd, BTRFS_IOC_QUOTA_RESCAN, &qargs); if (ret < 0) - error("quota rescan failed: %s", - strerror(errno)); + error("quota rescan failed: %m"); } else { warning("quotas may be inconsistent, rescan needed"); } @@ -130,7 +130,6 @@ static int _cmd_qgroup_create(int create, int argc, char **argv) { int ret = 0; int fd; - int e; char *path; struct btrfs_ioctl_qgroup_create_args args; DIR *dirstream = NULL; @@ -148,11 +147,10 @@ static int _cmd_qgroup_create(int create, int argc, char **argv) return 1; ret = ioctl(fd, BTRFS_IOC_QGROUP_CREATE, &args); - e = errno; close_file_or_dir(fd, dirstream); if (ret < 0) { - error("unable to %s quota group: %s", - create ? "create":"destroy", strerror(e)); + error("unable to %s quota group: %m", + create ? "create":"destroy"); return 1; } return 0; @@ -272,8 +270,7 @@ static int cmd_qgroup_destroy(int argc, char **argv) } static const char * const cmd_qgroup_show_usage[] = { - "btrfs qgroup show -pcreFf " - "[--sort=qgroupid,rfer,excl,max_rfer,max_excl] ", + "btrfs qgroup show [options] ", "Show subvolume quota groups.", "-p print parent qgroup id", "-c print child qgroup id", @@ -288,6 +285,7 @@ static const char * const cmd_qgroup_show_usage[] = { " list qgroups sorted by specified items", " you can use '+' or '-' in front of each item.", " (+:ascending, -:descending, ascending default)", + "--sync force sync of the filesystem before getting info", NULL }; @@ -296,11 +294,11 @@ static int cmd_qgroup_show(int argc, char **argv) char *path; int ret = 0; int fd; - int e; DIR *dirstream = NULL; u64 qgroupid; int filter_flag = 0; unsigned unit_mode; + int sync = 0; struct btrfs_qgroup_comparer_set *comparer_set; struct btrfs_qgroup_filter_set *filter_set; @@ -311,8 +309,13 @@ static int cmd_qgroup_show(int argc, char **argv) while (1) { int c; + enum { + GETOPT_VAL_SORT = 256, + GETOPT_VAL_SYNC + }; static const struct option long_options[] = { - {"sort", required_argument, NULL, 'S'}, + {"sort", required_argument, NULL, GETOPT_VAL_SORT}, + {"sync", no_argument, NULL, GETOPT_VAL_SYNC}, { NULL, 0, NULL, 0 } }; @@ -342,12 +345,15 @@ static int cmd_qgroup_show(int argc, char **argv) case 'f': filter_flag |= 0x2; break; - case 'S': + case GETOPT_VAL_SORT: ret = btrfs_qgroup_parse_sort_string(optarg, &comparer_set); if (ret) usage(cmd_qgroup_show_usage); break; + case GETOPT_VAL_SYNC: + sync = 1; + break; default: usage(cmd_qgroup_show_usage); } @@ -365,8 +371,14 @@ static int cmd_qgroup_show(int argc, char **argv) return 1; } + if (sync) { + ret = ioctl(fd, BTRFS_IOC_SYNC); + if (ret < 0) + warning("sync ioctl failed on '%s': %m", path); + } + if (filter_flag) { - ret = lookup_ino_rootid(fd, &qgroupid); + ret = lookup_path_rootid(fd, &qgroupid); if (ret < 0) { error("cannot resolve rootid for %s: %s", path, strerror(-ret)); @@ -383,10 +395,7 @@ static int cmd_qgroup_show(int argc, char **argv) qgroupid); } ret = btrfs_show_qgroups(fd, filter_set, comparer_set); - e = errno; close_file_or_dir(fd, dirstream); - if (ret < 0) - error("can't list qgroups: %s", strerror(e)); out: return !!ret; @@ -406,7 +415,6 @@ static int cmd_qgroup_limit(int argc, char **argv) { int ret = 0; int fd; - int e; char *path = NULL; struct btrfs_ioctl_qgroup_limit_args args; unsigned long long size; @@ -477,10 +485,9 @@ static int cmd_qgroup_limit(int argc, char **argv) return 1; ret = ioctl(fd, BTRFS_IOC_QGROUP_LIMIT, &args); - e = errno; close_file_or_dir(fd, dirstream); if (ret < 0) { - error("unable to limit requested quota group: %s", strerror(e)); + error("unable to limit requested quota group: %m"); return 1; } return 0;