]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/sysfs.c
Update bcachefs sources to 313b24b652 bcachefs: Fix an assertion
[bcachefs-tools-debian] / libbcachefs / sysfs.c
index d7ad293aff4dfd7cb77c3dd228a44a17639f6790..4fc5777ecfb09d8959db36a0fa3c60719b2ddd13 100644 (file)
@@ -165,6 +165,7 @@ read_attribute(journal_debug);
 read_attribute(journal_pins);
 read_attribute(btree_updates);
 read_attribute(dirty_btree_nodes);
+read_attribute(btree_cache);
 read_attribute(btree_key_cache);
 read_attribute(btree_transactions);
 read_attribute(stripes_heap);
@@ -374,6 +375,11 @@ SHOW(bch2_fs)
                return out.pos - buf;
        }
 
+       if (attr == &sysfs_btree_cache) {
+               bch2_btree_cache_to_text(&out, c);
+               return out.pos - buf;
+       }
+
        if (attr == &sysfs_btree_key_cache) {
                bch2_btree_key_cache_to_text(&out, &c->btree_key_cache);
                return out.pos - buf;
@@ -458,7 +464,7 @@ STORE(bch2_fs)
        /* Debugging: */
 
        if (attr == &sysfs_trigger_journal_flush)
-               bch2_journal_meta_async(&c->journal, NULL);
+               bch2_journal_meta(&c->journal);
 
        if (attr == &sysfs_trigger_btree_coalesce)
                bch2_coalesce(c);
@@ -497,10 +503,11 @@ STORE(bch2_fs)
                if (threads_str &&
                    !(ret = kstrtouint(threads_str, 10, &threads)) &&
                    !(ret = bch2_strtoull_h(nr_str, &nr)))
-                       bch2_btree_perf_test(c, test, nr, threads);
-               else
-                       size = ret;
+                       ret = bch2_btree_perf_test(c, test, nr, threads);
                kfree(tmp);
+
+               if (ret)
+                       size = ret;
        }
 #endif
        return size;
@@ -550,6 +557,7 @@ struct attribute *bch2_fs_internal_files[] = {
        &sysfs_journal_pins,
        &sysfs_btree_updates,
        &sysfs_dirty_btree_nodes,
+       &sysfs_btree_cache,
        &sysfs_btree_key_cache,
        &sysfs_btree_transactions,
        &sysfs_stripes_heap,
@@ -789,63 +797,42 @@ static void dev_alloc_debug_to_text(struct printbuf *out, struct bch_dev *ca)
                nr[c->open_buckets[i].type]++;
 
        pr_buf(out,
-               "free_inc:               %zu/%zu\n"
-               "free[RESERVE_BTREE]:    %zu/%zu\n"
-               "free[RESERVE_MOVINGGC]: %zu/%zu\n"
-               "free[RESERVE_NONE]:     %zu/%zu\n"
-               "buckets:\n"
-               "    capacity:           %llu\n"
-               "    alloc:              %llu\n"
-               "    sb:                 %llu\n"
-               "    journal:            %llu\n"
-               "    meta:               %llu\n"
-               "    user:               %llu\n"
-               "    cached:             %llu\n"
-               "    erasure coded:      %llu\n"
-               "    available:          %lli\n"
-               "sectors:\n"
-               "    sb:                 %llu\n"
-               "    journal:            %llu\n"
-               "    meta:               %llu\n"
-               "    user:               %llu\n"
-               "    cached:             %llu\n"
-               "    erasure coded:      %llu\n"
-               "    fragmented:         %llu\n"
-               "    copygc threshold:   %llu\n"
-               "freelist_wait:          %s\n"
-               "open buckets:           %u/%u (reserved %u)\n"
-               "open_buckets_wait:      %s\n"
-               "open_buckets_btree:     %u\n"
-               "open_buckets_user:      %u\n"
-               "btree reserve cache:    %u\n",
-               fifo_used(&ca->free_inc),               ca->free_inc.size,
-               fifo_used(&ca->free[RESERVE_BTREE]),    ca->free[RESERVE_BTREE].size,
-               fifo_used(&ca->free[RESERVE_MOVINGGC]), ca->free[RESERVE_MOVINGGC].size,
-               fifo_used(&ca->free[RESERVE_NONE]),     ca->free[RESERVE_NONE].size,
-               ca->mi.nbuckets - ca->mi.first_bucket,
-               stats.buckets_alloc,
-               stats.buckets[BCH_DATA_sb],
-               stats.buckets[BCH_DATA_journal],
-               stats.buckets[BCH_DATA_btree],
-               stats.buckets[BCH_DATA_user],
-               stats.buckets[BCH_DATA_cached],
-               stats.buckets_ec,
-               __dev_buckets_available(ca, stats),
-               stats.sectors[BCH_DATA_sb],
-               stats.sectors[BCH_DATA_journal],
-               stats.sectors[BCH_DATA_btree],
-               stats.sectors[BCH_DATA_user],
-               stats.sectors[BCH_DATA_cached],
-               stats.sectors_ec,
-               stats.sectors_fragmented,
-               c->copygc_threshold,
-               c->freelist_wait.list.first             ? "waiting" : "empty",
-               c->open_buckets_nr_free, OPEN_BUCKETS_COUNT,
-               BTREE_NODE_OPEN_BUCKET_RESERVE,
-               c->open_buckets_wait.list.first         ? "waiting" : "empty",
-               nr[BCH_DATA_btree],
-               nr[BCH_DATA_user],
-               c->btree_reserve_cache_nr);
+              "\t\t buckets\t sectors      fragmented\n"
+              "capacity%16llu\n",
+              ca->mi.nbuckets - ca->mi.first_bucket);
+
+       for (i = 1; i < BCH_DATA_NR; i++)
+               pr_buf(out, "%-8s%16llu%16llu%16llu\n",
+                      bch2_data_types[i], stats.d[i].buckets,
+                      stats.d[i].sectors, stats.d[i].fragmented);
+
+       pr_buf(out,
+              "ec\t%16llu\n"
+              "available%15llu\n"
+              "alloc\t%16llu\n"
+              "\n"
+              "free_inc\t\t%zu/%zu\n"
+              "free[RESERVE_MOVINGGC]\t%zu/%zu\n"
+              "free[RESERVE_NONE]\t%zu/%zu\n"
+              "freelist_wait\t\t%s\n"
+              "open buckets\t\t%u/%u (reserved %u)\n"
+              "open_buckets_wait\t%s\n"
+              "open_buckets_btree\t%u\n"
+              "open_buckets_user\t%u\n"
+              "btree reserve cache\t%u\n",
+              stats.buckets_ec,
+              __dev_buckets_available(ca, stats),
+              stats.buckets_alloc,
+              fifo_used(&ca->free_inc),                ca->free_inc.size,
+              fifo_used(&ca->free[RESERVE_MOVINGGC]),  ca->free[RESERVE_MOVINGGC].size,
+              fifo_used(&ca->free[RESERVE_NONE]),      ca->free[RESERVE_NONE].size,
+              c->freelist_wait.list.first              ? "waiting" : "empty",
+              c->open_buckets_nr_free, OPEN_BUCKETS_COUNT,
+              BTREE_NODE_OPEN_BUCKET_RESERVE,
+              c->open_buckets_wait.list.first          ? "waiting" : "empty",
+              nr[BCH_DATA_btree],
+              nr[BCH_DATA_user],
+              c->btree_reserve_cache_nr);
 }
 
 static const char * const bch2_rw[] = {