All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josef Bacik <josef@toxicpanda.com>
To: linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: [PATCH 28/31] btrfs: don't clear CTL bits when trying to release extent state
Date: Fri,  2 Sep 2022 16:16:33 -0400	[thread overview]
Message-ID: <ceee5232ba282c91af38ac917430221a6707ecc5.1662149276.git.josef@toxicpanda.com> (raw)
In-Reply-To: <cover.1662149276.git.josef@toxicpanda.com>

When trying to release the extent states due to memory pressure we'll
set all the bits except LOCKED, NODATASUM, and DELALLOC_NEW.  This
includes some of the CTL bits, which isn't really a problem but isn't
correct either.  Exclude the CTL bits from this clearing.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 fs/btrfs/extent_io.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 92244f3370b8..849ecccca53e 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -3389,15 +3389,17 @@ static int try_release_extent_state(struct extent_io_tree *tree,
 	if (test_range_bit(tree, start, end, EXTENT_LOCKED, 0, NULL)) {
 		ret = 0;
 	} else {
+		u32 clear_bits = ~(EXTENT_LOCKED | EXTENT_NODATASUM |
+				   EXTENT_DELALLOC_NEW | EXTENT_CTLBITS);
+
 		/*
 		 * At this point we can safely clear everything except the
 		 * locked bit, the nodatasum bit and the delalloc new bit.
 		 * The delalloc new bit will be cleared by ordered extent
 		 * completion.
 		 */
-		ret = __clear_extent_bit(tree, start, end,
-			 ~(EXTENT_LOCKED | EXTENT_NODATASUM | EXTENT_DELALLOC_NEW),
-			 0, NULL, mask, NULL);
+		ret = __clear_extent_bit(tree, start, end, clear_bits, 0, NULL,
+					 mask, NULL);
 
 		/* if clear_extent_bit failed for enomem reasons,
 		 * we can't allow the release to continue.
-- 
2.26.3


  parent reply	other threads:[~2022-09-02 20:17 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-02 20:16 [PATCH 00/31] btrfs: move extent_io_tree code and cleanups Josef Bacik
2022-09-02 20:16 ` [PATCH 01/31] btrfs: cleanup clean_io_failure Josef Bacik
2022-09-05 12:27   ` Johannes Thumshirn
2022-09-07 18:51   ` David Sterba
2022-09-02 20:16 ` [PATCH 02/31] btrfs: unexport internal failrec functions Josef Bacik
2022-09-02 20:16 ` [PATCH 03/31] btrfs: stop using extent_io_tree for io_failure_record's Josef Bacik
2022-09-07 18:53   ` David Sterba
2022-09-02 20:16 ` [PATCH 04/31] btrfs: use find_first_extent_bit in btrfs_clean_io_failure Josef Bacik
2022-09-02 20:16 ` [PATCH 05/31] btrfs: separate out the extent state and extent buffer init code Josef Bacik
2022-09-02 20:16 ` [PATCH 06/31] btrfs: separate out the eb and extent state leak helpers Josef Bacik
2022-09-02 20:16 ` [PATCH 07/31] btrfs: temporarily export alloc_extent_state helpers Josef Bacik
2022-09-02 20:16 ` [PATCH 08/31] btrfs: move extent state init and alloc functions to their own file Josef Bacik
2022-09-02 20:16 ` [PATCH 09/31] btrfs: convert BUG_ON(EXTENT_BIT_LOCKED) checks to ASSERT's Josef Bacik
2022-09-07 18:57   ` David Sterba
2022-09-02 20:16 ` [PATCH 10/31] btrfs: move simple extent bit helpers out of extent_io.c Josef Bacik
2022-09-02 20:16 ` [PATCH 11/31] btrfs: export wait_extent_bit Josef Bacik
2022-09-02 20:16 ` [PATCH 12/31] btrfs: move the core extent_io_tree code into extent-io-tree.c Josef Bacik
2022-09-03  6:28   ` kernel test robot
2022-09-07 19:03   ` David Sterba
2022-09-02 20:16 ` [PATCH 13/31] btrfs: remove struct tree_entry Josef Bacik
2022-09-02 20:16 ` [PATCH 14/31] btrfs: use next_state instead of rb_next where we can Josef Bacik
2022-09-02 20:16 ` [PATCH 15/31] btrfs: make tree_search return struct extent_state Josef Bacik
2022-09-02 20:16 ` [PATCH 16/31] btrfs: make tree_search_for_insert return extent_state Josef Bacik
2022-09-02 20:16 ` [PATCH 17/31] btrfs: make tree_search_prev_next return extent_state's Josef Bacik
2022-09-02 20:16 ` [PATCH 18/31] btrfs: use next_state/prev_state in merge_state Josef Bacik
2022-09-02 20:16 ` [PATCH 19/31] btrfs: remove temporary exports for extent_state movement Josef Bacik
2022-09-02 20:16 ` [PATCH 20/31] btrfs: move irrelevant prototypes to their appropriate header Josef Bacik
2022-09-02 20:16 ` [PATCH 21/31] btrfs: drop exclusive_bits from set_extent_bit Josef Bacik
2022-09-02 20:16 ` [PATCH 22/31] btrfs: remove the wake argument from clear_extent_bits Josef Bacik
2022-09-02 20:16 ` [PATCH 23/31] btrfs: remove failed_start argument from set_extent_bit Josef Bacik
2022-09-02 20:16 ` [PATCH 24/31] btrfs: drop extent_changeset " Josef Bacik
2022-09-02 20:16 ` [PATCH 25/31] btrfs: unify the lock/unlock extent variants Josef Bacik
2022-09-02 20:16 ` [PATCH 26/31] btrfs: get rid of track_uptodate Josef Bacik
2022-09-07 18:47   ` David Sterba
2022-09-02 20:16 ` [PATCH 27/31] btrfs: get rid of ->dirty_bytes Josef Bacik
2022-09-07 18:48   ` David Sterba
2022-09-02 20:16 ` Josef Bacik [this message]
2022-09-02 20:16 ` [PATCH 29/31] btrfs: replace delete argument with EXTENT_CLEAR_ALL_BITS Josef Bacik
2022-09-02 20:16 ` [PATCH 30/31] btrfs: don't init io tree with private data for non inodes Josef Bacik
2022-09-02 20:16 ` [PATCH 31/31] btrfs: remove is_data_inode() checks in extent-io-tree.c Josef Bacik
2022-09-06 18:30 ` [PATCH 00/31] btrfs: move extent_io_tree code and cleanups David Sterba
2022-09-07 18:42 ` 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=ceee5232ba282c91af38ac917430221a6707ecc5.1662149276.git.josef@toxicpanda.com \
    --to=josef@toxicpanda.com \
    --cc=kernel-team@fb.com \
    --cc=linux-btrfs@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.