Skip to content

Commit 8e7834a

Browse files
author
Kent Overstreet
committed
bcachefs: bch_fs_usage_base
Split out base filesystem usage into its own type; prep work for breaking up bch2_trans_fs_usage_apply(). Signed-off-by: Kent Overstreet <[email protected]>
1 parent 4f564f4 commit 8e7834a

File tree

7 files changed

+45
-47
lines changed

7 files changed

+45
-47
lines changed

fs/bcachefs/btree_gc.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,19 +1253,19 @@ static int bch2_gc_done(struct bch_fs *c,
12531253
bch2_acc_percpu_u64s((u64 __percpu *) c->usage_gc, nr);
12541254

12551255
copy_fs_field(fs_usage_hidden_wrong,
1256-
hidden, "hidden");
1256+
b.hidden, "hidden");
12571257
copy_fs_field(fs_usage_btree_wrong,
1258-
btree, "btree");
1258+
b.btree, "btree");
12591259

12601260
if (!metadata_only) {
12611261
copy_fs_field(fs_usage_data_wrong,
1262-
data, "data");
1262+
b.data, "data");
12631263
copy_fs_field(fs_usage_cached_wrong,
1264-
cached, "cached");
1264+
b.cached, "cached");
12651265
copy_fs_field(fs_usage_reserved_wrong,
1266-
reserved, "reserved");
1266+
b.reserved, "reserved");
12671267
copy_fs_field(fs_usage_nr_inodes_wrong,
1268-
nr_inodes,"nr_inodes");
1268+
b.nr_inodes,"nr_inodes");
12691269

12701270
for (i = 0; i < BCH_REPLICAS_MAX; i++)
12711271
copy_fs_field(fs_usage_persistent_reserved_wrong,

fs/bcachefs/btree_types.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,9 @@ struct btree_trans {
430430
struct journal_res journal_res;
431431
u64 *journal_seq;
432432
struct disk_reservation *disk_res;
433+
434+
struct bch_fs_usage_base fs_usage_delta;
435+
433436
unsigned journal_u64s;
434437
unsigned extra_disk_res; /* XXX kill */
435438
struct replicas_delta_list *fs_usage_deltas;

fs/bcachefs/buckets.c

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
#include <linux/preempt.h>
2727

28-
static inline void fs_usage_data_type_to_base(struct bch_fs_usage *fs_usage,
28+
static inline void fs_usage_data_type_to_base(struct bch_fs_usage_base *fs_usage,
2929
enum bch_data_type data_type,
3030
s64 sectors)
3131
{
@@ -54,20 +54,20 @@ void bch2_fs_usage_initialize(struct bch_fs *c)
5454
bch2_fs_usage_acc_to_base(c, i);
5555

5656
for (unsigned i = 0; i < BCH_REPLICAS_MAX; i++)
57-
usage->reserved += usage->persistent_reserved[i];
57+
usage->b.reserved += usage->persistent_reserved[i];
5858

5959
for (unsigned i = 0; i < c->replicas.nr; i++) {
6060
struct bch_replicas_entry_v1 *e =
6161
cpu_replicas_entry(&c->replicas, i);
6262

63-
fs_usage_data_type_to_base(usage, e->data_type, usage->replicas[i]);
63+
fs_usage_data_type_to_base(&usage->b, e->data_type, usage->replicas[i]);
6464
}
6565

6666
for_each_member_device(c, ca) {
6767
struct bch_dev_usage dev = bch2_dev_usage_read(ca);
6868

69-
usage->hidden += (dev.d[BCH_DATA_sb].buckets +
70-
dev.d[BCH_DATA_journal].buckets) *
69+
usage->b.hidden += (dev.d[BCH_DATA_sb].buckets +
70+
dev.d[BCH_DATA_journal].buckets) *
7171
ca->mi.bucket_size;
7272
}
7373

@@ -188,15 +188,15 @@ void bch2_fs_usage_to_text(struct printbuf *out,
188188
prt_printf(out, "capacity:\t\t\t%llu\n", c->capacity);
189189

190190
prt_printf(out, "hidden:\t\t\t\t%llu\n",
191-
fs_usage->u.hidden);
191+
fs_usage->u.b.hidden);
192192
prt_printf(out, "data:\t\t\t\t%llu\n",
193-
fs_usage->u.data);
193+
fs_usage->u.b.data);
194194
prt_printf(out, "cached:\t\t\t\t%llu\n",
195-
fs_usage->u.cached);
195+
fs_usage->u.b.cached);
196196
prt_printf(out, "reserved:\t\t\t%llu\n",
197-
fs_usage->u.reserved);
197+
fs_usage->u.b.reserved);
198198
prt_printf(out, "nr_inodes:\t\t\t%llu\n",
199-
fs_usage->u.nr_inodes);
199+
fs_usage->u.b.nr_inodes);
200200
prt_printf(out, "online reserved:\t\t%llu\n",
201201
fs_usage->online_reserved);
202202

@@ -225,10 +225,10 @@ static u64 reserve_factor(u64 r)
225225

226226
u64 bch2_fs_sectors_used(struct bch_fs *c, struct bch_fs_usage_online *fs_usage)
227227
{
228-
return min(fs_usage->u.hidden +
229-
fs_usage->u.btree +
230-
fs_usage->u.data +
231-
reserve_factor(fs_usage->u.reserved +
228+
return min(fs_usage->u.b.hidden +
229+
fs_usage->u.b.btree +
230+
fs_usage->u.b.data +
231+
reserve_factor(fs_usage->u.b.reserved +
232232
fs_usage->online_reserved),
233233
c->capacity);
234234
}
@@ -240,17 +240,17 @@ __bch2_fs_usage_read_short(struct bch_fs *c)
240240
u64 data, reserved;
241241

242242
ret.capacity = c->capacity -
243-
bch2_fs_usage_read_one(c, &c->usage_base->hidden);
243+
bch2_fs_usage_read_one(c, &c->usage_base->b.hidden);
244244

245-
data = bch2_fs_usage_read_one(c, &c->usage_base->data) +
246-
bch2_fs_usage_read_one(c, &c->usage_base->btree);
247-
reserved = bch2_fs_usage_read_one(c, &c->usage_base->reserved) +
245+
data = bch2_fs_usage_read_one(c, &c->usage_base->b.data) +
246+
bch2_fs_usage_read_one(c, &c->usage_base->b.btree);
247+
reserved = bch2_fs_usage_read_one(c, &c->usage_base->b.reserved) +
248248
percpu_u64_get(c->online_reserved);
249249

250250
ret.used = min(ret.capacity, data + reserve_factor(reserved));
251251
ret.free = ret.capacity - ret.used;
252252

253-
ret.nr_inodes = bch2_fs_usage_read_one(c, &c->usage_base->nr_inodes);
253+
ret.nr_inodes = bch2_fs_usage_read_one(c, &c->usage_base->b.nr_inodes);
254254

255255
return ret;
256256
}
@@ -308,9 +308,9 @@ void bch2_dev_usage_update(struct bch_fs *c, struct bch_dev *ca,
308308
fs_usage = fs_usage_ptr(c, journal_seq, gc);
309309

310310
if (data_type_is_hidden(old->data_type))
311-
fs_usage->hidden -= ca->mi.bucket_size;
311+
fs_usage->b.hidden -= ca->mi.bucket_size;
312312
if (data_type_is_hidden(new->data_type))
313-
fs_usage->hidden += ca->mi.bucket_size;
313+
fs_usage->b.hidden += ca->mi.bucket_size;
314314

315315
u = dev_usage_ptr(ca, journal_seq, gc);
316316

@@ -359,7 +359,7 @@ static inline int __update_replicas(struct bch_fs *c,
359359
if (idx < 0)
360360
return -1;
361361

362-
fs_usage_data_type_to_base(fs_usage, r->data_type, sectors);
362+
fs_usage_data_type_to_base(&fs_usage->b, r->data_type, sectors);
363363
fs_usage->replicas[idx] += sectors;
364364
return 0;
365365
}
@@ -394,7 +394,7 @@ int bch2_update_replicas(struct bch_fs *c, struct bkey_s_c k,
394394

395395
preempt_disable();
396396
fs_usage = fs_usage_ptr(c, journal_seq, gc);
397-
fs_usage_data_type_to_base(fs_usage, r->data_type, sectors);
397+
fs_usage_data_type_to_base(&fs_usage->b, r->data_type, sectors);
398398
fs_usage->replicas[idx] += sectors;
399399
preempt_enable();
400400
err:
@@ -677,11 +677,11 @@ void bch2_trans_fs_usage_revert(struct btree_trans *trans,
677677
BUG_ON(__update_replicas(c, dst, &d->r, -d->delta));
678678
}
679679

680-
dst->nr_inodes -= deltas->nr_inodes;
680+
dst->b.nr_inodes -= deltas->nr_inodes;
681681

682682
for (i = 0; i < BCH_REPLICAS_MAX; i++) {
683683
added -= deltas->persistent_reserved[i];
684-
dst->reserved -= deltas->persistent_reserved[i];
684+
dst->b.reserved -= deltas->persistent_reserved[i];
685685
dst->persistent_reserved[i] -= deltas->persistent_reserved[i];
686686
}
687687

@@ -723,11 +723,11 @@ int bch2_trans_fs_usage_apply(struct btree_trans *trans,
723723
goto need_mark;
724724
}
725725

726-
dst->nr_inodes += deltas->nr_inodes;
726+
dst->b.nr_inodes += deltas->nr_inodes;
727727

728728
for (i = 0; i < BCH_REPLICAS_MAX; i++) {
729729
added += deltas->persistent_reserved[i];
730-
dst->reserved += deltas->persistent_reserved[i];
730+
dst->b.reserved += deltas->persistent_reserved[i];
731731
dst->persistent_reserved[i] += deltas->persistent_reserved[i];
732732
}
733733

@@ -1084,7 +1084,7 @@ static int __trigger_reservation(struct btree_trans *trans,
10841084
struct bch_fs_usage *fs_usage = this_cpu_ptr(c->usage_gc);
10851085

10861086
replicas = min(replicas, ARRAY_SIZE(fs_usage->persistent_reserved));
1087-
fs_usage->reserved += sectors;
1087+
fs_usage->b.reserved += sectors;
10881088
fs_usage->persistent_reserved[replicas - 1] += sectors;
10891089

10901090
preempt_enable();

fs/bcachefs/buckets_types.h

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,23 +45,18 @@ struct bch_dev_usage {
4545
} d[BCH_DATA_NR];
4646
};
4747

48-
struct bch_fs_usage {
49-
/* all fields are in units of 512 byte sectors: */
48+
struct bch_fs_usage_base {
5049
u64 hidden;
5150
u64 btree;
5251
u64 data;
5352
u64 cached;
5453
u64 reserved;
5554
u64 nr_inodes;
55+
};
5656

57-
/* XXX: add stats for compression ratio */
58-
#if 0
59-
u64 uncompressed;
60-
u64 compressed;
61-
#endif
62-
63-
/* broken out: */
64-
57+
struct bch_fs_usage {
58+
/* all fields are in units of 512 byte sectors: */
59+
struct bch_fs_usage_base b;
6560
u64 persistent_reserved[BCH_REPLICAS_MAX];
6661
u64 replicas[];
6762
};

fs/bcachefs/inode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ int bch2_trigger_inode(struct btree_trans *trans,
597597
struct bch_fs *c = trans->c;
598598

599599
percpu_down_read(&c->mark_lock);
600-
this_cpu_add(c->usage_gc->nr_inodes, nr);
600+
this_cpu_add(c->usage_gc->b.nr_inodes, nr);
601601
percpu_up_read(&c->mark_lock);
602602
}
603603

fs/bcachefs/recovery.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ static int journal_replay_entry_early(struct bch_fs *c,
280280
le64_to_cpu(u->v);
281281
break;
282282
case BCH_FS_USAGE_inodes:
283-
c->usage_base->nr_inodes = le64_to_cpu(u->v);
283+
c->usage_base->b.nr_inodes = le64_to_cpu(u->v);
284284
break;
285285
case BCH_FS_USAGE_key_version:
286286
atomic64_set(&c->key_version,

fs/bcachefs/sb-clean.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
207207

208208
u->entry.type = BCH_JSET_ENTRY_usage;
209209
u->entry.btree_id = BCH_FS_USAGE_inodes;
210-
u->v = cpu_to_le64(c->usage_base->nr_inodes);
210+
u->v = cpu_to_le64(c->usage_base->b.nr_inodes);
211211
}
212212

213213
{

0 commit comments

Comments
 (0)