Commit 6675c376 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: bch_acct_snapshot

parent 72c27787
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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));
+3 −0
Original line number Diff line number Diff line
@@ -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;
	}
}

+7 −1
Original line number Diff line number Diff line
@@ -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;