drbd/0008-build-generate-spdx.json-not-tag-value-format.patch
heming zhao d377bc2ee5 - Update DRBD version from 9.1.16 to 9.1.22
* 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
2024-10-11 04:45:18 +00:00

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