public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Levi Yun <ppbuk5246@gmail.com>
To: akpm@linux-foundation.org, yury.norov@gmail.com,
	andriy.shevchenko@linux.intel.com,
	richard.weiyang@linux.alibaba.com, christian.brauner@ubuntu.com,
	arnd@arndb.de, jpoimboe@redhat.com, changbin.du@intel.com,
	rdunlap@infradead.org, masahiroy@kernel.org,
	gregkh@linuxfoundation.org, peterz@infradead.org,
	peter.enderborg@sony.com, krzk@kernel.org,
	brendanhiggins@google.com, keescook@chromium.org,
	broonie@kernel.org, matti.vaittinen@fi.rohmeurope.com,
	mhiramat@kernel.org, jpa@git.mail.kapsi.fi,
	nivedita@alum.mit.edu, glider@google.com, orson.zhai@unisoc.com,
	takahiro.akashi@linaro.org, clm@fb.com, josef@toxicpanda.com,
	dsterba@suse.com, dushistov@mail.ru
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-btrfs@vger.kernel.org
Subject: [PATCH v2 7/8] btrfs/free-space-cache.c: Apply find_last_zero_bit
Date: Sun, 6 Dec 2020 15:50:04 +0900	[thread overview]
Message-ID: <20201206065004.GA6321@ubuntu> (raw)

In steal_from_bitmap_to_front function, it finds last_zero_bit from i
using for_each_clear_bit.
But this makes some overhead that it starts from the 0 bit.
By adding find_last_zero_bit, I try to remove this overhead and
improve readibility.

Signed-off-by: Levi Yun <ppbuk5246@gmail.com>
---
 fs/btrfs/free-space-cache.c | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index af0013d3df63..6d393c834fdd 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -2372,7 +2372,6 @@ static bool steal_from_bitmap_to_front(struct btrfs_free_space_ctl *ctl,
 	u64 bitmap_offset;
 	unsigned long i;
 	unsigned long j;
-	unsigned long prev_j;
 	u64 bytes;
 
 	bitmap_offset = offset_to_bitmap(ctl, info->offset);
@@ -2388,20 +2387,15 @@ static bool steal_from_bitmap_to_front(struct btrfs_free_space_ctl *ctl,
 		return false;
 
 	i = offset_to_bit(bitmap->offset, ctl->unit, info->offset) - 1;
-	j = 0;
-	prev_j = (unsigned long)-1;
-	for_each_clear_bit_from(j, bitmap->bitmap, BITS_PER_BITMAP) {
-		if (j > i)
-			break;
-		prev_j = j;
-	}
-	if (prev_j == i)
-		return false;
+	j = find_last_zero_bit(bitmap->bitmap, i);
 
-	if (prev_j == (unsigned long)-1)
-		bytes = (i + 1) * ctl->unit;
-	else
-		bytes = (i - prev_j) * ctl->unit;
+	if (j == i) {
+		if (!test_bit(i, bitmap->bitmap))
+			return false;
+		else
+			bytes = (i + 1) * ctl->unit;
+	} else
+		bytes = (i - j) * ctl->unit;
 
 	info->offset -= bytes;
 	info->bytes += bytes;
-- 
2.27.0

                 reply	other threads:[~2020-12-06  6:50 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20201206065004.GA6321@ubuntu \
    --to=ppbuk5246@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=brendanhiggins@google.com \
    --cc=broonie@kernel.org \
    --cc=changbin.du@intel.com \
    --cc=christian.brauner@ubuntu.com \
    --cc=clm@fb.com \
    --cc=dsterba@suse.com \
    --cc=dushistov@mail.ru \
    --cc=glider@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=josef@toxicpanda.com \
    --cc=jpa@git.mail.kapsi.fi \
    --cc=jpoimboe@redhat.com \
    --cc=keescook@chromium.org \
    --cc=krzk@kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=matti.vaittinen@fi.rohmeurope.com \
    --cc=mhiramat@kernel.org \
    --cc=nivedita@alum.mit.edu \
    --cc=orson.zhai@unisoc.com \
    --cc=peter.enderborg@sony.com \
    --cc=peterz@infradead.org \
    --cc=rdunlap@infradead.org \
    --cc=richard.weiyang@linux.alibaba.com \
    --cc=takahiro.akashi@linaro.org \
    --cc=yury.norov@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox