Add corosync qdevice#29269
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds new OpenWrt feed packages and supporting patches to provide Corosync clustering components (libqb, kronosnet, corosync) and the corosync-qnetd quorum device daemon for maintaining quorum in 2-node clusters.
Changes:
- Introduce new packages:
libs/libqb,net/kronosnet(+ crypto backend subpackages),net/corosync(splitlibcorosync+corosync), andnet/corosync-qdevice. - Add OpenWrt-specific patches to corosync-qdevice certutil scripts (bash shebang + CA/noise-file handling).
- Add an init script and a post-install hook to initialize the qnetd NSS DB.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| libs/libqb/Makefile | New libqb package definition and install/dev-install rules. |
| net/kronosnet/Makefile | New kronosnet package definition with crypto backend subpackages and install rules. |
| net/corosync/Makefile | New corosync packaging split into libcorosync and corosync, with install/dev-install rules. |
| net/corosync-qdevice/Makefile | New corosync-qdevice package, init installation, and postinst initialization of NSS DB. |
| net/corosync-qdevice/files/corosync-qdevice.init | New procd init script to run corosync-qnetd. |
| net/corosync-qdevice/patches/0001-bash-path.patch | Forces bash shebang for upstream certutil scripts. |
| net/corosync-qdevice/patches/0002-initialize-ca.patch | OpenWrt adaptations: skip chown, adjust noise generation and hashing. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
397ccd1 to
b071be8
Compare
b071be8 to
8fa0a14
Compare
95ba6ad to
4920e20
Compare
4920e20 to
d78e2fa
Compare
BKPepe
left a comment
There was a problem hiding this comment.
In an ideal world, I would love for these patches to be in a state where they can be upstreamed, and it would be even better if they were actually merged upstream. After all, it would save a lot of work in OpenWrt, as we wouldn't have to rebase them every time due to offsets, changes, and so on. The patches definitely need to have some kind of header—someone created them, after all. And looking at two of the patches, removing libxml2 and doxygen2man can certainly be handled better in the upstream project rather than just deleting lines downstream.
d78e2fa to
90f9a50
Compare
90f9a50 to
c2a3d89
Compare
|
Fixed the SONAME symlink issue: changed |
c2a3d89 to
8cd2191
Compare
|
Added |
|
|
||
| case "$1" in | ||
| corosync-qdevice) | ||
| corosync-qnetd -v 2>&1 | grep -F "$2" |
There was a problem hiding this comment.
This is done by the generic tests already. Was this not working?
There was a problem hiding this comment.
This is the error from CI:
corosync-qdevice: No executables in the package provided version 3.0.4
corosync-qdevice: Generic tests failed
But only libqb and corosync-qdevice had a failure. I've removed the two test.sh files that weren't needed.
8cd2191 to
28357be
Compare
|
The --disable-man option was merged into libqb (ClusterLabs/libqb#515), but there is no ETA for a new release. Whenever they release it we can update the package and remove a patches. The PR for corosync-qdevice (corosync/corosync-qdevice#40) has seen no activity. Last commit to the repo was 2 month ago, I don't expect this to be included soon. I've added two I think I've implemented all the changes BKPepe and GeorgeSapkin asked for. |
| From: Sven Kirmess <sven.kirmess@kzone.ch> | ||
| Date: Fri, 8 May 2026 00:00:00 +0200 | ||
| Subject: [PATCH] configure: remove libxml2 build dependency | ||
|
|
||
| libxml2 is only needed by the doxygen2man tool to generate man pages. | ||
| When cross-compiling, doxygen2man is not built from source, so libxml2 | ||
| is not required. Remove the PKG_CHECK_MODULES call to eliminate libxml2 | ||
| as a build dependency. | ||
|
|
||
| --- a/configure.ac | ||
| +++ b/configure.ac |
There was a problem hiding this comment.
Could you please use the latest version of this patch from ClusterLabs/libqb#515 ? Just append .patch to the end of the URL.
| PKG_FIXUP:=autoreconf | ||
| PKG_INSTALL:=1 | ||
|
|
||
| PKG_BUILD_DEPENDS:=zstd liblz4 lzo xz bzip2 nss openssl libqb libnl |
There was a problem hiding this comment.
Do you need to explicitly specify this if it is already in depends?
| $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin | ||
| $(INSTALL_DIR) $(1)/usr/sbin | ||
| $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin |
There was a problem hiding this comment.
Do we really need to copy everything? We're losing control over what actually ends up in the package.
libqb provides high-performance, reusable features for client/server architecture, including IPC, logging, and ringbuffer. Used by Corosync and other cluster software. Includes patches to remove libxml2 dependency, which was only required for doxygen2man man page generation and not needed at runtime. Link: https://github.com/ClusterLabs/libqb Signed-off-by: Sven Kirmess <sven.kirmess@kzone.ch>
kronosnet (knet) is a network abstraction layer designed for High Availability use cases. It provides multipoint-to-multipoint communication with link aggregation, redundancy, and optional compression/encryption. Used as the transport layer by Corosync. Compression and crypto backends are split into separate packages: - kronosnet-compress-lz4, lz4hc, zlib, lzo2, lzma, bzip2, zstd - kronosnet-crypto-nss: Mozilla NSS backend - kronosnet-crypto-openssl: OpenSSL backend Link: https://github.com/kronosnet/kronosnet Signed-off-by: Sven Kirmess <sven.kirmess@kzone.ch>
Corosync provides cluster infrastructure including reliable messaging, membership, and quorum. Split into two packages: - libcorosync: shared libraries only - corosync: daemon and management tools, depends on libcorosync Link: https://corosync.github.io/corosync/ Signed-off-by: Sven Kirmess <sven.kirmess@kzone.ch>
901a012 to
c3b2aab
Compare
corosync-qnetd is a daemon providing an external quorum vote for Corosync clusters, allowing a 2-node cluster to maintain quorum when one node fails. Commonly used with Proxmox VE clusters. Includes two patches for musl/busybox compatibility: - fix bash shebang path - fix corosync-qnetd-certutil for busybox (ps, sha256sum, chown) Link: https://github.com/corosync/corosync-qdevice Signed-off-by: Sven Kirmess <sven.kirmess@kzone.ch>
c3b2aab to
ae058ab
Compare
|
Addressed all review feedback:
|
📦 Package Details
Maintainer: @skirmess, @sshaikh
Description:
Adds 4 new packages providing Corosync cluster infrastructure and the
corosync-qnetdquorum device daemon. These allow a 2-node Proxmox VE(or other Corosync-based) cluster to maintain quorum when one node fails.
Packages added (in dependency order):
libs/libqb– high-performance IPC/logging librarynet/kronosnet– network transport layer for Corosync (+ crypto subpackages)net/corosync– cluster engine split intolibcorosync+corosyncnet/corosync-qdevice– quorum device daemon (corosync-qnetd)🧪 Run Testing Details
✅ Formalities
If your PR contains a patch:
git am