if (assign) {
while (1) {
- enum { GETOPT_VAL_RESCAN = 256 };
+ enum { GETOPT_VAL_RESCAN = 256, GETOPT_VAL_NO_RESCAN };
static const struct option long_options[] = {
{ "rescan", no_argument, NULL,
GETOPT_VAL_RESCAN },
+ { "no-rescan", no_argument, NULL,
+ GETOPT_VAL_NO_RESCAN },
{ NULL, 0, NULL, 0 }
};
int c = getopt_long(argc, argv, "", long_options, NULL);
case GETOPT_VAL_RESCAN:
rescan = 1;
break;
+ case GETOPT_VAL_NO_RESCAN:
+ rescan = 0;
+ break;
default:
/* Usage printed by the caller */
return -1;
"Assign SRC as the child qgroup of DST",
"",
"--rescan schedule qutoa rescan if needed",
- "--no-rescan ",
+ "--no-rescan don't schedule quota rescan",
NULL
};
unit_mode = get_unit_mode_from_arg(&argc, argv, 0);
- optind = 1;
while (1) {
int c;
static const struct option long_options[] = {
path = argv[optind];
fd = btrfs_open_dir(path, &dirstream, 1);
if (fd < 0) {
- btrfs_qgroup_free_filter_set(filter_set);
- btrfs_qgroup_free_comparer_set(comparer_set);
+ free(filter_set);
+ free(comparer_set);
return 1;
}
if (filter_flag) {
- qgroupid = btrfs_get_path_rootid(fd);
+ ret = lookup_path_rootid(fd, &qgroupid);
+ if (ret < 0) {
+ error("cannot resolve rootid for %s: %s",
+ path, strerror(-ret));
+ close_file_or_dir(fd, dirstream);
+ goto out;
+ }
if (filter_flag & 0x1)
btrfs_qgroup_setup_filter(&filter_set,
BTRFS_QGROUP_FILTER_ALL_PARENT,
if (ret < 0)
error("can't list qgroups: %s", strerror(e));
+out:
return !!ret;
}
int exclusive = 0;
DIR *dirstream = NULL;
- optind = 1;
while (1) {
int c = getopt(argc, argv, "ce");
if (c < 0)