mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
bcachefs: Improve "copygc requested to run" error message
This improves the "copygc requested to run but no buckets found" to show the device that requires copygc to be run on - we'll definitely need to improve this more. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
This commit is contained in:
parent
c501fef6de
commit
54feff0a7a
@ -255,7 +255,28 @@ static int bch2_copygc(struct bch_fs *c)
|
||||
}
|
||||
|
||||
if (!h->used) {
|
||||
bch_err_ratelimited(c, "copygc requested to run but found no buckets to move!");
|
||||
s64 wait = S64_MAX, dev_wait;
|
||||
u64 dev_min_wait_fragmented = 0;
|
||||
u64 dev_min_wait_allowed = 0;
|
||||
int dev_min_wait = -1;
|
||||
|
||||
for_each_rw_member(ca, c, dev_idx) {
|
||||
struct bch_dev_usage usage = bch2_dev_usage_read(ca);
|
||||
s64 allowed = ((__dev_buckets_available(ca, usage, RESERVE_none) *
|
||||
ca->mi.bucket_size) >> 1);
|
||||
s64 fragmented = usage.d[BCH_DATA_user].fragmented;
|
||||
|
||||
dev_wait = max(0LL, allowed - fragmented);
|
||||
|
||||
if (dev_min_wait < 0 || dev_wait < wait) {
|
||||
dev_min_wait = dev_idx;
|
||||
dev_min_wait_fragmented = fragmented;
|
||||
dev_min_wait_allowed = allowed;
|
||||
}
|
||||
}
|
||||
|
||||
bch_err_ratelimited(c, "copygc requested to run but found no buckets to move! dev %u fragmented %llu allowed %llu",
|
||||
dev_min_wait, dev_min_wait_fragmented, dev_min_wait_allowed);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user