diff options
Diffstat (limited to 'fs/bcachefs')
-rw-r--r-- | fs/bcachefs/buckets.c | 21 | ||||
-rw-r--r-- | fs/bcachefs/fs-io.c | 2 |
2 files changed, 22 insertions, 1 deletions
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c index ed07dfee0ae3..255551f31dae 100644 --- a/fs/bcachefs/buckets.c +++ b/fs/bcachefs/buckets.c @@ -2118,6 +2118,7 @@ int bch2_disk_reservation_add(struct bch_fs *c, struct disk_reservation *res, unsigned sectors, int flags) { struct bch_fs_pcpu *pcpu; + struct bch_fs_usage_short usage; u64 old, v, get; s64 sectors_available; int ret; @@ -2156,7 +2157,8 @@ recalculate: mutex_lock(&c->sectors_available_lock); percpu_u64_set(&c->pcpu->sectors_available, 0); - sectors_available = avail_factor(__bch2_fs_usage_read_short(c).free); + usage = __bch2_fs_usage_read_short(c); + sectors_available = avail_factor(usage.free); if (sectors <= sectors_available || (flags & BCH_DISK_RESERVATION_NOFAIL)) { @@ -2166,6 +2168,23 @@ recalculate: res->sectors += sectors; ret = 0; } else { + bch_err(c, "-ENOSPC:\n" + "real capacity:\t%llu\n" + "hidden:\t%llu\n" + "btree:\t%llu\n" + "data:\t%llu\n" + "reserved:\t%llu\n" + "onlinereserved:\t%llu\n" + "exposed capacity:\t%llu\n" + "used:\t%llu\n", + c->capacity, + bch2_fs_usage_read_one(c, &c->usage_base->hidden), + bch2_fs_usage_read_one(c, &c->usage_base->btree), + bch2_fs_usage_read_one(c, &c->usage_base->data), + bch2_fs_usage_read_one(c, &c->usage_base->reserved), + bch2_fs_usage_read_one(c, &c->usage_base->online_reserved), + usage.capacity, + usage.used); atomic64_set(&c->sectors_available, sectors_available); ret = -ENOSPC; } diff --git a/fs/bcachefs/fs-io.c b/fs/bcachefs/fs-io.c index 959eff4c9258..98e1b61c24d2 100644 --- a/fs/bcachefs/fs-io.c +++ b/fs/bcachefs/fs-io.c @@ -1465,6 +1465,8 @@ static int __bch2_buffered_write(struct bch_inode_info *inode, retry_reservation: ret = bch2_page_reservation_get(c, inode, page, &res, pg_offset, pg_len, true); + if (ret) + bch_err(c, "err %i from bch2_page_reservation_get", ret); if (ret && !PageUptodate(page)) { ret = bch2_read_single_page(page, mapping); |