All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Thumshirn <jth@kernel.org>
To: Chris Mason <clm@fb.com>, Josef Bacik <josef@toxicpanda.com>,
	 David Sterba <dsterba@suse.com>
Cc: linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org,
	 Hans Holmberg <Hans.Holmberg@wdc.com>,
	Naohiro Aota <Naohiro.Aota@wdc.com>,
	 hch@lst.de, Damien LeMoal <dlemoal@kernel.org>,
	Boris Burkov <boris@bur.io>,
	 Johannes Thumshirn <johannes.thumshirn@wdc.com>
Subject: [PATCH RFC PATCH 3/3] btrfs: zoned: kick cleaner kthread if low on space
Date: Thu, 28 Mar 2024 14:56:33 +0100	[thread overview]
Message-ID: <20240328-hans-v1-3-4cd558959407@kernel.org> (raw)
In-Reply-To: <20240328-hans-v1-0-4cd558959407@kernel.org>

From: Johannes Thumshirn <johannes.thumshirn@wdc.com>

Kick the cleaner kthread on chunk allocation if we're slowly running out
of usable space on a zoned filesystem.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
---
 fs/btrfs/zoned.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
index fb8707f4cab5..25c1a17873db 100644
--- a/fs/btrfs/zoned.c
+++ b/fs/btrfs/zoned.c
@@ -1040,6 +1040,7 @@ int btrfs_reset_sb_log_zones(struct block_device *bdev, int mirror)
 u64 btrfs_find_allocatable_zones(struct btrfs_device *device, u64 hole_start,
 				 u64 hole_end, u64 num_bytes)
 {
+	struct btrfs_fs_info *fs_info = device->fs_info;
 	struct btrfs_zoned_device_info *zinfo = device->zone_info;
 	const u8 shift = zinfo->zone_size_shift;
 	u64 nzones = num_bytes >> shift;
@@ -1051,6 +1052,11 @@ u64 btrfs_find_allocatable_zones(struct btrfs_device *device, u64 hole_start,
 	ASSERT(IS_ALIGNED(hole_start, zinfo->zone_size));
 	ASSERT(IS_ALIGNED(num_bytes, zinfo->zone_size));
 
+	if (!test_bit(BTRFS_FS_CLEANER_RUNNING, &fs_info->flags) &&
+	    btrfs_zoned_should_reclaim(fs_info)) {
+		wake_up_process(fs_info->cleaner_kthread);
+	}
+
 	while (pos < hole_end) {
 		begin = pos >> shift;
 		end = begin + nzones;

-- 
2.35.3


  parent reply	other threads:[~2024-03-28 13:56 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-28 13:56 [PATCH RFC 0/3] btrfs: zoned: reclaim block-groups more aggressively Johannes Thumshirn
2024-03-28 13:56 ` [PATCH RFC PATCH 1/3] btrfs: zoned: traverse device list in should reclaim under rcu_read_lock Johannes Thumshirn
2024-04-04 19:35   ` David Sterba
2024-03-28 13:56 ` [PATCH RFC PATCH 2/3] btrfs: zoned: reserve relocation zone on mount Johannes Thumshirn
2024-03-28 23:05   ` Damien Le Moal
2024-04-02  6:03     ` Naohiro Aota
2024-04-02 17:04       ` Boris Burkov
2024-04-05  5:03         ` Naohiro Aota
2024-04-05  1:14   ` Naohiro Aota
2024-03-28 13:56 ` Johannes Thumshirn [this message]
2024-03-28 23:06   ` [PATCH RFC PATCH 3/3] btrfs: zoned: kick cleaner kthread if low on space Damien Le Moal
2024-04-02 17:09   ` Boris Burkov
2024-04-04 19:45   ` David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240328-hans-v1-3-4cd558959407@kernel.org \
    --to=jth@kernel.org \
    --cc=Hans.Holmberg@wdc.com \
    --cc=Naohiro.Aota@wdc.com \
    --cc=boris@bur.io \
    --cc=clm@fb.com \
    --cc=dlemoal@kernel.org \
    --cc=dsterba@suse.com \
    --cc=hch@lst.de \
    --cc=johannes.thumshirn@wdc.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.