From 5e89a861764d68190d4a81f3746cc447cd014619 Mon Sep 17 00:00:00 2001 From: Cyber-SiKu Date: Thu, 16 Mar 2023 11:41:52 +0800 Subject: [PATCH] [fix]make tgtd to curvebs image 1. add tgtd to image 2. add modprobe Signed-off-by: Cyber-SiKu --- curvefs/docker/debian9/Dockerfile | 2 +- docker/debian9/Dockerfile | 20 ++++++++++++++++--- docker/debian9/compile/Dockerfile | 1 + docker/debian9/curve-tgt/Dockerfile | 31 +++++++++++++++++++++++++++++ docker/debian9/curve-tgt/Makefile | 4 ++++ nebd/src/part2/file_entity.cpp | 5 +++++ 6 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 docker/debian9/curve-tgt/Dockerfile create mode 100644 docker/debian9/curve-tgt/Makefile diff --git a/curvefs/docker/debian9/Dockerfile b/curvefs/docker/debian9/Dockerfile index 166fec558c..1c61148e82 100644 --- a/curvefs/docker/debian9/Dockerfile +++ b/curvefs/docker/debian9/Dockerfile @@ -4,5 +4,5 @@ COPY curvefs /curvefs COPY libmemcached.so libmemcached.so.11 libhashkit.so.2 /usr/lib/ RUN mkdir -p /etc/curvefs /core /etc/curve && chmod a+x /entrypoint.sh \ && cp /curvefs/tools/sbin/curvefs_tool /usr/bin \ - && cp curvefs/tools-v2/sbin/curve /usr/bin/ + && cp /curvefs/tools-v2/sbin/curve /usr/bin/ ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/debian9/Dockerfile b/docker/debian9/Dockerfile index a9d4e67810..86be5ead83 100644 --- a/docker/debian9/Dockerfile +++ b/docker/debian9/Dockerfile @@ -1,9 +1,23 @@ FROM opencurvedocker/curve-base:debian9 +COPY --from=opencurvedocker/curve-base:curve-tgt-debian9 /curve-tgt/ /curve-tgt/ +COPY --from=opencurvedocker/curve-base:curve-tgt-debian9 /curve/curve-sdk /curve-tgt/curve-sdk +RUN apt update \ + && apt install -y kmod \ + && cd /curve-tgt/curve-sdk \ + && cp -f lib/* /usr/lib \ + && cp -f bin/* /usr/bin \ + && mkdir -p /usr/curvefs \ + && cp -f curvefs/* /usr/curvefs \ + && cp -f include/* /usr/include \ + && ldconfig \ + && cd /curve-tgt/ \ + && make install-programs \ + && rm -rf /curve-tgt COPY entrypoint.sh / COPY curvebs /curvebs RUN mkdir -p /etc/curve /etc/nebd /curve/init.d/ \ && chmod a+x /entrypoint.sh \ - && cp curvebs/nbd/sbin/curve-nbd /usr/bin/ \ - && cp curvebs/tools/sbin/curve_ops_tool /usr/bin/ \ - && cp curvebs/tools-v2/sbin/curve /usr/bin/ + && cp /curvebs/nbd/sbin/curve-nbd /usr/bin/ \ + && cp /curvebs/tools/sbin/curve_ops_tool /usr/bin/ \ + && cp /curvebs/tools-v2/sbin/curve /usr/bin/ ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/debian9/compile/Dockerfile b/docker/debian9/compile/Dockerfile index cfc68e429b..2d8dacc2f1 100644 --- a/docker/debian9/compile/Dockerfile +++ b/docker/debian9/compile/Dockerfile @@ -53,6 +53,7 @@ RUN echo "deb http://mirrors.163.com/debian/ stretch main\n" \ gdb \ unzip \ musl-tools \ + libunwind8-dev \ && mkdir -p /etc/apt/keyrings \ && curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ diff --git a/docker/debian9/curve-tgt/Dockerfile b/docker/debian9/curve-tgt/Dockerfile new file mode 100644 index 0000000000..6f9b3f865f --- /dev/null +++ b/docker/debian9/curve-tgt/Dockerfile @@ -0,0 +1,31 @@ +FROM opencurvedocker/curve-base:build-debian9 AS curve-sdk +ENV GITHUB_PROXY=https://ghproxy.com/ +RUN git clone ${GITHUB_PROXY}https://github.com/opencurve/curve \ + && cd /curve \ + && bash replace-curve-repo.sh \ + && make dep stor=fs \ + && bash mk-tar.sh \ + && mv curve_*.tar.gz curve_sdk.tar.gz + +FROM opencurvedocker/curve-base:build-debian9 AS curve-tgt +ENV GITHUB_PROXY=https://ghproxy.com/ +COPY --from=curve-sdk /curve/curve_sdk.tar.gz / +RUN tar -zxvf curve_sdk.tar.gz \ + && rm curve_sdk.tar.gz \ + && cd /curve/curve-sdk \ + && cp -f lib/* /usr/lib \ + && cp -f bin/* /usr/bin \ + && mkdir -p /usr/curvefs \ + && cp -f curvefs/* /usr/curvefs \ + && cp -f include/* /usr/include \ + && ldconfig \ + && apt update \ + && apt install -y devscripts \ + librdmacm-dev \ + libibverbs-dev \ + xsltproc \ + docbook-xsl \ + && cd / \ + && git clone --branch curve ${GITHUB_PROXY}https://github.com/opencurve/curve-tgt \ + && cd curve-tgt \ + && make programs diff --git a/docker/debian9/curve-tgt/Makefile b/docker/debian9/curve-tgt/Makefile new file mode 100644 index 0000000000..36e1ad1f72 --- /dev/null +++ b/docker/debian9/curve-tgt/Makefile @@ -0,0 +1,4 @@ +.PHONY: build + +build: + docker build --target curve-tgt -t opencurvedocker/curve-base:curve-tgt-debian9 . diff --git a/nebd/src/part2/file_entity.cpp b/nebd/src/part2/file_entity.cpp index 48a7f77508..aa6916d693 100644 --- a/nebd/src/part2/file_entity.cpp +++ b/nebd/src/part2/file_entity.cpp @@ -370,6 +370,11 @@ int NebdFileEntity::UpdateFileStatus(NebdFileInstancePtr fileInstance) { fileInstance_ = fileInstance; status_ = NebdFileStatus::OPENED; timeStamp_ = TimeUtility::GetTimeofDayMs(); + OpenFlags flags; + if (fileInstance->xattr.count(kOpenFlagsAttrKey) && + flags.ParseFromString(fileInstance->xattr.at(kOpenFlagsAttrKey))) { + openFlags_.reset(new OpenFlags{flags}); + } return 0; }