linux-cifs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: chenxiaosong.chenxiaosong@linux.dev
To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org,
	linkinjeon@samba.org
Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org,
	liuzhengyuan@kylinos.cn, huhai@kylinos.cn, liuyun01@kylinos.cn,
	ChenXiaoSong <chenxiaosong@kylinos.cn>
Subject: [PATCH v4 07/10] smb/client: introduce smb2_get_err_map()
Date: Sat,  6 Dec 2025 23:18:23 +0800	[thread overview]
Message-ID: <20251206151826.2932970-8-chenxiaosong.chenxiaosong@linux.dev> (raw)
In-Reply-To: <20251206151826.2932970-1-chenxiaosong.chenxiaosong@linux.dev>

From: ChenXiaoSong <chenxiaosong@kylinos.cn>

We may need to get struct status_to_posix_error information in other files
in the future. So we move struct status_to_posix_error to smb2glob.h, and
introduce new global function smb2_get_err_map().

Additionally, delete unused forward declaration `struct statfs`
in smb2proto.h.

Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
 fs/smb/client/smb2glob.h     |  6 ++++++
 fs/smb/client/smb2maperror.c | 28 +++++++++++++++-------------
 fs/smb/client/smb2proto.h    |  3 ++-
 3 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/fs/smb/client/smb2glob.h b/fs/smb/client/smb2glob.h
index e56e4d402f13..fe6a5c7f01c4 100644
--- a/fs/smb/client/smb2glob.h
+++ b/fs/smb/client/smb2glob.h
@@ -13,6 +13,12 @@
 #ifndef _SMB2_GLOB_H
 #define _SMB2_GLOB_H
 
+struct status_to_posix_error {
+	__le32 smb2_status;
+	int posix_error;
+	char *status_string;
+};
+
 /*
  *****************************************************************
  * Constants go here
diff --git a/fs/smb/client/smb2maperror.c b/fs/smb/client/smb2maperror.c
index df8db12ff7a9..0d46fa98952c 100644
--- a/fs/smb/client/smb2maperror.c
+++ b/fs/smb/client/smb2maperror.c
@@ -17,12 +17,6 @@
 #include "smb2glob.h"
 #include "trace.h"
 
-struct status_to_posix_error {
-	__le32 smb2_status;
-	int posix_error;
-	char *status_string;
-};
-
 static struct status_to_posix_error smb2_error_map_table[] = {
 	{STATUS_WAIT_1, -EIO, "STATUS_WAIT_1"},
 	{STATUS_WAIT_2, -EIO, "STATUS_WAIT_2"},
@@ -2433,13 +2427,26 @@ static int cmp_smb2_status(const void *_a, const void *_b)
 	return 0;
 }
 
+struct status_to_posix_error *smb2_get_err_map(__le32 smb2_status)
+{
+	struct status_to_posix_error *err_map, key;
+
+	key = (struct status_to_posix_error) {
+		.smb2_status = smb2_status,
+	};
+	err_map = bsearch(&key, smb2_error_map_table, err_map_num,
+			  sizeof(struct status_to_posix_error),
+			  cmp_smb2_status);
+	return err_map;
+}
+
 int
 map_smb2_to_linux_error(char *buf, bool log_err)
 {
 	struct smb2_hdr *shdr = (struct smb2_hdr *)buf;
 	int rc = -EIO;
 	__le32 smb2err = shdr->Status;
-	struct status_to_posix_error *err_map, key;
+	struct status_to_posix_error *err_map;
 
 	if (smb2err == 0) {
 		trace_smb3_cmd_done(le32_to_cpu(shdr->Id.SyncId.TreeId),
@@ -2453,12 +2460,7 @@ map_smb2_to_linux_error(char *buf, bool log_err)
 		   (smb2err != STATUS_END_OF_FILE)) ||
 		  (cifsFYI & CIFS_RC);
 
-	key = (struct status_to_posix_error) {
-		.smb2_status = smb2err,
-	};
-	err_map = bsearch(&key, smb2_error_map_table, err_map_num,
-			  sizeof(struct status_to_posix_error),
-			  cmp_smb2_status);
+	err_map = smb2_get_err_map(smb2err);
 	if (!err_map)
 		goto out;
 
diff --git a/fs/smb/client/smb2proto.h b/fs/smb/client/smb2proto.h
index c988f6b37a1b..224840e3a00d 100644
--- a/fs/smb/client/smb2proto.h
+++ b/fs/smb/client/smb2proto.h
@@ -12,8 +12,8 @@
 #include <linux/nls.h>
 #include <linux/key-type.h>
 
-struct statfs;
 struct smb_rqst;
+struct status_to_posix_error;
 
 /*
  *****************************************************************
@@ -21,6 +21,7 @@ struct smb_rqst;
  *****************************************************************
  */
 extern int map_smb2_to_linux_error(char *buf, bool log_err);
+extern struct status_to_posix_error *smb2_get_err_map(__le32 smb2_status);
 extern void smb2_init_maperror(void);
 extern int smb2_check_message(char *buf, unsigned int length,
 			      struct TCP_Server_Info *server);
-- 
2.43.0


  parent reply	other threads:[~2025-12-06 15:19 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-06 15:18 [PATCH v4 00/10] smb: improve search speed of SMB2 maperror chenxiaosong.chenxiaosong
2025-12-06 15:18 ` [PATCH v4 01/10] smb/client: reduce loop count in map_smb2_to_linux_error() by half chenxiaosong.chenxiaosong
2025-12-06 15:18 ` [PATCH v4 02/10] smb/client: remove unused elements from smb2_error_map_table array chenxiaosong.chenxiaosong
2025-12-06 15:18 ` [PATCH v4 03/10] smb: rename to STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP chenxiaosong.chenxiaosong
2025-12-06 15:18 ` [PATCH v4 04/10] smb/client: add two elements to smb2_error_map_table array chenxiaosong.chenxiaosong
2025-12-06 15:18 ` [PATCH v4 05/10] smb/client: sort " chenxiaosong.chenxiaosong
2025-12-06 15:18 ` [PATCH v4 06/10] smb/client: use bsearch() to find target status code chenxiaosong.chenxiaosong
2025-12-06 15:18 ` chenxiaosong.chenxiaosong [this message]
2025-12-06 15:18 ` [PATCH v4 08/10] smb/client: introduce smb2maperror KUnit tests chenxiaosong.chenxiaosong
2025-12-08 21:29   ` kernel test robot
2025-12-09  3:45   ` kernel test robot
2025-12-06 15:18 ` [PATCH v4 09/10] smb/client: update some SMB2 status strings chenxiaosong.chenxiaosong
2025-12-07 17:47   ` Steve French
2025-12-06 15:18 ` [PATCH v4 10/10] smb/server: rename include guard in smb_common.h chenxiaosong.chenxiaosong
2025-12-10  4:29 ` [PATCH v4 00/10] smb: improve search speed of SMB2 maperror ChenXiaoSong

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=20251206151826.2932970-8-chenxiaosong.chenxiaosong@linux.dev \
    --to=chenxiaosong.chenxiaosong@linux.dev \
    --cc=chenxiaosong@kylinos.cn \
    --cc=huhai@kylinos.cn \
    --cc=linkinjeon@kernel.org \
    --cc=linkinjeon@samba.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=liuyun01@kylinos.cn \
    --cc=liuzhengyuan@kylinos.cn \
    --cc=sfrench@samba.org \
    --cc=smfrench@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;
as well as URLs for NNTP newsgroup(s).