linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC] btrfs: sysfs: introduce <uuid>/debug/cleaner_trigger
@ 2022-01-21  7:13 Qu Wenruo
  0 siblings, 0 replies; only message in thread
From: Qu Wenruo @ 2022-01-21  7:13 UTC (permalink / raw)
  To: linux-btrfs

Since there is no existing quick way to trigger cleaner to do
cleanup/autodefrag, here we introduce a new sysfs file at:

  /sys/fs/btrfs/<uuid>/debug/cleaner_trigger

Any write into that file will wake up cleaner_kthread.

This allows us to have a fast and relieable way to trigger cleaner to
test autodefrag.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
There seems to be no way to initiate the cleaner thread to run.

With this patch and previous io_accounting patch, I can now trigger an
autodefrag run and compare io_accounting to get how many bytes are
re-written (aka, defragged).

Although so far I still can't craft a minimal script to trigger more IO
than expected.
---
 fs/btrfs/sysfs.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index dfdef93bdeab..a20e6bd82d8d 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -577,6 +577,17 @@ static ssize_t btrfs_discard_max_discard_size_store(struct kobject *kobj,
 BTRFS_ATTR_RW(discard, max_discard_size, btrfs_discard_max_discard_size_show,
 	      btrfs_discard_max_discard_size_store);
 
+static ssize_t wake_up_cleaner(struct kobject *kobj, struct kobj_attribute *a,
+			       const char *buf, size_t count)
+{
+	struct btrfs_fs_info *fs_info = to_fs_info(kobj->parent);
+
+	wake_up_process(fs_info->cleaner_kthread);
+	return count;
+}
+
+BTRFS_ATTR_RW(debug_mount, cleaner_trigger, NULL, wake_up_cleaner);
+
 /*
  * Per-filesystem debugging of discard (when mounted with discard=async).
  *
@@ -600,6 +611,7 @@ static const struct attribute *discard_debug_attrs[] = {
  * Path: /sys/fs/btrfs/UUID/debug/
  */
 static const struct attribute *btrfs_debug_mount_attrs[] = {
+	BTRFS_ATTR_PTR(debug_mount, cleaner_trigger),
 	NULL,
 };
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-01-21  7:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-21  7:13 [PATCH RFC] btrfs: sysfs: introduce <uuid>/debug/cleaner_trigger Qu Wenruo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).