bcachefs: expose nocow_lock table in sysfs
authorDaniel Hill <daniel@gluo.nz>
Wed, 7 Dec 2022 05:41:21 +0000 (18:41 +1300)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:51 +0000 (17:09 -0400)
Signed-off-by: Daniel Hill <daniel@gluo.nz>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/sysfs.c

index 20484f67c3bc07af07e89e267f7aa0f40b588302..5b1f792243cd1d522d73bc79566574b5e1b0c75f 100644 (file)
@@ -194,6 +194,7 @@ read_attribute(btree_key_cache);
 read_attribute(stripes_heap);
 read_attribute(open_buckets);
 read_attribute(write_points);
+read_attribute(nocow_lock_table);
 
 #ifdef BCH_WRITE_REF_DEBUG
 read_attribute(write_refs);
@@ -476,6 +477,23 @@ SHOW(bch2_fs)
                bch2_write_refs_to_text(out, c);
 #endif
 
+       if (attr == &sysfs_nocow_lock_table) {
+               int i, count = 1;
+               long last, curr = 0;
+
+               last = atomic_long_read(&c->nocow_locks.l[0].v);
+               for (i = 1; i < BUCKET_NOCOW_LOCKS; i++) {
+                       curr = atomic_long_read(&c->nocow_locks.l[i].v);
+                       if (last != curr) {
+                               prt_printf(out, "%li: %d\n", last, count);
+                               count = 1;
+                               last = curr;
+                       } else
+                               count++;
+               }
+               prt_printf(out, "%li: %d\n", last, count);
+       }
+
        return 0;
 }
 
@@ -662,6 +680,7 @@ struct attribute *bch2_fs_internal_files[] = {
 #ifdef BCH_WRITE_REF_DEBUG
        &sysfs_write_refs,
 #endif
+       &sysfs_nocow_lock_table,
        &sysfs_io_timers_read,
        &sysfs_io_timers_write,