d377bc2ee5
* Changelog from Linbit: 9.1.22 (api:genl2/proto:86-121/transport:18) -------- * Upgrade from partial resync to a full resync if necessary when the user manually resolves a split-brain situation * Fix a potential NULL deref when a disk fails while doing a forget-peer operation. * Fix a rcu_read_lock()/rcu_read_unlock() imbalance * Restart the open() syscall when a process auto promoting a drbd device gets interrupted by a signal * Remove a deadlock that caused DRBD to connect sometimes exceptionally slow * Make detach operations interruptible * Added dev_is_open to events2 status information * Improve log readability for 2PC state changes and drbd-threads * Updated compability code for Linux 6.9 9.1.21 (api:genl2/proto:86-121/transport:18) -------- * fix a deadlock that can trigger when deleting a connection and another connection going down in parallel. This is a regression of 9.1.20 * Fix an out-of-bounds access when scanning the bitmap. It leads to a crash when the bitmap ends on a page boundary, and this is also a regression in 9.1.20. 9.1.20 (api:genl2/proto:86-121/transport:18) -------- * Fix a kernel crash that is sometimes triggered when downing drbd resources in a specific, unusual order (was triggered by the Kubernetes CSI driver) * Fix a rarely triggering kernel crash upon adding paths to a connection by rehauling the path lists' locking * Fix the continuation of an interrupted initial resync * Fix the state engine so that an incapable primary does not outdate indirectly reachable secondary nodes * Fix a logic bug that caused drbd to pretend that a peer's disk is outdated when doing a manual disconnect on a down connection; with that cured impact on fencing and quorum. * Fix forceful demotion of suspended devices * Rehaul of the build system to apply compatibility patches out of place that allows one to build for different target kernels from a single drbd source tree * Updated compability code for Linux 6.8 9.1.19 (api:genl2/proto:86-121/transport:18) -------- * Fix a resync decision case where drbd wrongly decided to do a full resync, where a partial resync was sufficient; that happened in a specific connect order when all nodes were on the same data generation (UUID) * Fix the online resize code to obey cached size information about temporal unreachable nodes * Fix a rare corner case in which DRBD on a diskless primary node failed to re-issue a read request to another node with a backing disk upon connection loss on the connection where it shipped the read request initially * Make timeout during promotion attempts interruptible * No longer write activity-log updates on the secondary node in a cluster with precisely two nodes with backing disk; this is a performance optimization * Reduce CPU usage of acknowledgment processing 9.1.18 (api:genl2/proto:86-121/transport:18) -------- * Fixed connecting nodes with differently sized backing disks, specifically when the smaller node is primary, before establishing the connections * Fixed thawing a device that has I/O frozen after loss of quorum when a configuration change eases its quorum requirements * Properly fail TLS if requested (only available in drbd-9.2) * Fixed a race condition that can cause auto-demote to trigger right after an explicit promote * Fixed a rare race condition that could mess up the handshake result before it is committed to the replication state. * Preserve "tiebreaker quorum" over a reboot of the last node (3-node clusters only) * Update compatibility code for Linux 6.6 9.1.17 (api:genl2/proto:86-121/transport:18) -------- * fix a potential crash when configuring drbd to bind to a non-existent local IP address (this is a regression of drbd-9.1.8) * Cure a very seldom triggering race condition bug during establishing connections; when you triggered it, you got an OOPS hinting to list corruption * fix a race condition regarding operations on the bitmap while forgetting a bitmap slot and a pointless warning * Fix handling of unexpected (on a resource in secondary role) write requests * Fix a corner case that can cause a process to hang when closing the DRBD device, while a connection gets re-established * Correctly block signal delivery during auto-demote * Improve the reliability of establishing connections * Do not clear the transport with `net-options --set-defaults`. This fix avoids unexpected disconnect/connect cycles upon an `adjust` when using the 'lb-tcp' or 'rdma' transports in drbd-9.2. * New netlink packet to report path status to drbdsetup * Improvements to the content and rate-limiting of many log messages * Update compatibility code and follow Linux upstream development until Linux 6.5 * remove patches which already included in the new version: 0001-drbd-allow-transports-to-take-additional-krefs-on-a-.patch 0002-drbd-improve-decision-about-marking-a-failed-disk-Ou.patch 0003-drbd-fix-error-path-in-drbd_get_listener.patch 0004-drbd-build-fix-spurious-re-build-attempt-of-compat.p.patch 0005-drbd-log-error-code-when-thread-fails-to-start.patch 0006-drbd-log-numeric-value-of-drbd_state_rv-as-well-as-s.patch 0007-drbd-stop-defining-__KERNEL_SYSCALLS__.patch 0008-compat-block-introduce-holder-ops.patch 0009-drbd-reduce-net_ee-not-empty-info-to-a-dynamic-debug.patch 0010-drbd-do-not-send-P_CURRENT_UUID-to-DRBD-8-peer-when-.patch 0011-compat-block-pass-a-gendisk-to-open.patch 0012-drbd-Restore-DATA_CORKED-and-CONTROL_CORKED-bits.patch 0013-drbd-remove-unused-extern-for-conn_try_outdate_peer.patch 0014-drbd-include-source-of-state-change-in-log.patch 0015-compat-block-use-the-holder-as-indication-for-exclus.patch 0016-drbd-Fix-net-options-set-defaults-to-not-clear-the-t.patch 0017-drbd-propagate-exposed-UUIDs-only-into-established-c.patch 0018-drbd-rework-autopromote.patch 0019-compat-block-remove-the-unused-mode-argument-to-rele.patch 0020-drbd-do-not-allow-auto-demote-to-be-interrupted-by-s.patch 0021-compat-sock-Remove-sendpage-in-favour-of-sendmsg-MSG.patch 0022-compat-block-replace-fmode_t-with-a-block-specific-t.patch 0023-compat-genetlink-remove-userhdr-from-struct-genl_inf.patch 0024-compat-fixup-FMODE_READ-FMODE_WRITE-usage.patch 0025-compat-drdb-Convert-to-use-bdev_open_by_path.patch 0026-compat-gate-blkdev_-patches-behind-bdev_open_by_path.patch boo1230635_01-compat-fix-nla_nest_start_noflag-test.patch boo1230635_02-drbd-port-block-device-access-to-file.patch * removed patches which are not needed anymore: boo1229062-re-enable-blk_queue_max_hw_sectors.patch bsc1226510-fix-build-err-against-6.9.3.patch * update: drbd_git_revision suse-coccinelle.patch drbd.spec * add upstream patches to align commit 13ada1be201e: 0001-drbd-properly-rate-limit-resync-progress-reports.patch 0002-drbd-inherit-history-UUIDs-from-sync-source-when-res.patch 0003-build-compat-fix-line-offset-in-annotation-pragmas-p.patch 0004-drbd-fix-exposed_uuid-going-backward.patch 0005-drbd-Proper-locking-around-new_current_uuid-on-a-dis.patch 0006-build-CycloneDX-fix-bom-ref-add-purl.patch 0007-build-Another-update-to-the-spdx-files.patch 0008-build-generate-spdx.json-not-tag-value-format.patch 0009-compat-fix-gen_patch_names-for-bdev_file_open_by_pat.patch 0010-compat-fix-nla_nest_start_noflag-test.patch 0011-compat-fix-blk_alloc_disk-rule.patch 0012-drbd-remove-const-from-function-return-type.patch 0013-drbd-don-t-set-max_write_zeroes_sectors-in-decide_on.patch 0014-drbd-split-out-a-drbd_discard_supported-helper.patch 0015-drbd-atomically-update-queue-limits-in-drbd_reconsid.patch 0016-compat-test-and-patch-for-queue_limits_start_update.patch 0017-compat-specify-which-essential-change-was-not-made.patch 0018-gen_patch_names-reorder-blk_mode_t.patch 0019-compat-fix-blk_queue_update_readahead-patch.patch 0020-compat-test-and-patch-for-que_limits-max_hw_discard_.patch 0021-compat-fixup-write_zeroes__no_capable.patch 0022-compat-fixup-queue_flag_discard__yes_present.patch 0023-drbd-move-flags-to-queue_limits.patch 0024-compat-test-and-patch-for-queue_limits.features.patch 0025-drbd-Annotate-struct-fifo_buffer-with-__counted_by.patch 0026-compat-test-and-patch-for-__counted_by.patch 0027-drbd-fix-function-cast-warnings-in-state-machine.patch 0028-Add-missing-documentation-of-peer_device-parameter-t.patch 0030-drbd-kref_put-path-when-kernel_accept-fails.patch 0031-build-fix-typo-in-Makefile.spatch.patch 0032-drbd-open-do-not-delay-open-if-already-Primary.patch * add patch to fix kernel imcompatibility issue (boo#1231290): boo1231290_fix_drbd_build_error_against_kernel_v6.11.0.patch OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=153
236 lines
8.4 KiB
Diff
236 lines
8.4 KiB
Diff
From ca3589743378a7750b9e6a8e19b904d57986cce4 Mon Sep 17 00:00:00 2001
|
|
From: Lars Ellenberg <lars.ellenberg@linbit.com>
|
|
Date: Wed, 28 Aug 2024 20:00:36 +0200
|
|
Subject: [PATCH 08/32] build: generate spdx.json, not "tag value" format
|
|
|
|
Generates .spdx.json files in SPDX-json format instead of tag/value.
|
|
This appears to be more machine friendly.
|
|
|
|
Use jq with "null" input and \(env.<environment-variable-name>) string interpolation in templates.
|
|
|
|
Move all this to a new ./sbom/ subdirectory.
|
|
---
|
|
Makefile | 74 ++-----------------
|
|
sbom/Makefile | 24 ++++++
|
|
.../drbd-kmod.cdx.json.in | 8 +-
|
|
sbom/drbd-kmod.spdx.json.in | 32 ++++++++
|
|
4 files changed, 68 insertions(+), 70 deletions(-)
|
|
create mode 100644 sbom/Makefile
|
|
rename drbd-kmod.cdx.json.in => sbom/drbd-kmod.cdx.json.in (84%)
|
|
create mode 100644 sbom/drbd-kmod.spdx.json.in
|
|
|
|
diff --git a/Makefile b/Makefile
|
|
index 80c20d24ab54..37ffcd777d09 100644
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -92,6 +92,8 @@ ifndef FDIST_VERSION
|
|
FDIST_VERSION := $(DIST_VERSION)
|
|
endif
|
|
|
|
+export REL_VERSION FDIST_VERSION
|
|
+
|
|
all: module tools
|
|
|
|
.PHONY: all tools module
|
|
@@ -189,76 +191,15 @@ drbd/.drbd_git_revision: FORCE
|
|
@echo >&2 "Need a git checkout to regenerate $@"; test -s $@
|
|
endif
|
|
|
|
-export define SPDX_TEMPLATE
|
|
-SPDXVersion: SPDX-2.3
|
|
-DataLicense: CC0-1.0
|
|
-SPDXID: SPDXRef-DOCUMENT
|
|
-DocumentName: drbd kernel module SBOM (software bill of materials)
|
|
-DocumentNamespace: https://linbit.org/spdx-docs/drbd-kmod-$(SPDX_VERSION)-$(SPDX_UUID)
|
|
-Creator: Person: Philipp Reisner (philipp.reisner@linbit.com)
|
|
-Created: $(SPDX_DATE)
|
|
-
|
|
-PackageName: $(SPDX_PKG_NAME)
|
|
-SPDXID: SPDXRef-Package-$(SPDX_PKG_NAME)
|
|
-PackageVersion: $(SPDX_VERSION)
|
|
-PackageSupplier: Organization: LINBIT HA-Solutions GmbH
|
|
-PackageDownloadLocation: https://github.com/LINBIT/drbd
|
|
-FilesAnalyzed: false
|
|
-PackageLicenseDeclared: GPL-2.0-only
|
|
-PackageCopyrightText: <text>2001-2008, LINBIT Information Technologies GmbH
|
|
-2008-$(SPDX_YEAR), LINBIT HA-Solutions GmbH</text>
|
|
-Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-Package-$(SPDX_PKG_NAME)
|
|
-endef
|
|
-
|
|
-# only call this wrapper from drbd-kmod_{sles,rhel}.spdx
|
|
-.PHONY: spdx-file
|
|
-spdx-file:
|
|
- @echo "$$SPDX_TEMPLATE" > $(SPDX_FILE_TMP)
|
|
-
|
|
-.PHONY: drbd-kmod_rhel.spdx drbd-kmod_sles.spdx
|
|
-drbd-kmod_rhel.spdx drbd-kmod_sles.spdx:
|
|
- @set -e; ( truncate -s0 $@.tmp; \
|
|
- SPDX_DATE="$$(date --utc +%FT%TZ)"; \
|
|
- SPDX_UUID="$$(cat /proc/sys/kernel/random/uuid)"; \
|
|
- SPDX_VERSION="$(REL_VERSION)"; \
|
|
- SPDX_YEAR="$$(date --utc +%Y)"; \
|
|
- case "$@" in \
|
|
- drbd-kmod_rhel.spdx) SPDX_PKG_NAME=kmod-drbd;; \
|
|
- drbd-kmod_sles.spdx) SPDX_PKG_NAME=drbd-kmp-default;; \
|
|
- *) false;; \
|
|
- esac; \
|
|
- test -n "$$SPDX_TEMPLATE"; \
|
|
- test -n "$$SPDX_DATE"; \
|
|
- test -n "$$SPDX_UUID"; \
|
|
- test -n "$$SPDX_VERSION"; \
|
|
- test -n "$$SPDX_YEAR"; \
|
|
- $(MAKE) spdx-file SPDX_UUID="$$SPDX_UUID" \
|
|
- SPDX_DATE="$$SPDX_DATE" \
|
|
- SPDX_FILE_TMP="$@.tmp" \
|
|
- SPDX_PKG_NAME="$$SPDX_PKG_NAME" \
|
|
- SPDX_VERSION="$$SPDX_VERSION" \
|
|
- SPDX_YEAR="$$SPDX_YEAR"; \
|
|
- mv $@.tmp $@; )
|
|
-
|
|
-# only call this wrapper from drbd-kmod.cdx.json
|
|
-.PHONY: cdx-sub
|
|
-cdx-sub:
|
|
- cat $(CDX_FILE).in | jq --args '.metadata.timestamp = "$(CDX_DATE)" | .metadata.component.version = "$(FDIST_VERSION)" | .metadata.component."bom-ref" = "$(PURL)" | .metadata.component.purl = "$(PURL)"' > $(CDX_FILE)
|
|
-
|
|
-.PHONY: drbd-kmod.cdx.json
|
|
-drbd-kmod.cdx.json:
|
|
- $(MAKE) -s cdx-sub CDX_DATE="$$(date --utc +%FT%TZ)" PURL="pkg:github/LINBIT/drbd@drbd-$(FDIST_VERSION)" CDX_FILE="$@"
|
|
- ! grep -q __PLACEHOLDER__ $@
|
|
-
|
|
# update of .filelist is forced:
|
|
.fdist_version: FORCE
|
|
@test -s $@ && test "$$(cat $@)" = "$(FDIST_VERSION)" || echo "$(FDIST_VERSION)" > $@
|
|
|
|
.filelist: .fdist_version FORCE
|
|
@$(GIT) ls-files --recurse -- ':!:.git*' $(if $(PRESERVE_DEBIAN),,':!:debian') > $@.new
|
|
+ @test -s $@.new # assert there is something in .filelist.new now
|
|
@mkdir -p drbd/drbd-kernel-compat/cocci_cache/
|
|
@find drbd/drbd-kernel-compat/cocci_cache/ -type f -not -path '*/\.*' >> $@.new
|
|
- @test -s $@.new # assert there is something in .filelist.new now
|
|
@mv $@.new $@
|
|
@echo "./.filelist updated."
|
|
|
|
@@ -273,9 +214,10 @@ drbd-kmod.cdx.json:
|
|
comma := ,
|
|
backslash_comma := \,
|
|
escape_comma = $(subst $(comma),$(backslash_comma),$(1))
|
|
-tgz-extra-files := \
|
|
- .fdist_version drbd/.drbd_git_revision .filelist \
|
|
- drbd-kmod_rhel.spdx drbd-kmod_sles.spdx drbd-kmod.cdx.json
|
|
+tgz-extra-files := .fdist_version drbd/.drbd_git_revision .filelist
|
|
+tgz-extra-files += sbom/drbd-kmod_rhel.spdx.json
|
|
+tgz-extra-files += sbom/drbd-kmod_sles.spdx.json
|
|
+tgz-extra-files += sbom/drbd-kmod.cdx.json
|
|
tgz:
|
|
test -s .filelist # .filelist must be present
|
|
test -n "$(FDIST_VERSION)" # FDIST_VERSION must be known
|
|
@@ -318,7 +260,7 @@ debrelease:
|
|
tarball:
|
|
$(MAKE) distclean
|
|
$(MAKE) check-submods check_all_committed drbd/.drbd_git_revision
|
|
- $(MAKE) drbd-kmod_rhel.spdx drbd-kmod_sles.spdx drbd-kmod.cdx.json
|
|
+ $(MAKE) -C sbom drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json drbd-kmod.cdx.json
|
|
$(MAKE) .filelist
|
|
$(MAKE) tgz
|
|
|
|
diff --git a/sbom/Makefile b/sbom/Makefile
|
|
new file mode 100644
|
|
index 000000000000..757f57e4db60
|
|
--- /dev/null
|
|
+++ b/sbom/Makefile
|
|
@@ -0,0 +1,24 @@
|
|
+
|
|
+# we inherit some variables from our "parent" Makefile
|
|
+THIS_MAKEFILE := $(lastword $(MAKEFILE_LIST))
|
|
+$(foreach v,REL_VERSION FDIST_VERSION,$(if $($(v)),,$(error "Do not use this Makefile ($(THIS_MAKEFILE)) directly! ($(v) missing))))
|
|
+
|
|
+all: drbd-kmod.cdx.json drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json
|
|
+
|
|
+export SPDX_VERSION SPDX_DATE SPDX_YEAR SPDX_UUID SPDX_PKG_NAME
|
|
+SPDX_VERSION:=$(REL_VERSION)
|
|
+SPDX_DATE:=$(shell date --utc +%FT%TZ)
|
|
+SPDX_YEAR:=$(firstword $(subst -, ,$(SPDX_DATE)))
|
|
+drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json: SPDX_UUID:=$(shell cat /proc/sys/kernel/random/uuid)
|
|
+drbd-kmod_rhel.spdx.json: SPDX_PKG_NAME:=kmod-drbd
|
|
+drbd-kmod_sles.spdx.json: SPDX_PKG_NAME:=drbd-kmp-default
|
|
+drbd-kmod_rhel.spdx.json drbd-kmod_sles.spdx.json: FORCE
|
|
+ @rm -f $@; jq -n -f drbd-kmod.spdx.json.in > $@.tmp && mv $@.tmp $@
|
|
+
|
|
+# uses:
|
|
+# SPDX_DATE from above and FDIST_VERSION from parent Makefile
|
|
+drbd-kmod.cdx.json: FORCE
|
|
+ @rm -f $@; jq -n -f drbd-kmod.cdx.json.in > $@.tmp && mv $@.tmp $@
|
|
+
|
|
+.PHONY: FORCE
|
|
+FORCE:
|
|
diff --git a/drbd-kmod.cdx.json.in b/sbom/drbd-kmod.cdx.json.in
|
|
similarity index 84%
|
|
rename from drbd-kmod.cdx.json.in
|
|
rename to sbom/drbd-kmod.cdx.json.in
|
|
index ab4e05a43187..99858e8b9b43 100644
|
|
--- a/drbd-kmod.cdx.json.in
|
|
+++ b/sbom/drbd-kmod.cdx.json.in
|
|
@@ -2,7 +2,7 @@
|
|
"bomFormat": "CycloneDX",
|
|
"specVersion": "1.5",
|
|
"metadata": {
|
|
- "timestamp": "__PLACEHOLDER__",
|
|
+ "timestamp": "\(env.SPDX_DATE)",
|
|
"authors": [
|
|
{
|
|
"name": "Philipp Reisner",
|
|
@@ -16,9 +16,9 @@
|
|
"component": {
|
|
"type": "application",
|
|
"name": "kmod-drbd",
|
|
- "version": "__PLACEHOLDER__",
|
|
- "bom-ref": "__PLACEHOLDER__",
|
|
- "purl": "__PLACEHOLDER__",
|
|
+ "version": "\(env.FDIST_VERSION)",
|
|
+ "bom-ref": "pkg:github/LINBIT/drbd@drbd-\(env.FDIST_VERSION)",
|
|
+ "purl": "pkg:github/LINBIT/drbd@drbd-\(env.FDIST_VERSION)",
|
|
"licenses": [
|
|
{
|
|
"licenses": {
|
|
diff --git a/sbom/drbd-kmod.spdx.json.in b/sbom/drbd-kmod.spdx.json.in
|
|
new file mode 100644
|
|
index 000000000000..07c1003f8834
|
|
--- /dev/null
|
|
+++ b/sbom/drbd-kmod.spdx.json.in
|
|
@@ -0,0 +1,32 @@
|
|
+{
|
|
+ "SPDXID": "SPDXRef-DOCUMENT",
|
|
+ "spdxVersion": "SPDX-2.3",
|
|
+ "creationInfo": {
|
|
+ "created": "\(env.SPDX_DATE)",
|
|
+ "creators": [
|
|
+ "Person: Philipp Reisner (philipp.reisner@linbit.com)"
|
|
+ ]
|
|
+ },
|
|
+ "name": "drbd kernel module SBOM (software bill of materials)",
|
|
+ "dataLicense": "CC0-1.0",
|
|
+ "documentNamespace": "https://linbit.org/spdx-docs/drbd-kmod-\(env.SPDX_VERSION)-\(env.SPDX_UUID)",
|
|
+ "packages": [
|
|
+ {
|
|
+ "SPDXID": "SPDXRef-Package-\(env.SPDX_PKG_NAME)",
|
|
+ "copyrightText": "2001-2008, LINBIT Information Technologies GmbH\n2008-\(env.SPDX_YEAR), LINBIT HA-Solutions GmbH",
|
|
+ "downloadLocation": "https://github.com/LINBIT/drbd",
|
|
+ "filesAnalyzed": false,
|
|
+ "licenseDeclared": "GPL-2.0-only",
|
|
+ "name": "\(env.SPDX_PKG_NAME)",
|
|
+ "supplier": "Organization: LINBIT HA-Solutions GmbH",
|
|
+ "versionInfo": "\(env.SPDX_VERSION)"
|
|
+ }
|
|
+ ],
|
|
+ "relationships": [
|
|
+ {
|
|
+ "spdxElementId": "SPDXRef-DOCUMENT",
|
|
+ "relationshipType": "DESCRIBES",
|
|
+ "relatedSpdxElement": "SPDXRef-Package-\(env.SPDX_PKG_NAME)"
|
|
+ }
|
|
+ ]
|
|
+}
|
|
--
|
|
2.35.3
|
|
|