2525#include "ec.h"
2626#include "inode.h"
2727#include "journal.h"
28+ #include "journal_reclaim.h"
2829#include "keylist.h"
2930#include "move.h"
3031#include "movinggc.h"
@@ -138,6 +139,7 @@ do { \
138139write_attribute (trigger_gc );
139140write_attribute (trigger_discards );
140141write_attribute (trigger_invalidates );
142+ write_attribute (trigger_journal_flush );
141143write_attribute (prune_cache );
142144write_attribute (btree_wakeup );
143145rw_attribute (btree_gc_periodic );
@@ -500,7 +502,7 @@ STORE(bch2_fs)
500502
501503 /* Debugging: */
502504
503- if (!test_bit ( BCH_FS_rw , & c -> flags ))
505+ if (!bch2_write_ref_tryget ( c , BCH_WRITE_REF_sysfs ))
504506 return - EROFS ;
505507
506508 if (attr == & sysfs_prune_cache ) {
@@ -533,6 +535,11 @@ STORE(bch2_fs)
533535 if (attr == & sysfs_trigger_invalidates )
534536 bch2_do_invalidates (c );
535537
538+ if (attr == & sysfs_trigger_journal_flush ) {
539+ bch2_journal_flush_all_pins (& c -> journal );
540+ bch2_journal_meta (& c -> journal );
541+ }
542+
536543#ifdef CONFIG_BCACHEFS_TESTS
537544 if (attr == & sysfs_perf_test ) {
538545 char * tmp = kstrdup (buf , GFP_KERNEL ), * p = tmp ;
@@ -553,6 +560,7 @@ STORE(bch2_fs)
553560 size = ret ;
554561 }
555562#endif
563+ bch2_write_ref_put (c , BCH_WRITE_REF_sysfs );
556564 return size ;
557565}
558566SYSFS_OPS (bch2_fs );
@@ -651,6 +659,7 @@ struct attribute *bch2_fs_internal_files[] = {
651659 & sysfs_trigger_gc ,
652660 & sysfs_trigger_discards ,
653661 & sysfs_trigger_invalidates ,
662+ & sysfs_trigger_journal_flush ,
654663 & sysfs_prune_cache ,
655664 & sysfs_btree_wakeup ,
656665
0 commit comments