diff --git a/0001-add-path-put-in-xattr-set.patch b/0001-add-path-put-in-xattr-set.patch new file mode 100644 index 0000000000000000000000000000000000000000..64ae2aba02062f90e740f20df3de7406a79876e5 --- /dev/null +++ b/0001-add-path-put-in-xattr-set.patch @@ -0,0 +1,25 @@ +From 959f29ce47ff71cc40ffbd0857471b79074cb9a5 Mon Sep 17 00:00:00 2001 +From: liqiang +Date: Wed, 30 Nov 2022 20:30:29 +0800 +Subject: [PATCH 1/3] add path put in xattr set + +Signed-off-by: liqiang +--- + 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 + diff --git a/0002-Add-drop-link-and-dentry-invalid-in-unlink-and-rmdir.patch b/0002-Add-drop-link-and-dentry-invalid-in-unlink-and-rmdir.patch new file mode 100644 index 0000000000000000000000000000000000000000..caa370851753032a4db98e639a0caa3310144d35 --- /dev/null +++ b/0002-Add-drop-link-and-dentry-invalid-in-unlink-and-rmdir.patch @@ -0,0 +1,45 @@ +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 + diff --git a/0003-enable-rexec-read-net-addr-from-config-file.patch b/0003-enable-rexec-read-net-addr-from-config-file.patch new file mode 100644 index 0000000000000000000000000000000000000000..230f29fc5a331436208d56ee154ede0c270300a0 --- /dev/null +++ b/0003-enable-rexec-read-net-addr-from-config-file.patch @@ -0,0 +1,119 @@ +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 + diff --git a/dpu-utilities.spec b/dpu-utilities.spec index 0e553887c84590d0e300796d7449c9bd82b3a7cb..0bef0f2ff99b3c16761b89e47e710b422a56beb5 100644 --- a/dpu-utilities.spec +++ b/dpu-utilities.spec @@ -1,7 +1,7 @@ Name: dpu-utilities Summary: openEuler dpu utilities Version: 1.1 -Release: 1 +Release: 2 License: GPL-2.0 Source: https://gitee.com/openeuler/dpu-utilities/repository/archive/v%{version}.tar.gz ExclusiveOS: linux @@ -12,7 +12,9 @@ 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 %description This package contains the software utilities on dpu. @@ -105,9 +107,10 @@ sed -i '/# product cut_conf/a\dpuos kiwi/minios/cfg_dpuos yes' /opt/imageT sed -i '//a\dpuos 1 rpm-dir euler_base' /opt/imageTailor/repos/RepositoryRule.conf %changelog +* 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. * Mon Nov 28 2022 Weifeng Su 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