All of lore.kernel.org
 help / color / mirror / Atom feed
From: George Hu <integral@archlinux.org>
To: David Sterba <dsterba@suse.com>, Chris Mason <mason@kernel.org>
Cc: linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org,
	George Hu <integral@archlinux.org>
Subject: [PATCH] btrfs: use helper functions to check if a string has a given prefix
Date: Sat, 26 Sep 2026 18:36:51 +0800	[thread overview]
Message-ID: <20260926103651.41722-1-integral@archlinux.org> (raw)

Replace strncmp() prefix checks with strstarts() when only a boolean result
is needed, and with str_has_prefix() when the prefix length is needed after
a successful match.

This makes prefix checks clearer and more concise.

Signed-off-by: George Hu <integral@archlinux.org>
---
 fs/btrfs/compression.c | 15 ++++-----------
 fs/btrfs/compression.h |  2 +-
 fs/btrfs/props.c       |  2 +-
 fs/btrfs/super.c       |  5 ++---
 fs/btrfs/xattr.c       |  3 +--
 5 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index c62b5148d5ac..82d0413e6236 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -70,19 +70,12 @@ static struct compressed_bio *alloc_compressed_bio(struct btrfs_inode *inode,
 	return to_compressed_bio(bbio);
 }
 
-bool btrfs_compress_is_valid_type(const char *str, size_t len)
+bool btrfs_compress_is_valid_type(const char *str)
 {
-	int i;
-
-	for (i = 1; i < ARRAY_SIZE(btrfs_compress_types); i++) {
-		size_t comp_len = strlen(btrfs_compress_types[i]);
-
-		if (len < comp_len)
-			continue;
-
-		if (!strncmp(btrfs_compress_types[i], str, comp_len))
+	for (int i = 1; i < ARRAY_SIZE(btrfs_compress_types); i++)
+		if (strstarts(str, btrfs_compress_types[i]))
 			return true;
-	}
+
 	return false;
 }
 
diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h
index 1022dc53ec51..1d8e12fcd488 100644
--- a/fs/btrfs/compression.h
+++ b/fs/btrfs/compression.h
@@ -131,7 +131,7 @@ extern const struct btrfs_compress_levels btrfs_lzo_compress;
 extern const struct btrfs_compress_levels btrfs_zstd_compress;
 
 const char* btrfs_compress_type2str(enum btrfs_compression_type type);
-bool btrfs_compress_is_valid_type(const char *str, size_t len);
+bool btrfs_compress_is_valid_type(const char *str);
 
 int btrfs_compress_heuristic(struct btrfs_inode *inode, u64 start, u64 end);
 
diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index bb77d46376d4..c33930c58802 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -301,7 +301,7 @@ static int prop_compression_validate(const struct btrfs_inode *inode,
 	if (!value)
 		return 0;
 
-	if (btrfs_compress_is_valid_type(value, len))
+	if (btrfs_compress_is_valid_type(value))
 		return 0;
 
 	if ((len == 2 && strncmp("no", value, 2) == 0) ||
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index ddb620ac241b..287cdc45bef8 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -263,10 +263,9 @@ static const struct fs_parameter_spec btrfs_fs_parameters[] = {
 
 static bool btrfs_match_compress_type(const char *string, const char *type, bool may_have_level)
 {
-	const int len = strlen(type);
+	const size_t len = str_has_prefix(string, type);
 
-	return (strncmp(string, type, len) == 0) &&
-		((may_have_level && string[len] == ':') || string[len] == '\0');
+	return len && ((may_have_level && string[len] == ':') || string[len] == '\0');
 }
 
 static int btrfs_parse_compress(struct btrfs_fs_context *ctx,
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
index ab55d10bd71f..9011d8096e2d 100644
--- a/fs/btrfs/xattr.c
+++ b/fs/btrfs/xattr.c
@@ -239,8 +239,7 @@ int btrfs_setxattr_trans(struct inode *inode, const char *name,
 		 * block_rsv of the handle and trigger a warning for the start
 		 * case.
 		 */
-		ASSERT(strncmp(name, XATTR_SECURITY_PREFIX,
-			       XATTR_SECURITY_PREFIX_LEN) == 0);
+		ASSERT(strstarts(name, XATTR_SECURITY_PREFIX));
 		trans = current->journal_info;
 	}
 
-- 
2.55.0


             reply	other threads:[~2026-09-26 10:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-26 10:36 George Hu [this message]
2026-09-26 11:03 ` [PATCH] btrfs: use helper functions to check if a string has a given prefix Qu Wenruo
2026-09-26 12:22   ` [PATCH v2] btrfs: use strstarts() and str_has_prefix() for prefix checks George Hu
2026-09-26 21:22     ` Qu Wenruo

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=20260926103651.41722-1-integral@archlinux.org \
    --to=integral@archlinux.org \
    --cc=dsterba@suse.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mason@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.