From 20ac515a9cc73d48be1462d2a04cda75215a1867 Mon Sep 17 00:00:00 2001
From: Kent Overstreet <kent.overstreet@linux.dev>
Date: Tue, 19 Mar 2024 00:04:52 -0400
Subject: [PATCH] bcachefs: bch_acct_rebalance_work

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
---
 fs/bcachefs/buckets.c                | 9 +++++++++
 fs/bcachefs/disk_accounting_format.h | 3 ++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index e4a9bd29e93c8..f89e2e9a6dd2b 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -808,6 +808,15 @@ static int __trigger_extent(struct btree_trans *trans,
 			return ret;
 	}
 
+	if (bch2_bkey_rebalance_opts(k)) {
+		struct disk_accounting_pos acc = {
+			.type		= BCH_DISK_ACCOUNTING_rebalance_work,
+		};
+		ret = bch2_disk_accounting_mod(trans, &acc, &replicas_sectors, 1, gc);
+		if (ret)
+			return ret;
+	}
+
 	return 0;
 }
 
diff --git a/fs/bcachefs/disk_accounting_format.h b/fs/bcachefs/disk_accounting_format.h
index 057d82c7e0b14..cba417060b333 100644
--- a/fs/bcachefs/disk_accounting_format.h
+++ b/fs/bcachefs/disk_accounting_format.h
@@ -102,7 +102,8 @@ static inline bool data_type_is_hidden(enum bch_data_type type)
 	x(dev_data_type,	3)		\
 	x(compression,		4)		\
 	x(snapshot,		5)		\
-	x(btree,		6)
+	x(btree,		6)		\
+	x(rebalance_work,	7)
 
 enum disk_accounting_type {
 #define x(f, nr)	BCH_DISK_ACCOUNTING_##f	= nr,
-- 
GitLab