Skip to content

Commit

Permalink
Revert "btrfs-progs: rename qgroup items to match the kernel naming s…
Browse files Browse the repository at this point in the history
…cheme"

This reverts commit 0345143.
(It's not 1:1, there are some additional trivial fixups in cmds/qgroup.c)

This breaks a lot of 3rd party tools that depend on it as Neal reports:

* btrfs-assistant
* buildah
* cri-o
* podman
* skopeo
* containerd
* moby/docker
* snapper
* source-to-image

Link: https://lore.kernel.org/linux-btrfs/CAEg-Je8L7jieKdoWoZBuBZ6RdXwvwrx04AB0fOZF1fr5Pb-o1g@mail.gmail.com/
Reported-by: Neal Gompa <ngompa@fedoraproject.org>
Signed-off-by: David Sterba <dsterba@suse.com>
  • Loading branch information
kdave committed Jan 3, 2023
1 parent c339846 commit e78fe2d
Show file tree
Hide file tree
Showing 7 changed files with 130 additions and 120 deletions.
60 changes: 31 additions & 29 deletions check/qgroup-verify.c
Expand Up @@ -49,10 +49,10 @@ struct qgroup_count;
static struct qgroup_count *find_count(u64 qgroupid);

struct qgroup_info {
u64 rfer;
u64 rfer_cmpr;
u64 excl;
u64 excl_cmpr;
u64 referenced;
u64 referenced_compressed;
u64 exclusive;
u64 exclusive_compressed;
};

struct qgroup_count {
Expand Down Expand Up @@ -481,20 +481,20 @@ static int account_one_extent(struct ulist *roots, u64 bytenr, u64 num_bytes)

nr_refs = group_get_cur_refcnt(count);
if (nr_refs) {
count->info.rfer += num_bytes;
count->info.rfer_cmpr += num_bytes;
count->info.referenced += num_bytes;
count->info.referenced_compressed += num_bytes;

if (nr_refs == nr_roots) {
count->info.excl += num_bytes;
count->info.excl_cmpr += num_bytes;
count->info.exclusive += num_bytes;
count->info.exclusive_compressed += num_bytes;
}
}
#ifdef QGROUP_VERIFY_DEBUG
printf("account (%llu, %llu), qgroup %llu/%llu, rfer %llu,"
" excl %llu, refs %llu, roots %llu\n", bytenr, num_bytes,
btrfs_qgroup_level(count->qgroupid),
btrfs_qgroup_subvolid(count->qgroupid),
count->info.rfer, count->info.excl, nr_refs,
count->info.referenced, count->info.exclusive, nr_refs,
nr_roots);
#endif
}
Expand Down Expand Up @@ -870,10 +870,12 @@ static struct qgroup_count *alloc_count(struct btrfs_disk_key *key,
c->key = *key;

item = &c->diskinfo;
item->rfer = btrfs_qgroup_info_rfer(leaf, disk);
item->rfer_cmpr = btrfs_qgroup_info_rfer_cmpr(leaf, disk);
item->excl = btrfs_qgroup_info_excl(leaf, disk);
item->excl_cmpr = btrfs_qgroup_info_excl_cmpr(leaf, disk);
item->referenced = btrfs_qgroup_info_referenced(leaf, disk);
item->referenced_compressed =
btrfs_qgroup_info_referenced_compressed(leaf, disk);
item->exclusive = btrfs_qgroup_info_exclusive(leaf, disk);
item->exclusive_compressed =
btrfs_qgroup_info_exclusive_compressed(leaf, disk);
INIT_LIST_HEAD(&c->groups);
INIT_LIST_HEAD(&c->members);
INIT_LIST_HEAD(&c->bad_list);
Expand Down Expand Up @@ -1284,8 +1286,8 @@ static int report_qgroup_difference(struct qgroup_count *count, int verbose)
int is_different;
struct qgroup_info *info = &count->info;
struct qgroup_info *disk = &count->diskinfo;
long long excl_diff = info->excl - disk->excl;
long long ref_diff = info->rfer - disk->rfer;
long long excl_diff = info->exclusive - disk->exclusive;
long long ref_diff = info->referenced - disk->referenced;

is_different = excl_diff || ref_diff;

Expand All @@ -1295,16 +1297,16 @@ static int report_qgroup_difference(struct qgroup_count *count, int verbose)
btrfs_qgroup_subvolid(count->qgroupid),
is_different ? "are different" : "");

print_fields(info->rfer, info->rfer_cmpr,
print_fields(info->referenced, info->referenced_compressed,
"our:", "referenced");
print_fields(disk->rfer, disk->rfer_cmpr,
print_fields(disk->referenced, disk->referenced_compressed,
"disk:", "referenced");
if (ref_diff)
print_fields_signed(ref_diff, ref_diff,
"diff:", "referenced");
print_fields(info->excl, info->excl_cmpr,
print_fields(info->exclusive, info->exclusive_compressed,
"our:", "exclusive");
print_fields(disk->excl, disk->excl_cmpr,
print_fields(disk->exclusive, disk->exclusive_compressed,
"disk:", "exclusive");
if (excl_diff)
print_fields_signed(excl_diff, excl_diff,
Expand Down Expand Up @@ -1386,8 +1388,8 @@ static bool is_bad_qgroup(struct qgroup_count *count)
{
struct qgroup_info *info = &count->info;
struct qgroup_info *disk = &count->diskinfo;
s64 excl_diff = info->excl - disk->excl;
s64 ref_diff = info->rfer - disk->rfer;
s64 excl_diff = info->exclusive - disk->exclusive;
s64 ref_diff = info->referenced - disk->referenced;

return (excl_diff || ref_diff);
}
Expand Down Expand Up @@ -1592,15 +1594,15 @@ static int repair_qgroup_info(struct btrfs_fs_info *info,
btrfs_set_qgroup_info_generation(path.nodes[0], info_item,
trans->transid);

btrfs_set_qgroup_info_rfer(path.nodes[0], info_item,
count->info.rfer);
btrfs_set_qgroup_info_rfer_cmpr(path.nodes[0], info_item,
count->info.rfer_cmpr);
btrfs_set_qgroup_info_referenced(path.nodes[0], info_item,
count->info.referenced);
btrfs_set_qgroup_info_referenced_compressed(path.nodes[0], info_item,
count->info.referenced_compressed);

btrfs_set_qgroup_info_excl(path.nodes[0], info_item,
count->info.excl);
btrfs_set_qgroup_info_excl_cmpr(path.nodes[0], info_item,
count->info.excl_cmpr);
btrfs_set_qgroup_info_exclusive(path.nodes[0], info_item,
count->info.exclusive);
btrfs_set_qgroup_info_exclusive_compressed(path.nodes[0], info_item,
count->info.exclusive_compressed);

btrfs_mark_buffer_dirty(path.nodes[0]);

Expand Down
65 changes: 35 additions & 30 deletions cmds/qgroup.c
Expand Up @@ -343,25 +343,25 @@ static void print_qgroup_column(struct btrfs_qgroup *qgroup,
print_qgroup_column_add_blank(BTRFS_QGROUP_QGROUPID, len);
break;
case BTRFS_QGROUP_RFER:
len = print_u64(qgroup->info.rfer, unit_mode, max_len);
len = print_u64(qgroup->info.referenced, unit_mode, max_len);
break;
case BTRFS_QGROUP_EXCL:
len = print_u64(qgroup->info.excl, unit_mode, max_len);
len = print_u64(qgroup->info.exclusive, unit_mode, max_len);
break;
case BTRFS_QGROUP_PARENT:
len = print_parent_column(qgroup);
print_qgroup_column_add_blank(BTRFS_QGROUP_PARENT, len);
break;
case BTRFS_QGROUP_MAX_RFER:
if (qgroup->limit.flags & BTRFS_QGROUP_LIMIT_MAX_RFER)
len = print_u64(qgroup->limit.max_rfer,
len = print_u64(qgroup->limit.max_referenced,
unit_mode, max_len);
else
len = printf("%*s", max_len, "none");
break;
case BTRFS_QGROUP_MAX_EXCL:
if (qgroup->limit.flags & BTRFS_QGROUP_LIMIT_MAX_EXCL)
len = print_u64(qgroup->limit.max_excl,
len = print_u64(qgroup->limit.max_exclusive,
unit_mode, max_len);
else
len = printf("%*s", max_len, "none");
Expand Down Expand Up @@ -504,9 +504,9 @@ static int comp_entry_with_rfer(struct btrfs_qgroup *entry1,
{
int ret;

if (entry1->info.rfer > entry2->info.rfer)
if (entry1->info.referenced > entry2->info.referenced)
ret = 1;
else if (entry1->info.rfer < entry2->info.rfer)
else if (entry1->info.referenced < entry2->info.referenced)
ret = -1;
else
ret = 0;
Expand All @@ -520,9 +520,9 @@ static int comp_entry_with_excl(struct btrfs_qgroup *entry1,
{
int ret;

if (entry1->info.excl > entry2->info.excl)
if (entry1->info.exclusive > entry2->info.exclusive)
ret = 1;
else if (entry1->info.excl < entry2->info.excl)
else if (entry1->info.exclusive < entry2->info.exclusive)
ret = -1;
else
ret = 0;
Expand All @@ -536,9 +536,9 @@ static int comp_entry_with_max_rfer(struct btrfs_qgroup *entry1,
{
int ret;

if (entry1->limit.max_rfer > entry2->limit.max_rfer)
if (entry1->limit.max_referenced > entry2->limit.max_referenced)
ret = 1;
else if (entry1->limit.max_rfer < entry2->limit.max_rfer)
else if (entry1->limit.max_referenced < entry2->limit.max_referenced)
ret = -1;
else
ret = 0;
Expand All @@ -552,9 +552,9 @@ static int comp_entry_with_max_excl(struct btrfs_qgroup *entry1,
{
int ret;

if (entry1->limit.max_excl > entry2->limit.max_excl)
if (entry1->limit.max_exclusive > entry2->limit.max_exclusive)
ret = 1;
else if (entry1->limit.max_excl < entry2->limit.max_excl)
else if (entry1->limit.max_exclusive < entry2->limit.max_exclusive)
ret = -1;
else
ret = 0;
Expand Down Expand Up @@ -807,10 +807,12 @@ static int update_qgroup_info(int fd, struct qgroup_lookup *qgroup_lookup, u64 q
return PTR_ERR(bq);

bq->info.generation = btrfs_stack_qgroup_info_generation(info);
bq->info.rfer = btrfs_stack_qgroup_info_rfer(info);
bq->info.rfer_cmpr = btrfs_stack_qgroup_info_rfer_cmpr(info);
bq->info.excl = btrfs_stack_qgroup_info_excl(info);
bq->info.excl_cmpr = btrfs_stack_qgroup_info_excl_cmpr(info);
bq->info.referenced = btrfs_stack_qgroup_info_referenced(info);
bq->info.referenced_compressed =
btrfs_stack_qgroup_info_referenced_compressed(info);
bq->info.exclusive = btrfs_stack_qgroup_info_exclusive(info);
bq->info.exclusive_compressed =
btrfs_stack_qgroup_info_exclusive_compressed(info);

return 0;
}
Expand All @@ -826,10 +828,13 @@ static int update_qgroup_limit(int fd, struct qgroup_lookup *qgroup_lookup,
return PTR_ERR(bq);

bq->limit.flags = btrfs_stack_qgroup_limit_flags(limit);
bq->limit.max_rfer = btrfs_stack_qgroup_limit_max_rfer(limit);
bq->limit.max_excl = btrfs_stack_qgroup_limit_max_excl(limit);
bq->limit.rsv_rfer = btrfs_stack_qgroup_limit_rsv_rfer(limit);
bq->limit.rsv_excl = btrfs_stack_qgroup_limit_rsv_excl(limit);
bq->limit.max_referenced =
btrfs_stack_qgroup_limit_max_referenced(limit);
bq->limit.max_exclusive =
btrfs_stack_qgroup_limit_max_exclusive(limit);
bq->limit.rsv_referenced =
btrfs_stack_qgroup_limit_rsv_referenced(limit);
bq->limit.rsv_exclusive = btrfs_stack_qgroup_limit_rsv_exclusive(limit);

return 0;
}
Expand Down Expand Up @@ -1122,23 +1127,23 @@ static void __update_columns_max_len(struct btrfs_qgroup *bq,
btrfs_qgroup_columns[column].max_len = len;
break;
case BTRFS_QGROUP_RFER:
len = strlen(pretty_size_mode(bq->info.rfer, unit_mode));
len = strlen(pretty_size_mode(bq->info.referenced, unit_mode));
if (btrfs_qgroup_columns[column].max_len < len)
btrfs_qgroup_columns[column].max_len = len;
break;
case BTRFS_QGROUP_EXCL:
len = strlen(pretty_size_mode(bq->info.excl, unit_mode));
len = strlen(pretty_size_mode(bq->info.exclusive, unit_mode));
if (btrfs_qgroup_columns[column].max_len < len)
btrfs_qgroup_columns[column].max_len = len;
break;
case BTRFS_QGROUP_MAX_RFER:
len = strlen(pretty_size_mode(bq->limit.max_rfer,
len = strlen(pretty_size_mode(bq->limit.max_referenced,
unit_mode));
if (btrfs_qgroup_columns[column].max_len < len)
btrfs_qgroup_columns[column].max_len = len;
break;
case BTRFS_QGROUP_MAX_EXCL:
len = strlen(pretty_size_mode(bq->limit.max_excl,
len = strlen(pretty_size_mode(bq->limit.max_exclusive,
unit_mode));
if (btrfs_qgroup_columns[column].max_len < len)
btrfs_qgroup_columns[column].max_len = len;
Expand Down Expand Up @@ -1472,14 +1477,14 @@ static void print_all_qgroups_json(struct qgroup_lookup *qgroup_lookup)
fmt_print(&fctx, "qgroupid",
btrfs_qgroup_level(qgroup->qgroupid),
btrfs_qgroup_subvolid(qgroup->qgroupid));
fmt_print(&fctx, "referenced", qgroup->info.rfer);
fmt_print(&fctx, "referenced", qgroup->info.referenced);
if (qgroup->limit.flags & BTRFS_QGROUP_LIMIT_MAX_RFER)
fmt_print(&fctx, "max_referenced", qgroup->limit.max_rfer);
fmt_print(&fctx, "max_referenced", qgroup->limit.max_referenced);
else
fmt_print(&fctx, "max_referenced-none", "none");
fmt_print(&fctx, "exclusive", qgroup->info.excl);
fmt_print(&fctx, "exclusive", qgroup->info.exclusive);
if (qgroup->limit.flags & BTRFS_QGROUP_LIMIT_MAX_EXCL)
fmt_print(&fctx, "max_exclusive", qgroup->limit.max_excl);
fmt_print(&fctx, "max_exclusive", qgroup->limit.max_exclusive);
else
fmt_print(&fctx, "max_exclusive-none", "none");
fmt_print(&fctx, "path", qgroup->path ?: "");
Expand Down Expand Up @@ -2109,10 +2114,10 @@ static int cmd_qgroup_limit(const struct cmd_struct *cmd, int argc, char **argv)
BTRFS_QGROUP_LIMIT_EXCL_CMPR;
if (exclusive) {
args.lim.flags |= BTRFS_QGROUP_LIMIT_MAX_EXCL;
args.lim.max_excl = size;
args.lim.max_exclusive = size;
} else {
args.lim.flags |= BTRFS_QGROUP_LIMIT_MAX_RFER;
args.lim.max_rfer = size;
args.lim.max_referenced = size;
}

if (argc - optind == 2) {
Expand Down
8 changes: 4 additions & 4 deletions cmds/qgroup.h
Expand Up @@ -24,10 +24,10 @@

struct btrfs_qgroup_info {
u64 generation;
u64 rfer;
u64 rfer_cmpr;
u64 excl;
u64 excl_cmpr;
u64 referenced;
u64 referenced_compressed;
u64 exclusive;
u64 exclusive_compressed;
};

struct btrfs_qgroup_stats {
Expand Down
12 changes: 6 additions & 6 deletions cmds/subvolume.c
Expand Up @@ -1483,15 +1483,15 @@ static int cmd_subvolume_show(const struct cmd_struct *cmd, int argc, char **arg
fflush(stdout);

pr_verbose(LOG_DEFAULT, "\t Limit referenced:\t%s\n",
stats.limit.max_rfer == 0 ? "-" :
pretty_size_mode(stats.limit.max_rfer, unit_mode));
stats.limit.max_referenced == 0 ? "-" :
pretty_size_mode(stats.limit.max_referenced, unit_mode));
pr_verbose(LOG_DEFAULT, "\t Limit exclusive:\t%s\n",
stats.limit.max_excl == 0 ? "-" :
pretty_size_mode(stats.limit.max_excl, unit_mode));
stats.limit.max_exclusive == 0 ? "-" :
pretty_size_mode(stats.limit.max_exclusive, unit_mode));
pr_verbose(LOG_DEFAULT, "\t Usage referenced:\t%s\n",
pretty_size_mode(stats.info.rfer, unit_mode));
pretty_size_mode(stats.info.referenced, unit_mode));
pr_verbose(LOG_DEFAULT, "\t Usage exclusive:\t%s\n",
pretty_size_mode(stats.info.excl, unit_mode));
pretty_size_mode(stats.info.exclusive, unit_mode));

out:
free(subvol_path);
Expand Down
8 changes: 4 additions & 4 deletions ioctl.h
Expand Up @@ -71,10 +71,10 @@ BUILD_ASSERT(sizeof(struct btrfs_ioctl_vol_args) == 4096);

struct btrfs_qgroup_limit {
__u64 flags;
__u64 max_rfer;
__u64 max_excl;
__u64 rsv_rfer;
__u64 rsv_excl;
__u64 max_referenced;
__u64 max_exclusive;
__u64 rsv_referenced;
__u64 rsv_exclusive;
};
BUILD_ASSERT(sizeof(struct btrfs_qgroup_limit) == 40);

Expand Down

0 comments on commit e78fe2d

Please sign in to comment.