Compare commits

..

No commits in common. "57bf79288a6a81dd4ac366d340d6a29189d77f28" and "5e924a91c25e0f93dbf244d9980e9bf68b21322e" have entirely different histories.

10 changed files with 6 additions and 373 deletions

View File

@ -1,24 +0,0 @@
From 06a6cd75ae1b99b956e8135b7478dd9e0f7bbdb9 Mon Sep 17 00:00:00 2001
From: jxy_git <jiangxinyu@kylinos.cn>
Date: Wed, 24 Aug 2022 17:29:21 +0800
Subject: [PATCH] Fix fence_virtd.service stop failed
---
fence_virtd.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/fence_virtd.service.in b/fence_virtd.service.in
index 14c2b3a..766c986 100644
--- a/fence_virtd.service.in
+++ b/fence_virtd.service.in
@@ -10,6 +10,7 @@ After=corosync.service
Requires=basic.target
Requires=network.target
+Requires=libvirtd.service
[Install]
WantedBy=multi-user.target
--
2.33.0

View File

@ -1,147 +0,0 @@
diff -uNr a/client/Makefile.in b/client/Makefile.in
--- a/client/Makefile.in 2017-06-05 20:24:36.000000000 +0200
+++ b/client/Makefile.in 2019-04-09 15:04:01.910270557 +0200
@@ -24,7 +24,7 @@
`xml2-config --cflags`
# nss sucks in way too much stuff
-LIBS+=-lnss3 `xml2-config --libs`
+LIBS+=-lnss3 `xml2-config --libs` -Wl,-z,now
TARGETS=${TARGET}
@@ -40,7 +40,16 @@
ln -snf $^ $@
fence_virt: ${fence_virt_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -L../common -lfence_virt
+ $(CC) $(CFLAGS) -o $@ $^ -shared $(LIBS) -L../common -lfence_virt
+
+mcast.o: mcast.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
+options.o: options.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
+serial.o: serial.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^ $(INCLUDES)
diff -uNr a/common/Makefile.in b/common/Makefile.in
--- a/common/Makefile.in 2017-06-05 20:24:36.000000000 +0200
+++ b/common/Makefile.in 2019-04-09 15:07:17.456815023 +0200
@@ -24,6 +24,18 @@
libfence_virt.a: ${libfence_virt_a_SOURCE:.c=.o}
ar rc $@ $^
+fdops.o: fdops.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
+ip_lookup.o: ip_lookup.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
+mcast.o: mcast.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
+tcp.o: tcp.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^ $(INCLUDES)
diff -uNr a/config/Makefile.in b/config/Makefile.in
--- a/config/Makefile.in 2017-06-05 20:24:36.000000000 +0200
+++ b/config/Makefile.in 2019-04-09 13:53:38.538444645 +0200
@@ -42,7 +42,7 @@
$(LEX) -oconfig.c config.l
%.o: %.c
- $(CC) $(CFLAGS) -c -o $@ $^ $(INCLUDES)
+ $(CC) $(CFLAGS) -fPIE -c -o $@ $^ $(INCLUDES)
clean:
rm -f ${TARGETS} *~ *.o testprog config.tab.c config.tab.h config.c
diff -uNr a/Makefile.top.in b/Makefile.top.in
--- a/Makefile.top.in 2017-06-05 20:24:36.000000000 +0200
+++ b/Makefile.top.in 2019-04-09 15:17:52.488438333 +0200
@@ -2,7 +2,9 @@
CXX=@CXX@
CFLAGS=@CFLAGS@
-CFLAGS+=-fPIC -Wall -Wformat=2 -Wstrict-prototypes -Wshadow -D_GNU_SOURCE
+CFLAGS+=-Wall -Wformat=2 -Wstrict-prototypes -Wshadow -D_GNU_SOURCE
+CXXFLAGS=@CXXFLAGS@
+CXXFLAGS+=-Wall -Wformat=2 -Wstrict-prototypes -Wshadow -D_GNU_SOURCE
LEX=@LEX@
YACC=@YACC@
diff -uNr a/server/Makefile.in b/server/Makefile.in
--- a/server/Makefile.in 2017-06-05 20:24:36.000000000 +0200
+++ b/server/Makefile.in 2019-04-09 15:11:51.692932810 +0200
@@ -32,7 +32,7 @@
XML_LIBS=`xml2-config --libs`
INCLUDES=-I../include `nss-config --cflags` `nspr-config --cflags` `xml2-config --cflags`
-LIBS+=-L../common -lfence_virt -Wl,-wrap,syslog,-wrap,closelog -lpthread -luuid
+LIBS+=-L../common -lfence_virt -Wl,-z,now,-wrap,syslog,-wrap,closelog -lpthread -luuid
MODULE_PATH=${libdir}/${PACKAGE_NAME}
@@ -150,37 +150,46 @@
all: ${TARGETS} ${MODULES}
fence_virtd: ${fence_virtd_SOURCES:.c=.o} ${fence_virtd_cxx_SOURCES:.cpp=.opp}
- $(CXX) -o $@ $^ $(MAIN_LIBS) $(LIBS)
+ $(CXX) $(CXXFLAGS) -o $@ $^ $(MAIN_LIBS) $(LIBS)
multicast.so: ${multicast_so_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -shared $(NSS_LIBS)
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS) -shared $(NSS_LIBS)
libvirt.so: ${libvirt_so_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -shared $(VIRT_LIBS) $(UUID_LIBS)
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS) -shared $(VIRT_LIBS) $(UUID_LIBS)
libvirt-qmf.so: ${libvirt_qmf_so_SOURCES:.c=.o} ${libvirt_qmf_cxx_so_SOURCES:.cpp=.opp}
- $(CXX) -o $@ $^ $(LIBS) -shared $(VIRT_QPID)
+ $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) -shared $(VIRT_QPID)
pm-fence.so: ${pm_fence_so_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -shared $(PACEMAKER_LIBS)
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS) -shared $(PACEMAKER_LIBS)
cpg.so: ${cpg_so_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -shared $(VIRT_LIBS) $(UUID_LIBS) $(XML_LIBS) $(COROSYNC_LIBS)
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS) -shared $(VIRT_LIBS) $(UUID_LIBS) $(XML_LIBS) $(COROSYNC_LIBS)
null.so: ${null_so_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -shared
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS) -shared
serial.so: ${serial_so_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -shared $(VIRT_LIBS) $(UUID_LIBS) $(XML_LIBS)
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS) -shared $(VIRT_LIBS) $(UUID_LIBS) $(XML_LIBS)
tcp.so: ${tcp_so_SOURCES:.c=.o}
- $(CC) -o $@ $^ $(LIBS) -shared $(NSS_LIBS)
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS) -shared $(NSS_LIBS)
+
+cpg-virt.o: cpg-virt.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
+virt.o: virt.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+
+virt-serial.o: virt-serial.c
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^ $(INCLUDES)
%.opp: %.cpp
- $(CXX) $(CFLAGS) -c -o $@ $^ $(INCLUDES)
+ $(CXX) $(CXXFLAGS) -c -o $@ $^ $(INCLUDES)
install: all
if [ ! -d ${DESTDIR}/${sbindir} ]; then \

View File

@ -1,21 +0,0 @@
diff -uNr a/client/Makefile.in b/client/Makefile.in
--- a/client/Makefile.in 2019-04-10 11:06:55.428378274 +0200
+++ b/client/Makefile.in 2019-04-10 13:02:54.734002880 +0200
@@ -40,16 +40,7 @@
ln -snf $^ $@
fence_virt: ${fence_virt_SOURCES:.c=.o}
- $(CC) $(CFLAGS) -o $@ $^ -shared $(LIBS) -L../common -lfence_virt
-
-mcast.o: mcast.c
- $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
-
-options.o: options.c
- $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
-
-serial.o: serial.c
- $(CC) $(CFLAGS) -fPIC -c -o $@ $^ $(INCLUDES)
+ $(CC) $(CFLAGS) -pie -o $@ $^ $(LIBS) -L../common -lfence_virt
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^ $(INCLUDES)

View File

@ -1,35 +0,0 @@
From 83e507cd236c304ce6b95b2ba52d3894f8002dc8 Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Fri, 9 Nov 2018 13:10:29 +0100
Subject: [PATCH] fence_virt: dont report success for incorrect parameters
---
client/main.c | 2 +-
client/options.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/client/main.c b/client/main.c
index 8e94093..a3135e3 100644
--- a/client/main.c
+++ b/client/main.c
@@ -112,7 +112,7 @@ main(int argc, char **argv)
args.mode = MODE_VSOCK;
if (args.flags & F_ERR) {
- if (args.op != FENCE_VALIDATEALL)
+ if (args.op != FENCE_VALIDATEALL)
args_usage(argv[0], my_options, (argc == 1));
exit(1);
}
diff --git a/client/options.c b/client/options.c
index a3f321b..4b5ed56 100644
--- a/client/options.c
+++ b/client/options.c
@@ -904,6 +904,7 @@ args_get_stdin(const char *optstr, fence_virt_args_t *args)
"parse warning: "
"illegal variable '%s' on line %d\n", name,
line);
+ args->flags |= F_ERR;
continue;
}

View File

@ -1,29 +0,0 @@
From 36367a99eb803a7941f6cbfd6086e7a71bf91e21 Mon Sep 17 00:00:00 2001
From: Andrew Price <anprice@redhat.com>
Date: Tue, 29 Oct 2019 11:27:06 +0000
Subject: [PATCH] fence_virtd: Fix segfault in vl_get when no domains are found
If virConnectListAllDomains() returns 0 on every iteration, the loop
will end with a vl == NULL and the pointer dereference in the qsort()
call will result in a segfault. Check for NULL on completion of the loop
to guard against that.
Signed-off-by: Andrew Price <anprice@redhat.com>
---
server/virt.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/server/virt.c b/server/virt.c
index 9710791..ed08e0c 100644
--- a/server/virt.c
+++ b/server/virt.c
@@ -128,6 +128,9 @@ virt_list_t *vl_get(virConnectPtr *vp, int vp_count, int my_id)
_free_dom_list(dom_list, ret);
}
+ /* No domains found */
+ if (!vl)
+ return NULL;
/* We have all the locally running domains & states now */
/* Sort */

View File

@ -1,81 +0,0 @@
From 958c0035aa6a69149c1a0fa218863c26e755d9e6 Mon Sep 17 00:00:00 2001
From: Ryan McCabe <rmccabe@redhat.com>
Date: Fri, 19 Jan 2018 11:04:22 -0500
Subject: [PATCH] fence_virtd: Return control to main loop on select
interruption
Return control to the dispatch loop if select is interrupted by a
signal. The code that retried the select without breaking out of the
dispatch loop caused the daemon to not be able to be killed cleanly.
Resolves: https://github.com/ClusterLabs/fence-virt/issues/10
Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
---
server/mcast.c | 9 +++++++--
server/serial.c | 9 ++++++---
server/tcp.c | 9 +++++++--
4 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/server/mcast.c b/server/mcast.c
index 0336823..e103675 100644
--- a/server/mcast.c
+++ b/server/mcast.c
@@ -350,9 +350,14 @@ mcast_dispatch(listener_context_t c, struct timeval *timeout)
FD_ZERO(&rfds);
FD_SET(info->mc_sock, &rfds);
- n = _select_retry((info->mc_sock)+1, &rfds, NULL, NULL, timeout);
- if (n <= 0)
+ n = select((info->mc_sock)+1, &rfds, NULL, NULL, timeout);
+ if (n <= 0) {
+ if (errno == EINTR || errno == EAGAIN)
+ n = 0;
+ else
+ dbg_printf(2, "select: %s\n", strerror(errno));
return n;
+ }
slen = sizeof(sin);
len = recvfrom(info->mc_sock, &data, sizeof(data), 0,
diff --git a/server/serial.c b/server/serial.c
index 70eb22b..23d143d 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -272,9 +272,12 @@ serial_dispatch(listener_context_t c, struct timeval *timeout)
if (info->wake_fd > max)
max = info->wake_fd;
- n = _select_retry(max+1, &rfds, NULL, NULL, timeout);
- if (n < 0) {
- dbg_printf(2, "select: %s\n", strerror(errno));
+ n = select(max+1, &rfds, NULL, NULL, timeout);
+ if (n <= 0) {
+ if (errno == EINTR || errno == EAGAIN)
+ n = 0;
+ else
+ dbg_printf(2, "select: %s\n", strerror(errno));
return n;
}
diff --git a/server/tcp.c b/server/tcp.c
index 09366b7..bbd347e 100644
--- a/server/tcp.c
+++ b/server/tcp.c
@@ -278,9 +278,14 @@ tcp_dispatch(listener_context_t c, struct timeval *timeout)
FD_ZERO(&rfds);
FD_SET(info->listen_sock, &rfds);
- n = _select_retry(info->listen_sock + 1, &rfds, NULL, NULL, timeout);
- if (n <= 0)
+ n = select(info->listen_sock + 1, &rfds, NULL, NULL, timeout);
+ if (n <= 0) {
+ if (errno == EINTR || errno == EAGAIN)
+ n = 0;
+ else
+ dbg_printf(2, "select: %s\n", strerror(errno));
return n;
+ }
client_fd = accept(info->listen_sock, NULL, NULL);
if (client_fd < 0) {

BIN
fence-virt-0.4.0.tar.bz2 Normal file

Binary file not shown.

View File

@ -1,27 +1,22 @@
Name: fence-virt
Version: 0.4.0
Release: 12
Release: 7%{?dist}
Summary: A pluggable fencing framework for virtual machines
Group: System Environment/Base
License: GPLv2+
ExclusiveArch: x86_64 aarch64 ppc64le
%if 0%{?rhel}
ExclusiveArch: i686 x86_64
%endif
URL: http://fence-virt.sourceforge.net
Source0: https://github.com/ClusterLabs/fence-virt/archive/v%{version}.tar.gz
Patch0: bz1624110-1-harden-fPIE.patch
Patch1: bz1624110-2-fence_virt-fix-coredump.patch
Patch2: bz1668357-fence_virt-dont-report-success-incorrect-parameter.patch
Patch3: bz1766993-fence_virtd-1-fix-segfault-no-domains.patch
Patch4: bz1766993-fence_virtd-2-return-mainloop-on-interrupt.patch
Patch5: Fix-fence_virtd.service-stop-failed.patch
Source0: http://people.redhat.com/rmccabe/fence-virt/%{name}-%{version}.tar.bz2
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: corosynclib-devel libvirt-devel
BuildRequires: automake autoconf libxml2-devel nss-devel nspr-devel
BuildRequires: flex bison libuuid-devel
BuildRequires: gcc-c++ make
BuildRequires: systemd-units
Requires(post): systemd-sysv systemd-units
@ -100,12 +95,6 @@ are located on corosync cluster nodes.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1 -F1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build
./autogen.sh
@ -197,20 +186,6 @@ fi
%{_libdir}/%{name}/cpg.so
%changelog
* Thu Mar 7 2024 Ren Zhijie <zhijie.ren@shingroup.cn> - 0.4.0-12
- Add support for ppc64le
* Wed Aug 24 2022 jiangxinyu <jiangxinyu@kylinos.cn> - 0.4.0-11
- Add Fix-fence_virtd.service-stop-failed.patch
* Mon Feb 28 2022 jiangxinyu <jiangxinyu@kylinos.cn> - 0.4.0-10
- Fix fence_virtd.service stop failed
* Sat Feb 12 2022 jiangxinyu <jiangxinyu@kylinos.cn> - 0.4.0-9
- Add BuildRequires: gcc-c++ solves build error
* Fri Oct 30 2020 jiangxinyu <jiangxinyu@kylinos.cn> - 0.4.0-8
- add ExclusiveArch: aarch64
* Fri Apr 17 2020 houjian<jian.hou@kylinos.cn> - 0.4.0-7
- Init fence-virt project

View File

@ -1,5 +0,0 @@
---
version_control: github
src_repo: ClusterLabs/fence-virt
tag_prefix: ^v
separator: "."

Binary file not shown.