From: Kent Overstreet Date: Mon, 12 Feb 2024 07:17:02 +0000 (-0500) Subject: bcachefs: bch_acct_snapshot X-Git-Tag: io_uring-6.11-20240722~28^2~71 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=6675c37662341cf1a2e3b502a4dafbf7571978b2;p=linux-2.6-block.git bcachefs: bch_acct_snapshot Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c index 06e968d98018..caa79e84f2cc 100644 --- a/fs/bcachefs/buckets.c +++ b/fs/bcachefs/buckets.c @@ -778,6 +778,16 @@ static int __trigger_extent(struct btree_trans *trans, return ret; } + if (acc_replicas_key.replicas.nr_devs && !level && k.k->p.snapshot) { + struct disk_accounting_pos acc_snapshot_key = { + .type = BCH_DISK_ACCOUNTING_snapshot, + .snapshot.id = k.k->p.snapshot, + }; + ret = bch2_disk_accounting_mod(trans, &acc_snapshot_key, &replicas_sectors, 1, gc); + if (ret) + return ret; + } + if (acct_compression_key.compression.type) { if (flags & BTREE_TRIGGER_overwrite) bch2_u64s_neg(compression_acct, ARRAY_SIZE(compression_acct)); diff --git a/fs/bcachefs/disk_accounting.c b/fs/bcachefs/disk_accounting.c index 8c6e76e50a9b..f980cd5af41d 100644 --- a/fs/bcachefs/disk_accounting.c +++ b/fs/bcachefs/disk_accounting.c @@ -146,6 +146,9 @@ void bch2_accounting_key_to_text(struct printbuf *out, struct disk_accounting_po case BCH_DISK_ACCOUNTING_compression: bch2_prt_compression_type(out, k->compression.type); break; + case BCH_DISK_ACCOUNTING_snapshot: + prt_printf(out, "id=%u", k->snapshot.id); + break; } } diff --git a/fs/bcachefs/disk_accounting_format.h b/fs/bcachefs/disk_accounting_format.h index 2ded8ae65001..355b8545df88 100644 --- a/fs/bcachefs/disk_accounting_format.h +++ b/fs/bcachefs/disk_accounting_format.h @@ -100,7 +100,8 @@ static inline bool data_type_is_hidden(enum bch_data_type type) x(persistent_reserved, 1) \ x(replicas, 2) \ x(dev_data_type, 3) \ - x(compression, 4) + x(compression, 4) \ + x(snapshot, 5) enum disk_accounting_type { #define x(f, nr) BCH_DISK_ACCOUNTING_##f = nr, @@ -129,6 +130,10 @@ struct bch_acct_compression { __u8 type; }; +struct bch_acct_snapshot { + __u32 id; +}; + struct disk_accounting_pos { union { struct { @@ -140,6 +145,7 @@ struct disk_accounting_pos { struct bch_dev_data_type dev_data_type; struct bch_dev_stripe_buckets dev_stripe_buckets; struct bch_acct_compression compression; + struct bch_acct_snapshot snapshot; }; }; struct bpos _pad;