diff --git a/0001-add-path-put-in-xattr-set.patch b/0001-add-path-put-in-xattr-set.patch deleted file mode 100644 index 64ae2aba02062f90e740f20df3de7406a79876e5..0000000000000000000000000000000000000000 --- a/0001-add-path-put-in-xattr-set.patch +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100644 index caa370851753032a4db98e639a0caa3310144d35..0000000000000000000000000000000000000000 --- a/0002-Add-drop-link-and-dentry-invalid-in-unlink-and-rmdir.patch +++ /dev/null @@ -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 - diff --git a/0003-enable-rexec-read-net-addr-from-config-file.patch b/0003-enable-rexec-read-net-addr-from-config-file.patch deleted file mode 100644 index 230f29fc5a331436208d56ee154ede0c270300a0..0000000000000000000000000000000000000000 --- a/0003-enable-rexec-read-net-addr-from-config-file.patch +++ /dev/null @@ -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 - diff --git a/0004-Fix-inode-sync-error-between-client-and-server.patch b/0004-Fix-inode-sync-error-between-client-and-server.patch deleted file mode 100644 index 2ebc11b23b8685456bc4becdfcffca48dfe11d2d..0000000000000000000000000000000000000000 --- a/0004-Fix-inode-sync-error-between-client-and-server.patch +++ /dev/null @@ -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 - diff --git a/dpu-utilities.spec b/dpu-utilities.spec index 3a6ec0a77a52efd5f0c41c1e5ad241f83b47690b..099d511b6b13b8393103610640b5a5d483ca1253 100644 --- a/dpu-utilities.spec +++ b/dpu-utilities.spec @@ -1,7 +1,7 @@ Name: dpu-utilities Summary: openEuler dpu utilities -Version: 1.1 -Release: 3 +Version: 1.4 +Release: 1 License: GPL-2.0 Source: https://gitee.com/openeuler/dpu-utilities/repository/archive/v%{version}.tar.gz ExclusiveOS: linux @@ -10,12 +10,8 @@ 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 + %description This package contains the software utilities on dpu. @@ -28,12 +24,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,15 +48,34 @@ 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 @@ -88,15 +105,21 @@ 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 %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 +131,23 @@ 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 15 2022 YangXin <245051644@qq.com> 1.1-3 +* Fri Jun 2 2023 Weifeng Su 1.4-1 +- Upgrade dpu-utilities version to 1.4 + +* Tue Mar 21 2023 Weifeng Su 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 1.1-3 +- Sync patches from master + +* Thu Dec 1 2022 Weifeng Su 1.1-2 +- add path put in xattr set + * 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 diff --git a/v1.1.tar.gz b/v1.1.tar.gz deleted file mode 100755 index 9a38baa8ef719584d666f446bc46a73e6391a81e..0000000000000000000000000000000000000000 Binary files a/v1.1.tar.gz and /dev/null differ diff --git a/v1.4.tar.gz b/v1.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..786b99f3164f87b3bd097f0f8933644fa6060c30 Binary files /dev/null and b/v1.4.tar.gz differ