Compare commits
10 Commits
7c3976f22f
...
4e86af5af8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e86af5af8 | ||
|
|
f977ac0693 | ||
|
|
3b616fdd2a | ||
|
|
3ae7c9e43e | ||
|
|
af2600e018 | ||
|
|
def2f5592c | ||
|
|
05d2a91198 | ||
|
|
fe851cd555 | ||
|
|
d095df5645 | ||
|
|
405a7550e4 |
@ -1,25 +0,0 @@
|
||||
From 959f29ce47ff71cc40ffbd0857471b79074cb9a5 Mon Sep 17 00:00:00 2001
|
||||
From: liqiang <liqiang64@huawei.com>
|
||||
Date: Wed, 30 Nov 2022 20:30:29 +0800
|
||||
Subject: [PATCH 1/3] add path put in xattr set
|
||||
|
||||
Signed-off-by: liqiang <liqiang64@huawei.com>
|
||||
---
|
||||
qtfs/qtfs_server/fsops.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/qtfs/qtfs_server/fsops.c b/qtfs/qtfs_server/fsops.c
|
||||
index 6633f3c..48ec7ab 100644
|
||||
--- a/qtfs/qtfs_server/fsops.c
|
||||
+++ b/qtfs/qtfs_server/fsops.c
|
||||
@@ -843,6 +843,7 @@ int handle_xattrset(struct qtserver_arg *arg)
|
||||
qtfs_info("handle xattrset path:%s name:%s value:%s ret:%d size:%lu flags:%d", req->buf,
|
||||
&req->buf[req->d.pathlen], &req->buf[req->d.pathlen + req->d.namelen], rsp->errno,
|
||||
req->d.size, req->d.flags);
|
||||
+ path_put(&path);
|
||||
return sizeof(struct qtrsp_xattrset);
|
||||
|
||||
err_handle:
|
||||
--
|
||||
2.23.0
|
||||
|
||||
166
0001-refactor-syscall-wrapper-for-aarch64-reduce-the-memo.patch
Normal file
166
0001-refactor-syscall-wrapper-for-aarch64-reduce-the-memo.patch
Normal file
@ -0,0 +1,166 @@
|
||||
From 6a43e037faab2f3d084fce8b16d864f18b033a48 Mon Sep 17 00:00:00 2001
|
||||
From: liqiang <liqiang64@huawei.com>
|
||||
Date: Mon, 17 Jun 2024 11:18:43 +0800
|
||||
Subject: [PATCH] refactor syscall wrapper for aarch64, reduce the memory range
|
||||
to o be writable
|
||||
|
||||
Signed-off-by: liqiang <liqiang64@huawei.com>
|
||||
---
|
||||
qtfs/include/symbol_wrapper.h | 14 ++++++++++++--
|
||||
qtfs/qtfs/syscall.c | 25 ++++++++++++-------------
|
||||
qtfs/qtfs_common/symbol_wrapper.c | 18 ++++++------------
|
||||
3 files changed, 30 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/qtfs/include/symbol_wrapper.h b/qtfs/include/symbol_wrapper.h
|
||||
index cef2cd9..4ce500f 100644
|
||||
--- a/qtfs/include/symbol_wrapper.h
|
||||
+++ b/qtfs/include/symbol_wrapper.h
|
||||
@@ -72,8 +72,18 @@ static inline int make_ro(unsigned long address)
|
||||
|
||||
#ifdef __aarch64__
|
||||
extern void (*update_mapping_prot)(phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot);
|
||||
-extern unsigned long start_rodata, end_rodata;
|
||||
-#define section_size (end_rodata - start_rodata)
|
||||
+static inline int make_rw(unsigned long address)
|
||||
+{
|
||||
+ update_mapping_prot(__pa_symbol(address & PAGE_MASK), (unsigned long)(address & PAGE_MASK), PAGE_SIZE, PAGE_KERNEL);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static inline int make_ro(unsigned long address)
|
||||
+{
|
||||
+ update_mapping_prot(__pa_symbol(address & PAGE_MASK), (unsigned long)(address & PAGE_MASK), PAGE_SIZE, PAGE_KERNEL_RO);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
#endif
|
||||
|
||||
int qtfs_syscall_replace_start(void);
|
||||
diff --git a/qtfs/qtfs/syscall.c b/qtfs/qtfs/syscall.c
|
||||
index a02a225..7b139a4 100644
|
||||
--- a/qtfs/qtfs/syscall.c
|
||||
+++ b/qtfs/qtfs/syscall.c
|
||||
@@ -441,22 +441,22 @@ int qtfs_syscall_init(void)
|
||||
symbols_origin[SYMBOL_SYSCALL_MOUNT] = qtfs_kern_syms.sys_call_table[__NR_mount];
|
||||
symbols_origin[SYMBOL_SYSCALL_UMOUNT] = qtfs_kern_syms.sys_call_table[__NR_umount2];
|
||||
symbols_origin[SYMBOL_SYSCALL_EPOLL_CTL] = qtfs_kern_syms.sys_call_table[__NR_epoll_ctl];
|
||||
-#ifdef __x86_64__
|
||||
+
|
||||
make_rw((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
+ make_rw((unsigned long)qtfs_kern_syms.sys_call_table + PAGE_SIZE);
|
||||
+#ifdef __x86_64__
|
||||
qtfs_kern_syms.sys_call_table[__NR_mount] = (unsigned long *)__x64_sys_qtfs_mount;
|
||||
qtfs_kern_syms.sys_call_table[__NR_umount2] = (unsigned long *)__x64_sys_qtfs_umount;
|
||||
qtfs_kern_syms.sys_call_table[__NR_epoll_ctl] = (unsigned long *)__x64_sys_qtfs_epoll_ctl;
|
||||
- make_ro((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
#endif
|
||||
#ifdef __aarch64__
|
||||
- // disable write protection
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL);
|
||||
qtfs_kern_syms.sys_call_table[__NR_mount] = (unsigned long *)__arm64_sys_qtfs_mount;
|
||||
qtfs_kern_syms.sys_call_table[__NR_umount2] = (unsigned long *)__arm64_sys_qtfs_umount;
|
||||
qtfs_kern_syms.sys_call_table[__NR_epoll_ctl] = (unsigned long *)__arm64_sys_qtfs_epoll_ctl;
|
||||
- // enable write protection
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL_RO);
|
||||
#endif
|
||||
+ // enable write protection
|
||||
+ make_ro((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
+ make_ro((unsigned long)qtfs_kern_syms.sys_call_table + PAGE_SIZE);
|
||||
qtfs_debug("qtfs use qtfs_mount instead of mount and umount\n");
|
||||
qtfs_debug("qtfs use qtfs_epoll_ctl instead of epoll_ctl\n");
|
||||
return 0;
|
||||
@@ -464,23 +464,22 @@ int qtfs_syscall_init(void)
|
||||
|
||||
int qtfs_syscall_fini(void)
|
||||
{
|
||||
-#ifdef __x86_64__
|
||||
make_rw((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
+ make_rw((unsigned long)qtfs_kern_syms.sys_call_table + PAGE_SIZE);
|
||||
+#ifdef __x86_64__
|
||||
qtfs_kern_syms.sys_call_table[__NR_mount] = (unsigned long *)symbols_origin[SYMBOL_SYSCALL_MOUNT];
|
||||
qtfs_kern_syms.sys_call_table[__NR_umount2] = (unsigned long *)symbols_origin[SYMBOL_SYSCALL_UMOUNT];
|
||||
qtfs_kern_syms.sys_call_table[__NR_epoll_ctl] = (unsigned long *)symbols_origin[SYMBOL_SYSCALL_EPOLL_CTL];
|
||||
- /*set mkdir syscall to the original one */
|
||||
- make_ro((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
#endif
|
||||
#ifdef __aarch64__
|
||||
- // disable write protection
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL);
|
||||
qtfs_kern_syms.sys_call_table[__NR_mount] = (unsigned long *)symbols_origin[SYMBOL_SYSCALL_MOUNT];
|
||||
qtfs_kern_syms.sys_call_table[__NR_umount2] = (unsigned long *)symbols_origin[SYMBOL_SYSCALL_UMOUNT];
|
||||
qtfs_kern_syms.sys_call_table[__NR_epoll_ctl] = (unsigned long *)symbols_origin[SYMBOL_SYSCALL_EPOLL_CTL];
|
||||
- // enable write protection
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL_RO);
|
||||
#endif
|
||||
+ // enable write protection
|
||||
+ make_ro((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
+ make_ro((unsigned long)qtfs_kern_syms.sys_call_table + PAGE_SIZE);
|
||||
+
|
||||
qtfs_info("qtfs mount umount and epoll_ctl resumed\n");
|
||||
atomic_inc(&replace_available);
|
||||
return 0;
|
||||
diff --git a/qtfs/qtfs_common/symbol_wrapper.c b/qtfs/qtfs_common/symbol_wrapper.c
|
||||
index 84c1bd5..5ceaf5f 100644
|
||||
--- a/qtfs/qtfs_common/symbol_wrapper.c
|
||||
+++ b/qtfs/qtfs_common/symbol_wrapper.c
|
||||
@@ -55,7 +55,6 @@ struct pt_regs;
|
||||
#endif
|
||||
#ifdef __aarch64__
|
||||
void (*update_mapping_prot)(phys_addr_t phys, unsigned long virt, phys_addr_t size, pgprot_t prot);
|
||||
-unsigned long start_rodata, end_rodata;
|
||||
|
||||
// symbols not finded in sys call table
|
||||
enum qtfs_sym_a64 {
|
||||
@@ -132,9 +131,7 @@ int qtfs_kallsyms_hack_init(void)
|
||||
|
||||
#ifdef __aarch64__
|
||||
update_mapping_prot = (void *)qtfs_kallsyms_lookup_name("update_mapping_prot");
|
||||
- start_rodata = (unsigned long)qtfs_kallsyms_lookup_name("__start_rodata");
|
||||
- end_rodata = (unsigned long)qtfs_kallsyms_lookup_name("__end_rodata");
|
||||
- if (update_mapping_prot == NULL || (void *)start_rodata == NULL || (void *)end_rodata == NULL) {
|
||||
+ if (update_mapping_prot == NULL) {
|
||||
qtfs_err("failed to init memory protect handler");
|
||||
return -1;
|
||||
}
|
||||
@@ -170,33 +167,30 @@ int qtfs_syscall_replace_start(void)
|
||||
}
|
||||
|
||||
symbols_origin[SYMBOL_SYSCALL_CONNECT] = qtfs_kern_syms.sys_call_table[__NR_connect];
|
||||
+ make_rw((unsigned long)&qtfs_kern_syms.sys_call_table[__NR_connect]);
|
||||
#ifdef __x86_64__
|
||||
- make_rw((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
qtfs_kern_syms.sys_call_table[__NR_connect] = (unsigned long *)__x64_sys_qtfs_connect;
|
||||
- make_ro((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
#endif
|
||||
|
||||
#ifdef __aarch64__
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL);
|
||||
qtfs_kern_syms.sys_call_table[__NR_connect] = (unsigned long *)__arm64_sys_qtfs_connect;
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL_RO);
|
||||
#endif
|
||||
+ make_ro((unsigned long)&qtfs_kern_syms.sys_call_table[__NR_connect]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void qtfs_syscall_replace_stop(void)
|
||||
{
|
||||
+ make_rw((unsigned long)&qtfs_kern_syms.sys_call_table[__NR_connect]);
|
||||
#ifdef __x86_64__
|
||||
- make_rw((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
qtfs_kern_syms.sys_call_table[__NR_connect] = (void *)qtfs_kallsyms_lookup_name("__x64_sys_connect");
|
||||
- make_ro((unsigned long)qtfs_kern_syms.sys_call_table);
|
||||
#endif
|
||||
|
||||
#ifdef __aarch64__
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL);
|
||||
qtfs_kern_syms.sys_call_table[__NR_connect] = (void *)qtfs_kallsyms_lookup_name("__arm64_sys_connect");
|
||||
- update_mapping_prot(__pa_symbol(start_rodata), (unsigned long)start_rodata, section_size, PAGE_KERNEL_RO);
|
||||
#endif
|
||||
+ make_ro((unsigned long)&qtfs_kern_syms.sys_call_table[__NR_connect]);
|
||||
+
|
||||
atomic_inc(&replace_available);
|
||||
}
|
||||
|
||||
--
|
||||
2.37.1 (Apple Git-137.1)
|
||||
|
||||
@ -1,45 +0,0 @@
|
||||
From 0038843dcd4ce52ce3ef2e9dd5ec145211e0f09c Mon Sep 17 00:00:00 2001
|
||||
From: yangxin <245051644@qq.com>
|
||||
Date: Mon, 5 Dec 2022 10:42:04 +0800
|
||||
Subject: [PATCH 2/3] Add drop link and dentry invalid in unlink and rmdir.
|
||||
|
||||
Signed-off-by: yangxin <245051644@qq.com>
|
||||
---
|
||||
qtfs/qtfs/sb.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/qtfs/qtfs/sb.c b/qtfs/qtfs/sb.c
|
||||
index 4ad4aed..5fd2c8f 100644
|
||||
--- a/qtfs/qtfs/sb.c
|
||||
+++ b/qtfs/qtfs/sb.c
|
||||
@@ -989,6 +989,7 @@ int qtfs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
struct qtreq_rmdir *req;
|
||||
struct qtrsp_rmdir *rsp;
|
||||
int ret;
|
||||
+ struct inode *inode = d_inode(dentry);
|
||||
|
||||
if (!pvar) {
|
||||
qtfs_err("Failed to get qtfs sock var\n");
|
||||
@@ -1012,6 +1013,9 @@ int qtfs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
}
|
||||
qtfs_info("qtfs rmdir success:<%s>.\n", req->path);
|
||||
qtfs_conn_put_param(pvar);
|
||||
+ if (inode->i_nlink > 0)
|
||||
+ drop_nlink(inode);
|
||||
+ d_invalidate(dentry);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1046,6 +1050,9 @@ int qtfs_unlink(struct inode *dir, struct dentry *dentry)
|
||||
}
|
||||
ret = rsp->errno;
|
||||
qtfs_conn_put_param(pvar);
|
||||
+ if (inode->i_nlink > 0)
|
||||
+ drop_nlink(inode);
|
||||
+ d_invalidate(dentry);
|
||||
return ret;
|
||||
}
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@ -1,119 +0,0 @@
|
||||
From 7dfd4ec8ee7ab9034b35061567235c62d8c5522e Mon Sep 17 00:00:00 2001
|
||||
From: YangXin <245051644@qq.com>
|
||||
Date: Mon, 5 Dec 2022 21:43:26 +0800
|
||||
Subject: [PATCH 3/3] enable rexec read net addr from config file.
|
||||
|
||||
Signed-off-by: YangXin <245051644@qq.com>
|
||||
---
|
||||
qtfs/rexec/client.go | 3 ++-
|
||||
qtfs/rexec/common.go | 33 +++++++++++++++++++++++++++++++--
|
||||
qtfs/rexec/server.go | 6 +++++-
|
||||
3 files changed, 38 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/qtfs/rexec/client.go b/qtfs/rexec/client.go
|
||||
index 922040d..13b63f5 100644
|
||||
--- a/qtfs/rexec/client.go
|
||||
+++ b/qtfs/rexec/client.go
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
|
||||
const (
|
||||
rexecPidDir = "/var/run/rexec/pids"
|
||||
+ role = "client"
|
||||
)
|
||||
|
||||
var pidPath string
|
||||
@@ -111,7 +112,7 @@ func main() {
|
||||
if err := SetParentDeathSignal(uintptr(syscall.SIGHUP)); err != nil {
|
||||
log.Printf("Failed to set Parent Death Signal:%s", err.Error())
|
||||
}
|
||||
- na, err := parseNetAddr()
|
||||
+ na, err := parseNetAddr(role)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
diff --git a/qtfs/rexec/common.go b/qtfs/rexec/common.go
|
||||
index a332fae..9ce21c4 100644
|
||||
--- a/qtfs/rexec/common.go
|
||||
+++ b/qtfs/rexec/common.go
|
||||
@@ -8,10 +8,16 @@ import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
+ "io/ioutil"
|
||||
+ "encoding/json"
|
||||
|
||||
"github.com/docker/libchan"
|
||||
)
|
||||
|
||||
+const (
|
||||
+ configDir = "/etc/rexec"
|
||||
+)
|
||||
+
|
||||
// RemoteCommand is the run parameters to be executed remotely
|
||||
type RemoteCommand struct {
|
||||
Cmd string
|
||||
@@ -82,12 +88,35 @@ func parseUnixAddr(inAddr string) (NetAddr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
-func parseNetAddr() (NetAddr, error) {
|
||||
+func readAddrFromFile(role string) (string) {
|
||||
+ fileName := fmt.Sprintf("%s/%s.json", configDir, role)
|
||||
+ file, err := ioutil.ReadFile(fileName)
|
||||
+ if err != nil {
|
||||
+ fmt.Printf("read %s failed: %s", fileName, err)
|
||||
+ return ""
|
||||
+ }
|
||||
+ var netAddr struct {
|
||||
+ Protocol string `json:"Protocol"`
|
||||
+ Ipaddr string `json:"Ipaddr"`
|
||||
+ Port string `json:"Port"`
|
||||
+ }
|
||||
+ err = json.Unmarshal([]byte(file), &netAddr)
|
||||
+ if err != nil {
|
||||
+ fmt.Printf("can not unmarshal %s:%s", fileName, err)
|
||||
+ return ""
|
||||
+ }
|
||||
+ return fmt.Sprintf("%s://%s:%s", netAddr.Protocol, netAddr.Ipaddr, netAddr.Port)
|
||||
+}
|
||||
+
|
||||
+func parseNetAddr(role string) (NetAddr, error) {
|
||||
cna := os.Getenv("CMD_NET_ADDR")
|
||||
|
||||
// default netAddr: tcp://127.0.0.1:9323
|
||||
if strings.TrimSpace(cna) == "" {
|
||||
- return NetAddr{}, fmt.Errorf("need CMD_NET_ADDR")
|
||||
+ cna = readAddrFromFile(role)
|
||||
+ if cna == "" {
|
||||
+ return NetAddr{}, fmt.Errorf("please set enviroment variable CMD_NET_ADDR or set Config file %s/%s.json", configDir, role)
|
||||
+ }
|
||||
}
|
||||
|
||||
parts := strings.SplitN(cna, "://", 2)
|
||||
diff --git a/qtfs/rexec/server.go b/qtfs/rexec/server.go
|
||||
index 4e910ea..4559b79 100644
|
||||
--- a/qtfs/rexec/server.go
|
||||
+++ b/qtfs/rexec/server.go
|
||||
@@ -15,6 +15,10 @@ import (
|
||||
"github.com/docker/libchan/spdy"
|
||||
)
|
||||
|
||||
+const (
|
||||
+ role = "server"
|
||||
+)
|
||||
+
|
||||
func getHost(addr string) string {
|
||||
return strings.Split(addr, ":")[0]
|
||||
}
|
||||
@@ -24,7 +28,7 @@ func main() {
|
||||
key := os.Getenv("TLS_KEY")
|
||||
|
||||
var listener net.Listener
|
||||
- na, err := parseNetAddr()
|
||||
+ na, err := parseNetAddr(role)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
From 86c4ef6bc5d845b0c1919ddb80702f2896a75d4f Mon Sep 17 00:00:00 2001
|
||||
From: yangxin <245051644@qq.com>
|
||||
Date: Thu, 15 Dec 2022 10:14:53 +0800
|
||||
Subject: [PATCH 4/4] Fix inode sync error between client and server.
|
||||
|
||||
Signed-off-by: yangxin <245051644@qq.com>
|
||||
---
|
||||
qtfs/qtfs/sb.c | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/qtfs/qtfs/sb.c b/qtfs/qtfs/sb.c
|
||||
index 5fd2c8f..aad153b 100644
|
||||
--- a/qtfs/qtfs/sb.c
|
||||
+++ b/qtfs/qtfs/sb.c
|
||||
@@ -1146,6 +1146,7 @@ int qtfs_getattr(const struct path *path, struct kstat *stat, u32 req_mask, unsi
|
||||
struct qtfs_sock_var_s *pvar = qtfs_conn_get_param();
|
||||
struct qtreq_getattr *req;
|
||||
struct qtrsp_getattr *rsp;
|
||||
+ struct inode *inode = path->dentry->d_inode;
|
||||
int ret;
|
||||
|
||||
if (!pvar) {
|
||||
@@ -1172,8 +1173,14 @@ int qtfs_getattr(const struct path *path, struct kstat *stat, u32 req_mask, unsi
|
||||
return ret;
|
||||
}
|
||||
*stat = rsp->stat;
|
||||
- qtfs_debug("qtfs getattr success:<%s> blksiz:%u size:%lld mode:%o ino:%llu pathino:%lu.\n", req->path, rsp->stat.blksize,
|
||||
- rsp->stat.size, rsp->stat.mode, rsp->stat.ino, path->dentry->d_inode->i_ino);
|
||||
+ qtfs_debug("qtfs getattr success:<%s> blksiz:%u size:%lld mode:%o ino:%llu pathino:%lu. %s\n", req->path, rsp->stat.blksize,
|
||||
+ rsp->stat.size, rsp->stat.mode, rsp->stat.ino, inode->i_ino, rsp->stat.ino != inode->i_ino ? "delete current inode" : "");
|
||||
+ if (inode->i_ino != rsp->stat.ino || rsp->stat.mode != inode->i_mode) {
|
||||
+ if (inode->i_nlink > 0){
|
||||
+ drop_nlink(inode);
|
||||
+ }
|
||||
+ d_invalidate(path->dentry);
|
||||
+ }
|
||||
qtfs_conn_put_param(pvar);
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# dpu-utilities
|
||||
|
||||
#### Description
|
||||
contain DPU utilities, like qtfs etc.
|
||||
dpu-utilities is DPU customized software utility based on openEuler
|
||||
|
||||
#### Software Architecture
|
||||
Software architecture description
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# dpu-utilities
|
||||
|
||||
#### 介绍
|
||||
contain DPU utilities, like qtfs etc.
|
||||
dpu-utilities is DPU customized software utility based on openEuler
|
||||
|
||||
#### 软件架构
|
||||
软件架构说明
|
||||
|
||||
@ -1,21 +1,20 @@
|
||||
Name: dpu-utilities
|
||||
Summary: openEuler dpu utilities
|
||||
Version: 1.1
|
||||
Release: 3
|
||||
Version: 1.10
|
||||
Release: 2
|
||||
License: GPL-2.0
|
||||
Source: https://gitee.com/openeuler/dpu-utilities/repository/archive/v%{version}.tar.gz
|
||||
ExclusiveOS: linux
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
URL: https://gitee.com/openeuler/dpu-utilities
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-root
|
||||
Conflicts: %{name} < %{version}-%{release}
|
||||
Provides: %{name} = %{version}-%{release}
|
||||
%define kernel_version %(ver=`rpm -qa|grep kernel-devel`;echo ${ver#*kernel-devel-})
|
||||
BuildRequires: kernel-devel >= 5.10, gcc, make
|
||||
BuildRequires: golang
|
||||
Patch0: 0001-add-path-put-in-xattr-set.patch
|
||||
Patch1: 0002-Add-drop-link-and-dentry-invalid-in-unlink-and-rmdir.patch
|
||||
Patch2: 0003-enable-rexec-read-net-addr-from-config-file.patch
|
||||
Patch3: 0004-Fix-inode-sync-error-between-client-and-server.patch
|
||||
BuildRequires: kernel-devel >= 5.10, gcc, make, json-c-devel, glib2-devel
|
||||
|
||||
Patch1: 0001-refactor-syscall-wrapper-for-aarch64-reduce-the-memo.patch
|
||||
|
||||
%description
|
||||
This package contains the software utilities on dpu.
|
||||
|
||||
@ -28,12 +27,14 @@ imageTailor configration files for dpuos
|
||||
|
||||
%package -n qtfs-client
|
||||
Summary: Client of qtfs
|
||||
Requires: json-c, glib2
|
||||
|
||||
%description -n qtfs-client
|
||||
qtfs is a shared file system, this is the client of qtfs.
|
||||
|
||||
%package -n qtfs-server
|
||||
Summary: Server of qtfs
|
||||
Requires: json-c, glib2
|
||||
|
||||
%description -n qtfs-server
|
||||
qtfs is a shared file system, this is the server of qtfs.
|
||||
@ -50,18 +51,43 @@ cd %_builddir/%{name}-v%{version}/qtfs/qtfs_server
|
||||
make
|
||||
cd %_builddir/%{name}-v%{version}/qtfs/rexec
|
||||
make
|
||||
cd %_builddir/%{name}-v%{version}/qtfs/ipc
|
||||
make
|
||||
cd %_builddir/%{name}-v%{version}/qtfs/qtinfo
|
||||
export role=client
|
||||
make qtcfg
|
||||
mv qtcfg qtcfg_client
|
||||
make clean
|
||||
export role=server
|
||||
make qtcfg
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{kernel_version}//extra
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/bin/
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/lib/
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/local/bin
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/qtfs
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/rexec
|
||||
install %_builddir/%{name}-v%{version}/qtfs/qtfs/qtfs.ko $RPM_BUILD_ROOT/lib/modules/%{kernel_version}/extra
|
||||
install %_builddir/%{name}-v%{version}/qtfs/qtfs_server/qtfs_server.ko $RPM_BUILD_ROOT/lib/modules/%{kernel_version}/extra
|
||||
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/qtfs_server/engine $RPM_BUILD_ROOT/usr/bin/
|
||||
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/rexec/rexec ${RPM_BUILD_ROOT}/usr/bin/
|
||||
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/rexec/rexec_server ${RPM_BUILD_ROOT}/usr/bin/
|
||||
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/ipc/udsproxyd ${RPM_BUILD_ROOT}/usr/bin/
|
||||
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/ipc/libudsproxy.so ${RPM_BUILD_ROOT}/usr/lib/
|
||||
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/qtinfo/qtcfg ${RPM_BUILD_ROOT}/usr/bin/
|
||||
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/qtinfo/qtcfg_client ${RPM_BUILD_ROOT}/usr/local/bin/qtcfg
|
||||
install -m 0400 %_builddir/%{name}-v%{version}/qtfs/config/rexec/whitelist ${RPM_BUILD_ROOT}/etc/rexec
|
||||
install -m 0400 %_builddir/%{name}-v%{version}/qtfs/config/qtfs/whitelist ${RPM_BUILD_ROOT}/etc/qtfs
|
||||
mkdir -p $RPM_BUILD_ROOT/opt/imageTailor
|
||||
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/custom $RPM_BUILD_ROOT/opt/imageTailor
|
||||
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/kiwi $RPM_BUILD_ROOT/opt/imageTailor
|
||||
%ifarch x86_64
|
||||
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/x86_64/custom $RPM_BUILD_ROOT/opt/imageTailor
|
||||
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/x86_64/kiwi $RPM_BUILD_ROOT/opt/imageTailor
|
||||
%endif
|
||||
%ifarch aarch64
|
||||
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/aarch64/custom $RPM_BUILD_ROOT/opt/imageTailor
|
||||
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/aarch64/kiwi $RPM_BUILD_ROOT/opt/imageTailor
|
||||
%endif
|
||||
|
||||
%clean
|
||||
rm -rf ${RPM_BUILD_ROOT}
|
||||
@ -88,15 +114,22 @@ fi
|
||||
|
||||
|
||||
%files -n qtfs-client
|
||||
/lib/modules/%{kernel_version}/extra/qtfs.ko
|
||||
%attr(0700, root, root) /usr/bin/rexec_server
|
||||
%attr(0700, root, root) /usr/bin/rexec
|
||||
%attr(0644, root, root) /lib/modules/%{kernel_version}/extra/qtfs.ko
|
||||
%attr(0500, root, root) /usr/bin/rexec_server
|
||||
%attr(0500, root, root) /usr/bin/rexec
|
||||
%attr(0500, root, root) /usr/lib/libudsproxy.so
|
||||
%attr(0500, root, root) /usr/bin/udsproxyd
|
||||
%attr(0500, root, root) /usr/local/bin/qtcfg
|
||||
%attr(0400, root, root) /etc/rexec/whitelist
|
||||
|
||||
%files -n qtfs-server
|
||||
/lib/modules/%{kernel_version}/extra/qtfs_server.ko
|
||||
%attr(0700, root, root) /usr/bin/engine
|
||||
%attr(0700, root, root)/usr/bin/rexec_server
|
||||
%attr(0700, root, root)/usr/bin/rexec
|
||||
%attr(0644, root, root) /lib/modules/%{kernel_version}/extra/qtfs_server.ko
|
||||
%attr(0500, root, root) /usr/bin/engine
|
||||
%attr(0500, root, root) /usr/bin/rexec_server
|
||||
%attr(0500, root, root) /usr/bin/rexec
|
||||
%attr(0500, root, root) /usr/bin/qtcfg
|
||||
%attr(0400, root, root) /etc/qtfs/whitelist
|
||||
%attr(0400, root, root) /etc/rexec/whitelist
|
||||
|
||||
%files -n dpuos-imageTailor-config
|
||||
/opt/imageTailor/custom/*
|
||||
@ -108,12 +141,59 @@ sed -i '/# product cut_conf/a\dpuos kiwi/minios/cfg_dpuos yes' /opt/imageT
|
||||
sed -i '/<repository_rule>/a\dpuos 1 rpm-dir euler_base' /opt/imageTailor/repos/RepositoryRule.conf
|
||||
|
||||
%changelog
|
||||
* Thu Dec 15 2022 YangXin <245051644@qq.com> 1.1-3
|
||||
* Tue Jun 25 2024 liqiang <liqiang64@huawei.com> 1.10-2
|
||||
- Refactor syscall wrapper for aarch64 reduce the memory
|
||||
|
||||
* Fri May 24 2024 liqiang <liqiang64@huawei.com> 1.10-1
|
||||
- Update to v1.10 for some features and bugfix
|
||||
|
||||
* Tue Dec 26 2023 liqiang <liqiang64@huawei.com> 1.6-7
|
||||
- Update recent bugfixes
|
||||
|
||||
* Sat Dec 16 2023 liqiang <liqiang64@huawei.com> 1.6-6
|
||||
- Update readme description and fix a bug
|
||||
|
||||
* Sat Dec 16 2023 liqiang <liqiang64@huawei.com> 1.6-5
|
||||
- fix event misalignment problem
|
||||
|
||||
* Thu Dec 14 2023 liqiang <liqiang64@huawei.com> 1.6-4
|
||||
- Fix suspend and fd leak of fifo
|
||||
|
||||
* Wed Dec 13 2023 liqiang <liqiang64@huawei.com> 1.6-3
|
||||
- Update some bugfix
|
||||
|
||||
* Sat Dec 9 2023 liqiang <liqiang64@huawei.com> 1.6-2
|
||||
- fix some problem of fifo, resolve problem in libvirt
|
||||
|
||||
* Fri Dec 1 2023 Guangxing Deng <dengguangxing@huawei.com> 1.6-1
|
||||
- Upgrade dpu-utilities version to 1.6
|
||||
|
||||
* Thu Nov 23 2023 Guangxing Deng <dengguangxing@huawei.com> 1.5-1
|
||||
- Upgrade dpu-utilities version to 1.5
|
||||
|
||||
* Mon Aug 21 2023 Weifeng Su <suweifeng1@huawei.com> 1.4-3
|
||||
- Adapt for kernel 6.4
|
||||
|
||||
* Mon Jun 12 2023 Weifeng Su <suweifeng1@huawei.com> 1.4-2
|
||||
- Sync patches from source
|
||||
|
||||
* Fri Jun 2 2023 Weifeng Su <suweifeng1@huawei.com> 1.4-1
|
||||
- Upgrade dpu-utilities version to 1.4
|
||||
|
||||
* Tue Mar 21 2023 Weifeng Su <suweifeng1@huawei.com> 1.3-1
|
||||
- Upgrade dpu-utilities version to 1.3
|
||||
|
||||
* Thu Dec 15 2022 YangXin <245051644@qq.com> 1.1-4
|
||||
- Fix inode sync error between client and server.
|
||||
* Thu Dec 08 2022 YangXin <245051644@qq.com> 1.1-2
|
||||
- Fix error of qtfs and modify rexec to enable reading net addr from file.
|
||||
* Thu Dec 8 2022 Weifeng Su <suweifeng1@huawei.com> 1.1-3
|
||||
- Sync patches from master
|
||||
|
||||
* Thu Dec 1 2022 Weifeng Su <suweifeng1@huawei.com> 1.1-2
|
||||
- add path put in xattr set
|
||||
|
||||
* Mon Nov 28 2022 Weifeng Su <suweifeng1@huawei.com> 1.1-1
|
||||
- Upgrade dpu-utilities version to 1.1
|
||||
|
||||
* Wed Aug 17 2022 yangxin <245051644@qq.com> 1.0-2
|
||||
- Split dpu-utilities into three packages.
|
||||
* Fri Aug 12 2022 yangxin <245051644@qq.com> 1.0-1
|
||||
|
||||
BIN
v1.1.tar.gz
BIN
v1.1.tar.gz
Binary file not shown.
BIN
v1.10.tar.gz
Normal file
BIN
v1.10.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user