The change in patches: 1. Fix cache issue when recreate file 2. Introduce CMAKE to build userspace apps 3. CleanCode Signed-off-by: Weifeng Su <suweifeng1@huawei.com>
128 lines
4.5 KiB
Diff
128 lines
4.5 KiB
Diff
From 890082069c4e43fd8d4ec6e96bf851d185195b7d Mon Sep 17 00:00:00 2001
|
|
From: liqiang <liqiang64@huawei.com>
|
|
Date: Sat, 10 Jun 2023 17:02:53 +0800
|
|
Subject: port in use
|
|
|
|
Signed-off-by: liqiang <liqiang64@huawei.com>
|
|
---
|
|
qtfs/include/conn.h | 12 ++++++++++--
|
|
qtfs/qtfs_common/conn.c | 10 +++++-----
|
|
qtfs/qtfs_common/user_engine.c | 5 ++++-
|
|
qtfs/qtfs_server/qtfs-server.c | 8 ++++++++
|
|
4 files changed, 27 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/qtfs/include/conn.h b/qtfs/include/conn.h
|
|
index 3b8f1f4..afbb00f 100644
|
|
--- a/qtfs/include/conn.h
|
|
+++ b/qtfs/include/conn.h
|
|
@@ -46,7 +46,16 @@ extern bool qtfs_epoll_mode;
|
|
extern struct qtsock_wl_stru qtsock_wl;
|
|
extern struct qtfs_pvar_ops_s qtfs_conn_sock_pvar_ops;
|
|
|
|
-#define qtfs_conn_get_param(void) _qtfs_conn_get_param(__func__)
|
|
+struct qtfs_conn_var_s *_qtfs_conn_get_param(const char *);
|
|
+static inline struct qtfs_conn_var_s *__qtfs_conn_get_param(const char *who_using)
|
|
+{
|
|
+ struct qtfs_conn_var_s *p = _qtfs_conn_get_param(who_using);
|
|
+ if (IS_ERR_OR_NULL(p))
|
|
+ return NULL;
|
|
+ return p;
|
|
+}
|
|
+#define qtfs_conn_get_param(void) __qtfs_conn_get_param(__func__)
|
|
+#define qtfs_conn_get_param_errcode(void) _qtfs_conn_get_param(__func__)
|
|
|
|
#define QTFS_CONN_SOCK_TYPE "socket"
|
|
#define QTFS_CONN_PCIE_TYPE "pcie"
|
|
@@ -172,7 +181,6 @@ void *qtfs_conn_msg_buf(struct qtfs_conn_var_s *pvar, int dir);
|
|
void qtfs_conn_param_init(void);
|
|
void qtfs_conn_param_fini(void);
|
|
|
|
-struct qtfs_conn_var_s *_qtfs_conn_get_param(const char *);
|
|
void qtfs_conn_put_param(struct qtfs_conn_var_s *pvar);
|
|
struct qtfs_conn_var_s *qtfs_epoll_establish_conn(void);
|
|
void qtfs_epoll_cut_conn(struct qtfs_conn_var_s *pvar);
|
|
diff --git a/qtfs/qtfs_common/conn.c b/qtfs/qtfs_common/conn.c
|
|
index 56b2b12..ab84181 100644
|
|
--- a/qtfs/qtfs_common/conn.c
|
|
+++ b/qtfs/qtfs_common/conn.c
|
|
@@ -580,7 +580,7 @@ retry:
|
|
}
|
|
if (ret != 0) {
|
|
qtfs_conn_put_param(pvar);
|
|
- return NULL;
|
|
+ return (IS_ERR_VALUE((long)ret) ? ERR_PTR((long)ret) : NULL);
|
|
}
|
|
strlcpy(pvar->who_using, func, QTFS_FUNCTION_LEN);
|
|
return pvar;
|
|
@@ -636,18 +636,18 @@ retry:
|
|
qtfs_err("qtfs get param active connection failed, ret:%d, curstate:%s", ret, QTCONN_CUR_STATE(pvar));
|
|
// put to vld list
|
|
qtfs_conn_put_param(pvar);
|
|
- return NULL;
|
|
+ return (IS_ERR_VALUE((long)ret) ? ERR_PTR((long)ret) : NULL);
|
|
}
|
|
qtfs_thread_var[pvar->cur_threadidx] = pvar;
|
|
#else
|
|
pvar->cs = QTFS_CONN_SOCK_SERVER;
|
|
if (!pvar->conn_ops->conn_inited(pvar)) {
|
|
- if (qtfs_sm_active(pvar)) {
|
|
+ if ((ret = qtfs_sm_active(pvar)) != 0) {
|
|
qtfs_err("qtfs get param active connection failed, ret:%d, curstate:%s", ret, QTCONN_CUR_STATE(pvar));
|
|
// put to vld list
|
|
mutex_unlock(&g_param_mutex);
|
|
qtfs_conn_put_param(pvar);
|
|
- return NULL;
|
|
+ return (IS_ERR_VALUE((long)ret) ? ERR_PTR((long)ret) : NULL);
|
|
}
|
|
mutex_unlock(&g_param_mutex);
|
|
} else {
|
|
@@ -657,7 +657,7 @@ retry:
|
|
if (ret) {
|
|
qtfs_err("qtfs get param active connection failed, ret:%d curstate:%s", ret, QTCONN_CUR_STATE(pvar));
|
|
qtfs_conn_put_param(pvar);
|
|
- return NULL;
|
|
+ return (IS_ERR_VALUE((long)ret) ? ERR_PTR((long)ret) : NULL);
|
|
}
|
|
}
|
|
#endif
|
|
diff --git a/qtfs/qtfs_common/user_engine.c b/qtfs/qtfs_common/user_engine.c
|
|
index 521ebe4..919da11 100644
|
|
--- a/qtfs/qtfs_common/user_engine.c
|
|
+++ b/qtfs/qtfs_common/user_engine.c
|
|
@@ -105,9 +105,12 @@ static struct qtfs_server_userp_s *qtfs_engine_thread_init(int fd, int thread_nu
|
|
}
|
|
}
|
|
struct qtfs_thread_init_s init_userp;
|
|
+ int ret;
|
|
init_userp.thread_nums = thread_nums;
|
|
init_userp.userp = userp;
|
|
- if (ioctl(fd, QTFS_IOCTL_THREAD_INIT, (unsigned long)&init_userp) == QTERROR) {
|
|
+ ret = ioctl(fd, QTFS_IOCTL_THREAD_INIT, (unsigned long)&init_userp);
|
|
+ if (ret != QTOK) {
|
|
+ engine_err("Engine thread init failed reason:%s", (ret == EADDRINUSE) ? strerror(EADDRINUSE) : "userp init failed.");
|
|
goto rollback;
|
|
}
|
|
return userp;
|
|
diff --git a/qtfs/qtfs_server/qtfs-server.c b/qtfs/qtfs_server/qtfs-server.c
|
|
index 003c361..729097b 100644
|
|
--- a/qtfs/qtfs_server/qtfs-server.c
|
|
+++ b/qtfs/qtfs_server/qtfs-server.c
|
|
@@ -192,6 +192,14 @@ long qtfs_server_misc_ioctl(struct file *file, unsigned int cmd, unsigned long a
|
|
struct qtfs_thread_init_s init_userp;
|
|
switch (cmd) {
|
|
case QTFS_IOCTL_THREAD_INIT:
|
|
+ pvar = qtfs_conn_get_param_errcode();
|
|
+ if (IS_ERR_OR_NULL(pvar)) {
|
|
+ qtfs_err("init pvar get failed, pvar:%ld", (long)pvar);
|
|
+ if (PTR_ERR(pvar) == -EADDRINUSE)
|
|
+ return EADDRINUSE;
|
|
+ } else {
|
|
+ qtfs_conn_put_param(pvar);
|
|
+ }
|
|
if (!write_trylock(&g_userp_rwlock)) {
|
|
qtfs_err("try lock userps failed.");
|
|
return QTERROR;
|
|
--
|
|
2.33.0
|
|
|