public inbox for linux-cifs@vger.kernel.org
 help / color / mirror / Atom feed
From: huiwen.he@linux.dev
To: smfrench@gmail.com, linkinjeon@kernel.org, dhowells@redhat.com,
	chenxiaosong@kylinos.cn, chenxiaosong@chenxiaosong.com,
	tangyouling@kylinos.cn
Cc: linux-cifs@vger.kernel.org
Subject: [PATCH v3 13/13] smb/client: introduce KUnit tests to check DOS/SRV err mapping search
Date: Thu,  2 Apr 2026 14:18:39 +0000	[thread overview]
Message-ID: <20260402141839.461257-14-huiwen.he@linux.dev> (raw)
In-Reply-To: <20260402141839.461257-1-huiwen.he@linux.dev>

From: Youling Tang <tangyouling@kylinos.cn>

Check whether all elements can be correctly found in the arrays.

Signed-off-by: Youling Tang <tangyouling@kylinos.cn>
Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
 fs/smb/client/smb1maperror.c      | 33 ++++++++++++++++++++++++++-----
 fs/smb/client/smb1maperror_test.c | 22 +++++++++++++++++++++
 fs/smb/client/smb1proto.h         |  4 ++++
 fs/smb/client/smberr.h            |  5 +++++
 4 files changed, 59 insertions(+), 5 deletions(-)

diff --git a/fs/smb/client/smb1maperror.c b/fs/smb/client/smb1maperror.c
index bca9b60ac836..74530088d17d 100644
--- a/fs/smb/client/smb1maperror.c
+++ b/fs/smb/client/smb1maperror.c
@@ -16,11 +16,6 @@
 #include "nterr.h"
 #include "cifs_debug.h"
 
-struct smb_to_posix_error {
-	__u16 smb_err;
-	int posix_code;
-};
-
 static __always_inline int smb1_posix_error_cmp(const void *_key, const void *_pivot)
 {
 	__u16 key = *(__u16 *)_key;
@@ -260,4 +255,32 @@ EXPORT_SYMBOL_FOR_SMB_TEST(ntstatus_to_dos_map_test);
 
 unsigned int ntstatus_to_dos_num = ARRAY_SIZE(ntstatus_to_dos_map);
 EXPORT_SYMBOL_FOR_SMB_TEST(ntstatus_to_dos_num);
+
+const struct smb_to_posix_error *
+search_mapping_table_ERRDOS_test(__u16 smb_err)
+{
+	return search_mapping_table_ERRDOS(smb_err);
+}
+EXPORT_SYMBOL_FOR_SMB_TEST(search_mapping_table_ERRDOS_test);
+
+const struct smb_to_posix_error *
+mapping_table_ERRDOS_test = mapping_table_ERRDOS;
+EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRDOS_test);
+
+unsigned int mapping_table_ERRDOS_num = ARRAY_SIZE(mapping_table_ERRDOS);
+EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRDOS_num);
+
+const struct smb_to_posix_error *
+search_mapping_table_ERRSRV_test(__u16 smb_err)
+{
+	return search_mapping_table_ERRSRV(smb_err);
+}
+EXPORT_SYMBOL_FOR_SMB_TEST(search_mapping_table_ERRSRV_test);
+
+const struct smb_to_posix_error *
+mapping_table_ERRSRV_test = mapping_table_ERRSRV;
+EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRSRV_test);
+
+unsigned int mapping_table_ERRSRV_num = ARRAY_SIZE(mapping_table_ERRSRV);
+EXPORT_SYMBOL_FOR_SMB_TEST(mapping_table_ERRSRV_num);
 #endif
diff --git a/fs/smb/client/smb1maperror_test.c b/fs/smb/client/smb1maperror_test.c
index b38857dc388c..935142dfdcb0 100644
--- a/fs/smb/client/smb1maperror_test.c
+++ b/fs/smb/client/smb1maperror_test.c
@@ -12,9 +12,14 @@
 #include <kunit/test.h>
 #include "smb1proto.h"
 #include "nterr.h"
+#include "smberr.h"
 
 extern const struct ntstatus_to_dos_err *ntstatus_to_dos_map_test;
 extern unsigned int ntstatus_to_dos_num;
+extern const struct smb_to_posix_error *mapping_table_ERRDOS_test;
+extern unsigned int mapping_table_ERRDOS_num;
+extern const struct smb_to_posix_error *mapping_table_ERRSRV_test;
+extern unsigned int mapping_table_ERRSRV_num;
 
 #define DEFINE_CHECK_SEARCH_FUNC(__struct_name, __field,		\
 				 __array, __num)			\
@@ -42,12 +47,29 @@ test_cmp_ntstatus_to_dos_err(struct kunit *test,
 	KUNIT_EXPECT_STREQ(test, expect->nt_errstr, result->nt_errstr);
 }
 
+static void
+test_cmp_smb_to_posix_error(struct kunit *test,
+			    const struct smb_to_posix_error *expect,
+			    const struct smb_to_posix_error *result)
+{
+	KUNIT_EXPECT_EQ(test, expect->smb_err, result->smb_err);
+	KUNIT_EXPECT_EQ(test, expect->posix_code, result->posix_code);
+}
+
 /* check_search_ntstatus_to_dos_map */
 DEFINE_CHECK_SEARCH_FUNC(ntstatus_to_dos_err, ntstatus, ntstatus_to_dos_map,
 			 ntstatus_to_dos_num);
+/* check_search_mapping_table_ERRDOS */
+DEFINE_CHECK_SEARCH_FUNC(smb_to_posix_error, smb_err, mapping_table_ERRDOS,
+			 mapping_table_ERRDOS_num);
+/* check_search_mapping_table_ERRSRV */
+DEFINE_CHECK_SEARCH_FUNC(smb_to_posix_error, smb_err, mapping_table_ERRSRV,
+			 mapping_table_ERRSRV_num);
 
 static struct kunit_case maperror_test_cases[] = {
 	KUNIT_CASE(check_search_ntstatus_to_dos_map),
+	KUNIT_CASE(check_search_mapping_table_ERRDOS),
+	KUNIT_CASE(check_search_mapping_table_ERRSRV),
 	{}
 };
 
diff --git a/fs/smb/client/smb1proto.h b/fs/smb/client/smb1proto.h
index 43b773e7964b..7d5da03111c1 100644
--- a/fs/smb/client/smb1proto.h
+++ b/fs/smb/client/smb1proto.h
@@ -240,6 +240,10 @@ int map_and_check_smb_error(struct TCP_Server_Info *server,
 #if IS_ENABLED(CONFIG_SMB1_KUNIT_TESTS)
 const struct ntstatus_to_dos_err *
 search_ntstatus_to_dos_map_test(__u32 ntstatus);
+const struct smb_to_posix_error *
+search_mapping_table_ERRDOS_test(__u16 smb_err);
+const struct smb_to_posix_error *
+search_mapping_table_ERRSRV_test(__u16 smb_err);
 #endif
 
 /*
diff --git a/fs/smb/client/smberr.h b/fs/smb/client/smberr.h
index 4ec2c5ffae25..5c3415bf18d7 100644
--- a/fs/smb/client/smberr.h
+++ b/fs/smb/client/smberr.h
@@ -9,6 +9,11 @@
  *
  */
 
+struct smb_to_posix_error {
+	__u16 smb_err;
+	int posix_code;
+};
+
 /* The request was successful. */
 #define SUCCESS	0x00
 /* Error is from the core DOS operating system set */
-- 
2.53.0


      parent reply	other threads:[~2026-04-02 14:20 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-02 14:18 [PATCH v3 00/13] smb: improve search speed of SMB1 maperror huiwen.he
2026-04-02 14:18 ` [PATCH v3 01/13] smb/client: annotate nterr.h with DOS error codes huiwen.he
2026-04-02 22:35   ` Steve French
2026-04-02 14:18 ` [PATCH v3 02/13] smb/client: autogenerate SMB1 NT status to DOS error mapping huiwen.he
2026-04-02 14:18 ` [PATCH v3 03/13] smb/client: replace nt_errs with ntstatus_to_dos_map huiwen.he
2026-04-02 14:18 ` [PATCH v3 04/13] smb/client: refactor ntstatus_to_dos() to return mapping entry huiwen.he
2026-04-02 14:18 ` [PATCH v3 05/13] smb/client: use binary search for NT status to DOS mapping huiwen.he
2026-04-02 14:18 ` [PATCH v3 06/13] smb/client: check if ntstatus_to_dos_map is sorted huiwen.he
2026-04-02 14:18 ` [PATCH v3 07/13] smb/client: introduce KUnit test to check ntstatus_to_dos_map search huiwen.he
2026-04-02 14:18 ` [PATCH v3 08/13] smb/client: move ERRnetlogonNotStarted to DOS error class huiwen.he
2026-04-02 14:18 ` [PATCH v3 09/13] smb/client: annotate smberr.h with POSIX error codes huiwen.he
2026-04-02 14:18 ` [PATCH v3 10/13] smb/client: autogenerate SMB1 DOS/SRV to POSIX error mapping huiwen.he
2026-04-02 14:18 ` [PATCH v3 11/13] smb/client: use binary search for SMB1 DOS/SRV " huiwen.he
2026-04-02 14:18 ` [PATCH v3 12/13] smb/client: check if SMB1 DOS/SRV error mapping arrays are sorted huiwen.he
2026-04-02 14:18 ` huiwen.he [this message]

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=20260402141839.461257-14-huiwen.he@linux.dev \
    --to=huiwen.he@linux.dev \
    --cc=chenxiaosong@chenxiaosong.com \
    --cc=chenxiaosong@kylinos.cn \
    --cc=dhowells@redhat.com \
    --cc=linkinjeon@kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=smfrench@gmail.com \
    --cc=tangyouling@kylinos.cn \
    /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