]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Move write_points to debugfs
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 22 Jan 2025 17:07:54 +0000 (12:07 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 15 Mar 2025 01:02:11 +0000 (21:02 -0400)
this was hitting the sysfs 4k limit

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/debug.c
fs/bcachefs/sysfs.c

index 55333e82d1fe8f9549e46506b0a50ee1485f428e..03a3b62d19a90f0a596e6e0b5123851207e8fb9c 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "bcachefs.h"
+#include "alloc_foreground.h"
 #include "bkey_methods.h"
 #include "btree_cache.h"
 #include "btree_io.h"
@@ -844,8 +845,11 @@ restart:
        seqmutex_unlock(&c->btree_trans_lock);
 }
 
-static ssize_t bch2_btree_deadlock_read(struct file *file, char __user *buf,
-                                           size_t size, loff_t *ppos)
+typedef void (*fs_to_text_fn)(struct printbuf *, struct bch_fs *);
+
+static ssize_t bch2_simple_print(struct file *file, char __user *buf,
+                                size_t size, loff_t *ppos,
+                                fs_to_text_fn fn)
 {
        struct dump_iter *i = file->private_data;
        struct bch_fs *c = i->c;
@@ -856,7 +860,7 @@ static ssize_t bch2_btree_deadlock_read(struct file *file, char __user *buf,
        i->ret  = 0;
 
        if (!i->iter) {
-               btree_deadlock_to_text(&i->buf, c);
+               fn(&i->buf, c);
                i->iter++;
        }
 
@@ -869,6 +873,12 @@ static ssize_t bch2_btree_deadlock_read(struct file *file, char __user *buf,
        return ret ?: i->ret;
 }
 
+static ssize_t bch2_btree_deadlock_read(struct file *file, char __user *buf,
+                                       size_t size, loff_t *ppos)
+{
+       return bch2_simple_print(file, buf, size, ppos, btree_deadlock_to_text);
+}
+
 static const struct file_operations btree_deadlock_ops = {
        .owner          = THIS_MODULE,
        .open           = bch2_dump_open,
@@ -876,6 +886,19 @@ static const struct file_operations btree_deadlock_ops = {
        .read           = bch2_btree_deadlock_read,
 };
 
+static ssize_t bch2_write_points_read(struct file *file, char __user *buf,
+                                    size_t size, loff_t *ppos)
+{
+       return bch2_simple_print(file, buf, size, ppos, bch2_write_points_to_text);
+}
+
+static const struct file_operations write_points_ops = {
+       .owner          = THIS_MODULE,
+       .open           = bch2_dump_open,
+       .release        = bch2_dump_release,
+       .read           = bch2_write_points_read,
+};
+
 void bch2_fs_debug_exit(struct bch_fs *c)
 {
        if (!IS_ERR_OR_NULL(c->fs_debug_dir))
@@ -927,6 +950,9 @@ void bch2_fs_debug_init(struct bch_fs *c)
        debugfs_create_file("btree_deadlock", 0400, c->fs_debug_dir,
                            c->btree_debug, &btree_deadlock_ops);
 
+       debugfs_create_file("write_points", 0400, c->fs_debug_dir,
+                           c->btree_debug, &write_points_ops);
+
        c->btree_debug_dir = debugfs_create_dir("btrees", c->fs_debug_dir);
        if (IS_ERR_OR_NULL(c->btree_debug_dir))
                return;
index a7eb1f5114847c87146f94c6d19fdfa1d543a1dc..b3f2c651c1f8c31847799ba8b3a7b034c66ded61 100644 (file)
@@ -176,7 +176,6 @@ read_attribute(btree_reserve_cache);
 read_attribute(stripes_heap);
 read_attribute(open_buckets);
 read_attribute(open_buckets_partial);
-read_attribute(write_points);
 read_attribute(nocow_lock_table);
 
 #ifdef BCH_WRITE_REF_DEBUG
@@ -364,9 +363,6 @@ SHOW(bch2_fs)
        if (attr == &sysfs_open_buckets_partial)
                bch2_open_buckets_partial_to_text(out, c);
 
-       if (attr == &sysfs_write_points)
-               bch2_write_points_to_text(out, c);
-
        if (attr == &sysfs_compression_stats)
                bch2_compression_stats_to_text(out, c);
 
@@ -569,7 +565,6 @@ struct attribute *bch2_fs_internal_files[] = {
        &sysfs_stripes_heap,
        &sysfs_open_buckets,
        &sysfs_open_buckets_partial,
-       &sysfs_write_points,
 #ifdef BCH_WRITE_REF_DEBUG
        &sysfs_write_refs,
 #endif