Compare commits

..

197 Commits

Author SHA256 Message Date
Ana Guerrero
67e828e1bd Accepting request 1235800 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1235800
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=115
2025-01-09 14:07:32 +00:00
Ana Guerrero
06370a1980 Accepting request 1233480 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1233480
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=114
2024-12-29 10:56:44 +00:00
heming zhao
6ee9ba5898 - Update DRBD version from 9.1.22 to 9.1.23 (boo#1234849)
* Changelog from Linbit:
    9.1.23 (api:genl2/proto:86-101,118-121/transport:18)
    --------
     * Fix a corner case that can happen when DRBD establishes multiple
       connections in parallel, which could lead one connection to end up in
       an inconsistent replication state of WFBitMapT/Established
     * Fix a corner case in which a reconciliation resync ends up in
       WFBitMapT/Established
     * Restrict protocol compatibility to the most recent 8.4 and 9.0 releases
     * Fix a corner case causing a module ref leak on drbd_transport_tcp;
       if it hits, you can not rmmod it
     * rate-limit resync progress while resync is paused
     * resync-target inherits history UUIDs when resync finishes,
       this can prevent unexpected "unrelared data" events later
     * Updated compatibility code for Linux 6.11 and 6.12
  * remove patches which already included in the new version:
     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
  * removed patch which is not needed anymore:
     boo1231290_fix_drbd_build_error_against_kernel_v6.11.0.patch
     boo1233222_fix_drbd_build_error_against_kernel_v6.11.6.patch
  * update:
     drbd_git_revision
     drbd.spec
  * add upstream patches to align commit d64ebe7eb7df:
     0001-drbd-Fix-memory-leak.patch

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=155
2024-12-27 03:43:25 +00:00
Ana Guerrero
2bae9bc8c5 Accepting request 1223497 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1223497
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=113
2024-11-12 18:22:08 +00:00
heming zhao
0eb684eb1f - drbd: fix build error against kernel v6.11.6 (boo#1233222)
* add patch
    + boo1233222_fix_drbd_build_error_against_kernel_v6.11.6.patch

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=154
2024-11-12 04:37:25 +00:00
Ana Guerrero
38a24befea Accepting request 1207029 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1207029
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=112
2024-10-11 15:02:35 +00:00
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
Ana Guerrero
6c06a89906 Accepting request 1201602 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1201602
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=111
2024-09-17 16:19:33 +00:00
heming zhao
bd99eea891 - drbdadm down fails to remove sysfs holder file (boo#1230635)
* add patch
    + boo1230635_01-compat-fix-nla_nest_start_noflag-test.patch
    + boo1230635_02-drbd-port-block-device-access-to-file.patch
  * update patch
    + bsc1226510-fix-build-err-against-6.9.3.patch

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=152
2024-09-17 11:55:19 +00:00
Dominique Leuenberger
a156897b31 Accepting request 1193357 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1193357
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=110
2024-08-12 10:32:09 +00:00
heming zhao
08bd6c9da5 - drbd: fix build error against kernel v6.10.3 (boo#1229062)
* add patch
    + boo1229062-re-enable-blk_queue_max_hw_sectors.patch

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=151
2024-08-12 07:46:03 +00:00
Ana Guerrero
3351498905 Accepting request 1181698 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1181698
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=109
2024-06-19 14:40:43 +00:00
heming zhao
4a4a040191 - drbd: fix build error against kernel v6.9.3 (boo#1226510)
* add patch
    + bsc1226510-fix-build-err-against-6.9.3.patch

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=150
2024-06-19 08:04:26 +00:00
Ana Guerrero
7e221f084c Accepting request 1167951 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1167951
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=108
2024-04-16 18:05:05 +00:00
heming zhao
60ef287345 Accepting request 1167777 from home:gsu:branches:network:ha-clustering:Factory
------------------------------------------------------------------
- drbd: fix build error against kernel v6.8.2 (boo#1222397)
  * add upstream patches
    + 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

OBS-URL: https://build.opensuse.org/request/show/1167777
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=149
2024-04-16 08:01:44 +00:00
Ana Guerrero
f87dc60bd9 Accepting request 1150590 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1150590
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=107
2024-02-27 21:45:38 +00:00
heming zhao
3e11cfbc83 Accepting request 1150586 from home:dimstar:rpm4.20:d
Prepare for RPM 4.20

OBS-URL: https://build.opensuse.org/request/show/1150586
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=148
2024-02-26 07:49:41 +00:00
Ana Guerrero
0259244ea7 Accepting request 1127681 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1127681
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=106
2023-11-20 20:20:10 +00:00
heming zhao
172292f7b4 Accepting request 1127654 from home:gsu:branches:network:ha-clustering:Factory
- drbd: fix build error against kernel v6.6.1 (boo#1217078)
  * add upstream patches
    + 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
  * remove patch which are already included in upstream patches:
    - bsc-1215699_fix-build-error-against-kernel-v6.5.4.patch

OBS-URL: https://build.opensuse.org/request/show/1127654
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=147
2023-11-20 11:51:25 +00:00
Ana Guerrero
d09a2c7cea Accepting request 1113587 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1113587
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=105
2023-09-26 20:02:19 +00:00
heming zhao
e7b40eeaea Accepting request 1113586 from home:hmzhao:branches:network:ha-clustering:Factory
drbd: fix build error against kernel v6.5.4 (boo#1215699)

OBS-URL: https://build.opensuse.org/request/show/1113586
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=146
2023-09-26 05:51:01 +00:00
Ana Guerrero
cadc9519cc Accepting request 1109379 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1109379
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=104
2023-09-07 19:13:08 +00:00
heming zhao
90d03da070 Accepting request 1109377 from home:hmzhao:branches:network:ha-clustering:Factory
- Update DRBD version from 9.0.30+ to 9.1.16 (PED-6362)

OBS-URL: https://build.opensuse.org/request/show/1109377
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=145
2023-09-07 01:17:08 +00:00
Dominique Leuenberger
b04dc19e5e Accepting request 1070828 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1070828
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=103
2023-03-11 17:24:04 +00:00
heming zhao
d4c87ee5c1 Accepting request 1070827 from home:hmzhao:branches:network:ha-clustering:Factory
drbd: fix build error against kernel v6.2.1 (bsc#1209168)
  * update patch
    + bsc-1206791-05-prandom_u32_max.patch

OBS-URL: https://build.opensuse.org/request/show/1070827
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=144
2023-03-11 06:36:46 +00:00
Dominique Leuenberger
1ec504acc4 Accepting request 1056343 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1056343
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=102
2023-01-06 16:06:01 +00:00
heming zhao
44b98926cd Accepting request 1056342 from home:hmzhao:branches:network:ha-clustering:Factory
- remove useless patch, dax_get_by_host() was replaced by fs_dax_get_by_bdev()
  * bsc-1192929_06-dax_support.patch

OBS-URL: https://build.opensuse.org/request/show/1056342
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=143
2023-01-06 08:38:53 +00:00
Dominique Leuenberger
f809287682 Accepting request 1056193 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1056193
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=101
2023-01-05 14:55:02 +00:00
heming zhao
4e5f7cbf78 Accepting request 1056192 from home:hmzhao:branches:network:ha-clustering:Factory
- drbd: fix build error against kernel v6.1.1 (bsc#1206791)
  * update bsc-1201335_06-bdi.patch commit log (no code change)
    + bsc-1201335_06-bdi.patch
  * update bsc-1202600_02-dax-introduce-DAX_RECOVERY_WRITE-dax-access-mode.patch (no code change)
    + bsc-1202600_02-dax-introduce-DAX_RECOVERY_WRITE-dax-access-mode.patch
  * using upstream patch to replace exist patch
    - bsc-1204596_02-drbd-stop-using-bdevname-in-drbd_report_io_error.patch
    + bsc-1204596_02-drbd-remove-usage-of-bdevname.patch
  * add new patches
    + bsc-1206791-01-drbd-add-comments-explaining-removal-of-bdi-congesti.patch
    + bsc-1206791-02-drbd-fix-static-analysis-warnings.patch
    + bsc-1206791-03-drbd-fix-warning-about-initializing-multiple-struct-.patch
    + bsc-1206791-04-blk_queue_split__no_present.patch
    + bsc-1206791-05-prandom_u32_max.patch
    + bsc-1206791-06-write_zeroes__no_capable.patch
    + bsc-1206791-07-drbd-fix-use-after-free-bugs-in-get_initial_state.patch
    + bsc-1206791-08-lib-lru_cache-Fixed-array-overflow-caused-by-incorre.patch
    + bsc-1206791-09-pmem-use-fs_dax_get_by_bdev-instead-of-dax_get_by_ho.patch

OBS-URL: https://build.opensuse.org/request/show/1056192
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=142
2023-01-05 13:24:33 +00:00
Dominique Leuenberger
160fe7f38c Accepting request 1040468 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1040468
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=100
2022-12-06 13:23:59 +00:00
heming zhao
039faa1c60 Accepting request 1040304 from home:lnussel:branches:network
- BuildRequire %kernel_module_package_buildreqs (boo#1205149)

OBS-URL: https://build.opensuse.org/request/show/1040304
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=141
2022-12-05 23:39:53 +00:00
Dominique Leuenberger
94ea40b926 Accepting request 1030531 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1030531
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=99
2022-10-22 14:33:15 +00:00
heming zhao
fb29c7bf26 Accepting request 1030530 from home:hmzhao:branches:network:ha-clustering:Factory
- drbd: build error against kernel v6.0.2 (bsc#1204596)
  - add patch:
    + bsc-1204596_01-block-remove-blk_cleanup_disk.patch
    + bsc-1204596_02-drbd-stop-using-bdevname-in-drbd_report_io_error.patch

OBS-URL: https://build.opensuse.org/request/show/1030530
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=140
2022-10-22 13:07:59 +00:00
Dominique Leuenberger
93a0dc4712 Accepting request 998746 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/998746
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=98
2022-08-23 12:29:53 +00:00
heming zhao
8cb897e5f9 Accepting request 998745 from home:hmzhao:branches:network:ha-clustering:Factory
- drbd: build error against kernel v5.19 (bsc#1202600)
  - add patch:
    + bsc-1202600_01-remove-QUEUE_FLAG_DISCARD.patch
    + bsc-1202600_02-dax-introduce-DAX_RECOVERY_WRITE-dax-access-mode.patch
    + bsc-1202600_03-block-decouple-REQ_OP_SECURE_ERASE-from-REQ_OP_DISCA.patch
    + bsc-1202600_04-remove-assign_p_sizes_qlim.patch
  - For rpmbuild warning, modify symlink /usr/sbin/rcdrbd to relative path
    + drbd.spec

OBS-URL: https://build.opensuse.org/request/show/998745
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=139
2022-08-23 01:12:22 +00:00
Richard Brown
7846ec924a Accepting request 989813 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/989813
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=97
2022-07-18 16:34:27 +00:00
heming zhao
a1185e0865 Accepting request 989810 from home:hmzhao:branches:network:ha-clustering:Factory
fix drbd.changes mistakes, which made before request 'declined' when pushing to opensuse:factory.

OBS-URL: https://build.opensuse.org/request/show/989810
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=138
2022-07-18 08:07:39 +00:00
Roger Zhou
1eb6b25c2a Accepting request 987977 from home:hmzhao:branches:network:ha-clustering:Factory
- drbd: build error against kernel v5.18 (bsc#1201335)
  - remove patch: move_bdi_from_request_queue_to_gendisk
  - change exist patches name from bsc#1192929:
    old name:
      make_block_holder_optional.patch
      move_kvmalloc_related_to_slab.patch
      polling_to_bio_base.patch
      pass_gend_to_blk_queue_update_readahead.patch
      dax_support.patch
      add_disk_error_handle.patch
      have_void_drbd_submit_bio.patch
      remove_bdgrab.patch
    new name:
      bsc-1192929_01-make_block_holder_optional.patch
      bsc-1192929_02-move_kvmalloc_related_to_slab.patch
      bsc-1192929_03-polling_to_bio_base.patch
      bsc-1192929_04-pass_gend_to_blk_queue_update_readahead.patch
      bsc-1192929_06-dax_support.patch
      bsc-1192929_07-add_disk_error_handle.patch
      bsc-1192929_08-have_void_drbd_submit_bio.patch
      bsc-1192929_09-remove_bdgrab.patch
  - add patch:
    + bsc-1201335_01-compat-test-and-cocci-patch-for-bdi-in-gendisk.patch
    + bsc-1201335_02-0001-compat-only-apply-bdi-pointer-patch-if-bdi-is-in-req.patch
    + bsc-1201335_03-genhd.patch
    + bsc-1201335_04-bio_alloc_bioset.patch
    + bsc-1201335_05-bio_alloc.patch
    + bsc-1201335_06-bdi.patch
    + bsc-1201335_07-write-same.patch
    + bsc-1201335_08-bio_clone_fast.patch

OBS-URL: https://build.opensuse.org/request/show/987977
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=137
2022-07-09 00:28:28 +00:00
Dominique Leuenberger
9b83b250ff Accepting request 932872 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/932872
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=96
2021-11-22 22:04:03 +00:00
nick wang
43a00e1438 Accepting request 932870 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1192929, compat to kernel v5.15

OBS-URL: https://build.opensuse.org/request/show/932870
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=136
2021-11-22 06:59:49 +00:00
Dominique Leuenberger
f23e374dc5 Accepting request 909674 from network:ha-clustering:Factory
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/909674
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=95
2021-08-02 10:05:11 +00:00
nick wang
132c70a03d Accepting request 908344 from home:wanghaisu:branches:network:ha-clustering:Factory
Recommit 9.0.30 with patch for kernel 5.14rc1

OBS-URL: https://build.opensuse.org/request/show/908344
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=135
2021-07-26 06:16:08 +00:00
Dominique Leuenberger
3a50233a65 Accepting request 907426 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/907426
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=94
2021-07-21 17:06:33 +00:00
nick wang
b04b5ff4a3 Accepting request 907423 from home:wanghaisu:branches:network:ha-clustering:Factory
Update to 9.0.30~1

OBS-URL: https://build.opensuse.org/request/show/907423
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=133
2021-07-21 07:09:53 +00:00
Dominique Leuenberger
fd35c13bdf Accepting request 900786 from network:ha-clustering:Factory
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/900786
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=93
2021-06-19 21:04:14 +00:00
nick wang
c4415b9ea2 Accepting request 899518 from home:wanghaisu:branches:network:ha-clustering:Factory
Revert the version to 9.0.29

OBS-URL: https://build.opensuse.org/request/show/899518
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=131
2021-06-11 15:50:45 +00:00
Peter Varkoly
8d622e7b70 - Update to version 9.1.2
* drbd: fix termination of verify with stop sector
  * drbd: Fix locking for the drbd_devices idr
  * drbd: use DEFINE_MUTEX insteadm of mutex_init()
  * drbd: remove device_to_minor()
  * drbd: fix race condition resetting resync_next_bit
  * build: fix make; make clean; make; with pre-packaged compat.patch
  * compat: fix compat implementation of CRYPTO_TFM_NEED_KEY
  * drbd: remove non-existant argument from kerneldoc
  * drbd: kernel-doc and related fixes from upstream
  * drbd: Avoid comma separated statements

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=130
2021-06-04 13:30:12 +00:00
Dominique Leuenberger
84e35e06ef Accepting request 891196 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/891196
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=92
2021-05-07 14:45:44 +00:00
nick wang
0ea57caa91 Accepting request 891195 from home:wanghaisu:branches:network:ha-clustering:Factory
Update to 9.0.29 compat to kernel 5.12

OBS-URL: https://build.opensuse.org/request/show/891195
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=128
2021-05-07 06:33:06 +00:00
Dominique Leuenberger
d772d01cc7 Accepting request 878476 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/878476
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=91
2021-03-12 12:33:31 +00:00
nick wang
7cbf74c985 Accepting request 878475 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1183429, compat to kernel v5.11

OBS-URL: https://build.opensuse.org/request/show/878475
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=126
2021-03-12 07:49:59 +00:00
Dominique Leuenberger
a670e5fa44 Accepting request 854413 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/854413
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=90
2020-12-10 14:58:47 +00:00
nick wang
c42d1c5129 Accepting request 854412 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1179708, compat to kernel v5.10. version 9.0.26

OBS-URL: https://build.opensuse.org/request/show/854412
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=124
2020-12-10 03:34:38 +00:00
nick wang
8a631cf560 Accepting request 846101 from home:wanghaisu:branches:network:ha-clustering:Factory
Update fix-err-of-wrong-return-type.patch

OBS-URL: https://build.opensuse.org/request/show/846101
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=123
2020-11-05 04:19:35 +00:00
Dominique Leuenberger
9994a59163 Accepting request 845860 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/845860
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=89
2020-11-04 17:27:30 +00:00
nick wang
e26ad2500c Accepting request 845859 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1178388, build error with -Wreturn-type

OBS-URL: https://build.opensuse.org/request/show/845859
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=121
2020-11-04 05:22:39 +00:00
Dominique Leuenberger
9bc1fec7f4 Accepting request 842703 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/842703
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=88
2020-10-20 14:15:21 +00:00
nick wang
eea075f12a Accepting request 842702 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1177910, compat to kernel v5.9

OBS-URL: https://build.opensuse.org/request/show/842702
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=119
2020-10-20 07:36:25 +00:00
nick wang
466f0dcd56 osc copypac from project:home:wanghaisu:branches:Kernel:HEAD:KMP package:drbd revision:11
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=118
2020-10-20 03:18:21 +00:00
nick wang
86d3ab9e4c Accepting request 841110 from home:wanghaisu:branches:network:ha-clustering:Factory
Update suse-coccinelle patch

OBS-URL: https://build.opensuse.org/request/show/841110
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=117
2020-10-12 05:30:03 +00:00
Dominique Leuenberger
58761eddfc Accepting request 835378 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/835378
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=87
2020-09-21 15:27:05 +00:00
nick wang
856d411622 Accepting request 835377 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1175257, Update to 9.0.25~rc1

OBS-URL: https://build.opensuse.org/request/show/835377
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=115
2020-09-18 09:29:11 +00:00
nick wang
29fb152658 Accepting request 826569 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1175257, compat to v5.8.0

OBS-URL: https://build.opensuse.org/request/show/826569
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=114
2020-08-14 03:04:57 +00:00
Dominique Leuenberger
1ff640cbd6 Accepting request 813082 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/813082
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=86
2020-06-11 08:04:57 +00:00
nick wang
72ad06bdad Accepting request 813081 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1172761, update to 9.0.23-1

OBS-URL: https://build.opensuse.org/request/show/813081
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=112
2020-06-10 04:15:17 +00:00
nick wang
9c489f3ad3 Accepting request 813078 from home:wanghaisu:branches:network:ha-clustering:Factory
Enable buildrt for Leap15.2 but TW.

OBS-URL: https://build.opensuse.org/request/show/813078
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=111
2020-06-10 03:27:13 +00:00
Dominique Leuenberger
f105a5ae38 Accepting request 785806 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/785806
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=85
2020-03-17 12:11:18 +00:00
nick wang
7e21277260 Accepting request 785805 from home:wanghaisu:branches:network:ha-clustering:Factory
Remove useless patch.

OBS-URL: https://build.opensuse.org/request/show/785805
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=109
2020-03-17 06:14:48 +00:00
nick wang
8ae83885b1 Accepting request 783588 from network:ha-clustering:Unstable
bsc#1166298

OBS-URL: https://build.opensuse.org/request/show/783588
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=108
2020-03-11 03:00:26 +00:00
nick wang
5c20ec9cab Accepting request 778999 from network:ha-clustering:Unstable
Update to 9.0.21

OBS-URL: https://build.opensuse.org/request/show/778999
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=107
2020-02-25 09:53:38 +00:00
Dominique Leuenberger
d8f747e343 Accepting request 762058 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/762058
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=84
2020-01-09 21:51:02 +00:00
nick wang
4fdf38b6cd Accepting request 762057 from home:wanghaisu:branches:network:ha-clustering:Factory
Update suse-coccinelle.patch

OBS-URL: https://build.opensuse.org/request/show/762057
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=105
2020-01-09 06:05:38 +00:00
nick wang
789c220c0e Accepting request 761065 from home:wanghaisu:branches:network:ha-clustering:Factory
Update the without_pr_warning.patch patch

OBS-URL: https://build.opensuse.org/request/show/761065
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=104
2020-01-06 07:05:08 +00:00
nick wang
285a9425d5 Accepting request 760597 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1159786, fix build issue of v5.5

OBS-URL: https://build.opensuse.org/request/show/760597
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=103
2020-01-03 09:09:09 +00:00
Dominique Leuenberger
034035f261 Accepting request 759283 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/759283
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=83
2019-12-27 12:49:19 +00:00
nick wang
d3e71354f1 Accepting request 759282 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1159333, back port patch for duplicate resync.

OBS-URL: https://build.opensuse.org/request/show/759282
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=101
2019-12-26 08:02:23 +00:00
Dominique Leuenberger
f89793bafe Accepting request 757253 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/757253
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=82
2019-12-16 14:20:31 +00:00
nick wang
a2b450528a Accepting request 757251 from network:ha-clustering:Unstable
bsc#1158446, fix metadata limit due to 64k page size of ppc64le.

OBS-URL: https://build.opensuse.org/request/show/757251
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=99
2019-12-16 06:39:41 +00:00
nick wang
0498b863bb Accepting request 740700 from home:RBrownSUSE:branches:network:ha-clustering:Factory
Remove obsolete Groups tag (fate#326485)

OBS-URL: https://build.opensuse.org/request/show/740700
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=98
2019-10-18 01:23:38 +00:00
Dominique Leuenberger
76c68b5619 Accepting request 737345 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/737345
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=81
2019-10-11 13:20:10 +00:00
nick wang
48e7e51612 Accepting request 737344 from network:ha-clustering:Unstable
Update to 9.0.20-1

OBS-URL: https://build.opensuse.org/request/show/737344
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=96
2019-10-11 03:26:45 +00:00
Dominique Leuenberger
841aa96012 Accepting request 732597 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/732597
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=80
2019-09-23 10:46:32 +00:00
nick wang
94234e2412 Accepting request 732557 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1151579, fix coccinelle default path and obs service issue.

OBS-URL: https://build.opensuse.org/request/show/732557
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=94
2019-09-23 06:02:25 +00:00
Dominique Leuenberger
8c3fc622bb Accepting request 729692 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/729692
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=79
2019-09-11 08:33:58 +00:00
nick wang
6ef3f2b5b0 Accepting request 729689 from home:jengelh:branches:network:ha-clustering:Factory
- Restore higher summary specifity.
- Drop old-age %clean, %defattr.

OBS-URL: https://build.opensuse.org/request/show/729689
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=92
2019-09-10 07:54:08 +00:00
Dominique Leuenberger
e77111e87e Accepting request 729354 from network:ha-clustering:Factory
bsc#1149945, use drbd-9.0 for kernel 5.2+ support.

OBS-URL: https://build.opensuse.org/request/show/729354
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=78
2019-09-09 10:38:34 +00:00
nick wang
6e60e2a4f7 Accepting request 729346 from network:ha-clustering:Stable
bsc#1149945, use drbd-9.0 for kernel 5.2+ support.

OBS-URL: https://build.opensuse.org/request/show/729346
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=90
2019-09-09 08:04:57 +00:00
Dominique Leuenberger
50f1945649 Accepting request 716725 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/716725
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=77
2019-07-21 09:33:58 +00:00
nick wang
4ac2a13ce4 Accepting request 716724 from network:ha-clustering:Unstable
9.0.19-1

OBS-URL: https://build.opensuse.org/request/show/716724
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=88
2019-07-19 06:51:58 +00:00
Dominique Leuenberger
7ac1c13843 Accepting request 706974 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/706974
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=76
2019-06-03 16:51:09 +00:00
nick wang
b5889d912c Accepting request 706971 from network:ha-clustering:Stable
Update to 9.0.18

OBS-URL: https://build.opensuse.org/request/show/706971
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=86
2019-06-03 02:23:04 +00:00
Dominique Leuenberger
f1ad3894c8 Accepting request 691396 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/691396
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=75
2019-04-04 10:08:55 +00:00
nick wang
db253bee42 Accepting request 691395 from network:ha-clustering:Unstable
Update to 9.0.17-1.

OBS-URL: https://build.opensuse.org/request/show/691395
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=84
2019-04-04 07:09:30 +00:00
Dominique Leuenberger
b9487d99fe Accepting request 684507 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/684507
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=74
2019-03-13 08:16:36 +00:00
nick wang
2120f01a81 Accepting request 684506 from network:ha-clustering:Unstable
bsc#1118732, split brain handles malfunction when 2 primaries.

OBS-URL: https://build.opensuse.org/request/show/684506
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=82
2019-03-13 02:17:02 +00:00
Dominique Leuenberger
70bd7e2f0c Accepting request 656770 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/656770
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=73
2018-12-11 14:47:56 +00:00
nick wang
912bc9ed41 Accepting request 656768 from network:ha-clustering:Stable
bsc#1118841, kernel compatible issue.

OBS-URL: https://build.opensuse.org/request/show/656768
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=80
2018-12-10 09:54:12 +00:00
Dominique Leuenberger
b893dd4bdf Accepting request 650583 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/650583
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=72
2018-11-22 12:25:19 +00:00
nick wang
5c71beace2 Accepting request 650582 from home:wanghaisu:branches:network:ha-clustering:Factory
fix kernel compatible of sle15sp1, bsc#1116820.

OBS-URL: https://build.opensuse.org/request/show/650582
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=78
2018-11-21 08:55:22 +00:00
Dominique Leuenberger
901b9fce17 Accepting request 648426 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/648426
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=71
2018-11-13 15:59:10 +00:00
nick wang
4cafd9f9e4 Accepting request 648425 from home:wanghaisu:branches:network:ha-clustering:Factory
Update with a bugid.

OBS-URL: https://build.opensuse.org/request/show/648425
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=76
2018-11-12 10:42:30 +00:00
Dominique Leuenberger
26b9fe3ec9 Accepting request 644759 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/644759
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=70
2018-10-29 13:21:30 +00:00
nick wang
50c4f7c809 Accepting request 644758 from home:wanghaisu:branches:network:ha-clustering:Factory
Update to 9.0.16-1.

OBS-URL: https://build.opensuse.org/request/show/644758
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=74
2018-10-26 03:13:50 +00:00
Dominique Leuenberger
68a5ac4522 Accepting request 629363 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/629363
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=69
2018-08-17 22:02:17 +00:00
nick wang
31a5d6a79d Accepting request 629335 from network:ha-clustering:Unstable
Update to 9.0.15

OBS-URL: https://build.opensuse.org/request/show/629335
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=72
2018-08-15 08:54:42 +00:00
Dominique Leuenberger
f578ce008b Accepting request 603419 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/603419
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=68
2018-05-03 10:34:44 +00:00
nick wang
2da0b071cc Accepting request 603346 from network:ha-clustering:Unstable
Update to 9.0.14-1

OBS-URL: https://build.opensuse.org/request/show/603346
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=70
2018-05-03 05:55:03 +00:00
Dominique Leuenberger
79847ac9e4 Accepting request 598069 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/598069
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=67
2018-04-19 13:32:50 +00:00
nick wang
2dedcb784d Accepting request 598065 from network:ha-clustering:Unstable
Update to 9.0.13 with bugID referenced.

OBS-URL: https://build.opensuse.org/request/show/598065
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=68
2018-04-19 08:26:43 +00:00
nick wang
201d6f194e Accepting request 597913 from network:ha-clustering:Unstable
Update to 9.0.13.

OBS-URL: https://build.opensuse.org/request/show/597913
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=67
2018-04-19 01:17:35 +00:00
Dominique Leuenberger
fdb9bee090 Accepting request 575375 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/575375
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=66
2018-02-12 09:15:40 +00:00
nick wang
d6faf29d73 Accepting request 575374 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1080458 and bsc#1080459, build with kernel-rt and support kernel 4.15.0

OBS-URL: https://build.opensuse.org/request/show/575374
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=65
2018-02-11 10:03:24 +00:00
Dominique Leuenberger
2e332ac2b6 Accepting request 569415 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/569415
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=65
2018-01-25 11:41:29 +00:00
nick wang
2f644f3dcc Accepting request 569413 from network:ha-clustering:Unstable
Update to 9.0.12

OBS-URL: https://build.opensuse.org/request/show/569413
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=63
2018-01-25 02:44:48 +00:00
Dominique Leuenberger
6ede445195 Accepting request 561048 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/561048
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=64
2018-01-02 15:35:04 +00:00
nick wang
4663d95645 Accepting request 561047 from home:wanghaisu:branches:network:ha-clustering:Factory
Change changelog

OBS-URL: https://build.opensuse.org/request/show/561047
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=61
2018-01-02 02:38:32 +00:00
nick wang
26cfd8f798 Accepting request 560267 from network:ha-clustering:Stable
Update the bug number.

OBS-URL: https://build.opensuse.org/request/show/560267
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=60
2017-12-28 09:53:16 +00:00
Dominique Leuenberger
7723960b4f Accepting request 542525 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/542525
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=63
2017-11-17 09:57:34 +00:00
nick wang
dc163d72b4 Accepting request 542522 from network:ha-clustering:Unstable
bsc#1068587, add build request libelf-devel to build.

OBS-URL: https://build.opensuse.org/request/show/542522
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=58
2017-11-17 03:55:51 +00:00
Dominique Leuenberger
2a365161c3 Accepting request 533374 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/533374
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=62
2017-10-13 12:18:27 +00:00
nick wang
563be55218 Accepting request 533373 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1062749, disable buildrt against SLE15 x86_64 temporarily.

OBS-URL: https://build.opensuse.org/request/show/533373
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=56
2017-10-11 10:53:39 +00:00
Dominique Leuenberger
4f01e647ba Accepting request 532109 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/532109
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=61
2017-10-07 15:50:44 +00:00
nick wang
760895e2d0 Accepting request 532108 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1061981, update to 9.0.9

OBS-URL: https://build.opensuse.org/request/show/532108
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=54
2017-10-06 07:59:30 +00:00
Dominique Leuenberger
bd45d7ba45 Accepting request 511431 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/511431
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=60
2017-07-21 20:49:43 +00:00
nick wang
984d8f8306 Accepting request 511366 from home:wanghaisu:branches:network:ha-clustering:Factory
Add missing reproducible.patch based on Bernhard's patch in mailing list.

OBS-URL: https://build.opensuse.org/request/show/511366
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=52
2017-07-19 14:13:03 +00:00
Lars Marowsky-Bree
c3b1cc4105 Accepting request 511346 from home:bmwiedemann:branches:network:ha-clustering:Factory
Add reproducible.patch to sort file lists (boo#1041090)
  and to override build date (boo#1047218) to fix build-compare

OBS-URL: https://build.opensuse.org/request/show/511346
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=51
2017-07-19 07:00:23 +00:00
Dominique Leuenberger
ce85cb0ff7 Accepting request 505630 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/505630
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=59
2017-06-23 07:18:17 +00:00
nick wang
5d7f6b839f Accepting request 505625 from network:ha-clustering:Unstable
bsc#1045473, update to 9.0.8

OBS-URL: https://build.opensuse.org/request/show/505625
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=49
2017-06-22 08:38:38 +00:00
Dominique Leuenberger
7ff6cdb1ce Accepting request 498239 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/498239
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=58
2017-05-29 20:19:22 +00:00
nick wang
283d692841 Accepting request 498238 from home:wanghaisu:branches:network:ha-clustering:Factory
fix bsc#1038852, initial sync not triggered.

OBS-URL: https://build.opensuse.org/request/show/498238
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=47
2017-05-25 08:04:01 +00:00
Dominique Leuenberger
72f62bf326 Accepting request 491392 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/491392
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=57
2017-04-28 07:14:08 +00:00
nick wang
143b09ce28 Accepting request 491391 from home:wanghaisu:branches:network:ha-clustering:Factory
Update to 9.0.7(rc2) and change drbd-utils requirement to 8.9.11. bsc#1028124

OBS-URL: https://build.opensuse.org/request/show/491391
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=45
2017-04-27 05:49:48 +00:00
nick wang
97165c6dae Accepting request 491389 from home:wanghaisu:branches:network:ha-clustering:Factory
Update to 9.0.7(rc2) and change drbd-utils requirement to 8.9.11. bsc#1028124

OBS-URL: https://build.opensuse.org/request/show/491389
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=44
2017-04-27 05:42:21 +00:00
Yuchen Lin
c59849f504 Accepting request 483268 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/483268
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=56
2017-04-12 15:33:42 +00:00
nick wang
9459466ff0 Accepting request 483262 from network:ha-clustering:Unstable
Upgrade to 9.0.7 for ra support and kernel compatible of bsc#1031299.

OBS-URL: https://build.opensuse.org/request/show/483262
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=42
2017-03-29 08:55:06 +00:00
nick wang
8d94f3de52 Accepting request 459400 from home:wanghaisu:branches:network:ha-clustering:Factory
Leave buildrt as for 1 for the non opensuse x86_64 case.

OBS-URL: https://build.opensuse.org/request/show/459400
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=41
2017-02-21 03:05:43 +00:00
nick wang
e712a12b7e Accepting request 457612 from home:wanghaisu:branches:network:ha-clustering:Factory
Upgrade to upstream 9.0.6

OBS-URL: https://build.opensuse.org/request/show/457612
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=40
2017-02-16 07:27:47 +00:00
Dominique Leuenberger
453d3ebd86 Accepting request 444094 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/444094
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=55
2016-12-07 23:31:06 +00:00
nick wang
cc3b3800d1 Accepting request 444093 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1013844, RT KMP build must be restricted to SLE.

OBS-URL: https://build.opensuse.org/request/show/444093
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=38
2016-12-06 10:22:12 +00:00
Dominique Leuenberger
40e122744f Accepting request 437368 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/437368
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=54
2016-10-26 11:29:47 +00:00
nick wang
73a7d7f261 Accepting request 437365 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#1006176, compat with kernel 4.8 with 9.0.5

OBS-URL: https://build.opensuse.org/request/show/437365
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=36
2016-10-26 03:56:30 +00:00
Dominique Leuenberger
583bb11686 Accepting request 401796 from network:ha-clustering:Factory
Failed to build drbd 9.0.1 against kernel 4.6/4.7-rc2, bsc#983633.

OBS-URL: https://build.opensuse.org/request/show/401796
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=53
2016-06-14 21:08:52 +00:00
nick wang
524400d0e7 Accepting request 401378 from home:wanghaisu:branches:network:ha-clustering:Factory
bsc#983633, upgrade to ver9.0.2 to build against kernel 4.6/4.7-rc2

OBS-URL: https://build.opensuse.org/request/show/401378
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=34
2016-06-12 08:21:48 +00:00
Dominique Leuenberger
f5a3400700 Accepting request 389508 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/389508
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=52
2016-04-22 14:24:35 +00:00
nick wang
18bba12a8c Accepting request 389505 from home:wanghaisu:branches:network:ha-clustering:Factory
Add drbd-buildcompare and using specific version number.

OBS-URL: https://build.opensuse.org/request/show/389505
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=32
2016-04-13 13:59:10 +00:00
nick wang
f9dc362b8e Accepting request 389406 from home:wanghaisu:branches:network:ha-clustering:Factory
Update to drbd9.

OBS-URL: https://build.opensuse.org/request/show/389406
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=31
2016-04-13 12:42:42 +00:00
Dominique Leuenberger
efc1155223 Accepting request 369891 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/369891
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=51
2016-03-16 09:35:30 +00:00
nick wang
6a9bae1c9e Accepting request 369888 from home:wanghaisu:branches:network:ha-clustering:Factory
Modify the patch name in changelog.

OBS-URL: https://build.opensuse.org/request/show/369888
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=29
2016-03-11 09:09:49 +00:00
nick wang
46b07bd4dc Accepting request 367632 from home:olh:branches:network:ha-clustering:Factory
- Remove timstamp from binaries
  ddd-buildcompare.patch

OBS-URL: https://build.opensuse.org/request/show/367632
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=28
2016-03-11 03:14:17 +00:00
Dominique Leuenberger
6b5e46704b Accepting request 345344 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/345344
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=50
2015-11-26 16:01:28 +00:00
nick wang
b91e658262 Accepting request 345343 from home:wanghaisu:branches:network:ha-clustering:Factory
BSC#955968, support GFP_RECLAIM in kernel4.4

OBS-URL: https://build.opensuse.org/request/show/345343
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=26
2015-11-20 07:02:54 +00:00
Dominique Leuenberger
543d9db109 Accepting request 340343 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/340343
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=49
2015-10-30 12:43:03 +00:00
nick wang
bc955caa4a Accepting request 340342 from home:wanghaisu:branches:network:ha-clustering:Factory
BSC#950477, support new bio struct in kernel4.3

OBS-URL: https://build.opensuse.org/request/show/340342
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=24
2015-10-22 08:01:29 +00:00
Dominique Leuenberger
0e028f6e19 Accepting request 339249 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/339249
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=48
2015-10-19 20:51:52 +00:00
nick wang
c6df818c4c Accepting request 339247 from home:wanghaisu:branches:network:ha-clustering:Factory
Update original patch name to changelog.

OBS-URL: https://build.opensuse.org/request/show/339247
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=22
2015-10-16 09:43:46 +00:00
nick wang
c59288e1c5 Accepting request 339242 from home:wanghaisu:branches:network:ha-clustering:Factory
BSC#950477, update to 8.4.6-5 to fix bdi congested.

OBS-URL: https://build.opensuse.org/request/show/339242
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=21
2015-10-16 09:34:13 +00:00
Stephan Kulow
f489baa90f Accepting request 334152 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/334152
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=47
2015-09-30 03:52:48 +00:00
nick wang
b91458c9bb Accepting request 333548 from home:wanghaisu:branches:network:ha-clustering:Factory
BSC#947460, add rcdrbd symlink.

OBS-URL: https://build.opensuse.org/request/show/333548
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=19
2015-09-28 02:50:59 +00:00
Dominique Leuenberger
bcdfb8b628 Accepting request 324253 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/324253
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=46
2015-08-21 05:41:18 +00:00
nick wang
428f2cbe4b Accepting request 324251 from home:wanghaisu:branches:network:ha-clustering:Factory
Fate#317940. Merge into one patch. Support zeroout/discard instead of zap-devices.

OBS-URL: https://build.opensuse.org/request/show/324251
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=17
2015-08-19 09:34:13 +00:00
Dominique Leuenberger
cffb3f96c9 Accepting request 319182 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/319182
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=45
2015-08-01 09:37:54 +00:00
nick wang
e327903f6c Accepting request 319181 from home:wanghaisu:branches:network:ha-clustering:Factory
BSC#939778. Add obsoletes and a description for kmp package.

OBS-URL: https://build.opensuse.org/request/show/319181
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=15
2015-07-29 01:10:03 +00:00
Stephan Kulow
7e1e97ef29 Accepting request 318290 from network:ha-clustering:Factory
1

OBS-URL: https://build.opensuse.org/request/show/318290
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=44
2015-07-25 05:44:30 +00:00
Stephan Kulow
7e4c01e0c9 Accepting request 175254 from Base:System
Fix for https://build.opensuse.org/request/show/174892 

- Make /etc/xen mode 0700 to protect vnc passwords. (forwarded request 175231 from olh)

OBS-URL: https://build.opensuse.org/request/show/175254
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=41
2013-05-13 15:03:54 +00:00
Stephan Kulow
66ad1cdeb8 Accepting request 127449 from Base:System
(forwarded request 127448 from tserong)

OBS-URL: https://build.opensuse.org/request/show/127449
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=39
2012-07-10 11:41:01 +00:00
Stephan Kulow
8b1ddb6695 Accepting request 96973 from Base:System
- update to 8.3.11 (bnc#734432) (forwarded request 96823 from tserong)

OBS-URL: https://build.opensuse.org/request/show/96973
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=37
2011-12-21 08:59:54 +00:00
Stephan Kulow
4bb004e99c replace license with spdx.org variant
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=36
2011-12-06 17:07:06 +00:00
Sascha Peilicke
07c0802440 Accepting request 83741 from Base:System
- Remove redundant tags/sections from specfile
  (cf. packaging guidelines) (forwarded request 83298 from jengelh)

OBS-URL: https://build.opensuse.org/request/show/83741
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=34
2011-09-20 10:52:27 +00:00
Sascha Peilicke
ba6eb8da46 Autobuild autoformatter for 63750
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=33
2011-03-10 11:48:22 +00:00
Sascha Peilicke
4d5f3d6227 Accepting request 63750 from Base:System
Accepted submit request 63750 from user coolo

OBS-URL: https://build.opensuse.org/request/show/63750
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=32
2011-03-10 11:48:15 +00:00
OBS User autobuild
b090ba1522 Autobuild autoformatter for 51252
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=30
2010-10-22 14:29:05 +00:00
Ruediger Oertel
f4cdf5fa08 Accepting request 51252 from Base:System
Accepted submit request 51252 from user elvigia

OBS-URL: https://build.opensuse.org/request/show/51252
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=29
2010-10-22 14:28:59 +00:00
OBS User autobuild
1e0191cb11 Accepting request 42070 from Base:System
Copy from Base:System/drbd based on submit request 42070 from user prusnak

OBS-URL: https://build.opensuse.org/request/show/42070
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=26
2010-06-28 10:17:10 +00:00
OBS User autobuild
267ac243e6 Accepting request 37680 from Base:System
Copy from Base:System/drbd based on submit request 37680 from user dirkmueller

OBS-URL: https://build.opensuse.org/request/show/37680
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=25
2010-04-15 22:07:17 +00:00
OBS User autobuild
cb631d75e5 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=24 2010-03-18 14:43:20 +00:00
OBS User autobuild
e9a533f199 Accepting request 28925 from Base:System
Copy from Base:System/drbd based on submit request 28925 from user coolo

OBS-URL: https://build.opensuse.org/request/show/28925
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=23
2010-01-12 14:49:32 +00:00
OBS User autobuild
e6120ecd85 Accepting request 22102 from Base:System
Copy from Base:System/drbd based on submit request 22102 from user coolo

OBS-URL: https://build.opensuse.org/request/show/22102
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=21
2009-10-08 16:11:31 +00:00
OBS User unknown
84b91368c6 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=20 2009-07-27 22:07:02 +00:00
OBS User unknown
f611f503ea OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=19 2009-07-16 23:54:43 +00:00
OBS User unknown
36ca4a242f OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=18 2009-04-19 23:50:05 +00:00
OBS User unknown
48cd784266 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=17 2009-01-13 17:43:34 +00:00
OBS User unknown
8a0ee48501 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=16 2008-12-15 11:27:19 +00:00
OBS User unknown
2071e3b20c OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=15 2008-11-21 14:15:51 +00:00
OBS User unknown
1db16c94d5 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=14 2008-10-27 15:44:50 +00:00
OBS User unknown
26278b6a17 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=13 2008-09-04 22:35:51 +00:00
OBS User unknown
e81599df6b OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=12 2008-08-18 16:28:48 +00:00
OBS User unknown
076660183a OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=11 2008-07-15 19:29:07 +00:00
OBS User unknown
33c0e4de42 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=10 2008-06-04 11:07:09 +00:00
OBS User unknown
e276857a62 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=9 2008-06-03 20:04:53 +00:00
OBS User unknown
cb75e831ed OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=8 2008-04-15 13:34:25 +00:00
OBS User unknown
baae30a30d OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=7 2007-12-05 23:03:37 +00:00
OBS User unknown
3e4cc222d1 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=6 2007-09-18 10:08:16 +00:00
OBS User unknown
44c2da2968 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=5 2007-09-17 15:10:20 +00:00
OBS User unknown
8b947bef08 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=4 2007-04-04 20:13:40 +00:00
OBS User unknown
ce5c551480 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=3 2007-03-30 14:29:03 +00:00
OBS User unknown
ab7625a8b0 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=2 2007-03-30 00:32:51 +00:00
OBS User unknown
2650be5163 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/drbd?expand=0&rev=1 2007-01-15 09:53:19 +00:00
65 changed files with 0 additions and 6383 deletions

View File

@ -1,37 +0,0 @@
From 0dda200877d1b801fba948a5948f321bee1a75a9 Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Fri, 1 Sep 2023 08:03:01 +0200
Subject: [PATCH 01/20] drbd: allow transports to take additional krefs on a
listener
by making the drbd_listener_destroy() available to the transports.
heming.zhao@suse.com
- For compiling drbd, I modified this patch. please differ with upstream
to find changes.
---
drbd/drbd_transport.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drbd/drbd_transport.c b/drbd/drbd_transport.c
index d1ec5724dec6..416a50499046 100644
--- a/drbd/drbd_transport.c
+++ b/drbd/drbd_transport.c
@@ -223,7 +223,7 @@ int drbd_get_listener(struct drbd_transport *transport, struct drbd_path *path,
return err;
}
-static void drbd_listener_destroy(struct kref *kref)
+void drbd_listener_destroy(struct kref *kref)
{
struct drbd_listener *listener = container_of(kref, struct drbd_listener, kref);
struct drbd_resource *resource = listener->resource;
@@ -331,3 +331,4 @@ EXPORT_SYMBOL_GPL(drbd_find_path_by_addr);
EXPORT_SYMBOL_GPL(drbd_stream_send_timed_out);
EXPORT_SYMBOL_GPL(drbd_should_abort_listening);
EXPORT_SYMBOL_GPL(drbd_path_event);
+EXPORT_SYMBOL_GPL(drbd_listener_destroy);
--
2.35.3

View File

@ -1,119 +0,0 @@
From aab03bfc73a62f95011316545a5c0fbb4817741b Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg@linbit.com>
Date: Wed, 14 Aug 2024 11:49:42 +0200
Subject: [PATCH 01/32] drbd: properly rate-limit resync progress reports
A peer_device in "paused" sync would have flooded the "drbd events2"
generic netlink broadcast with "resync progress reports",
if it cleared significant out-of-sync bits,
as is the case with application writes,
or several peers syncing from the same sync source
and having a "paused sync" replication state between themselves.
If you have "many" such resources, this storm may even overflow receive buffers.
At most one progress report every three seconds should be enough,
and is what was intended.
Use a new "last progress report time stamp" to throttle
advancing resync progress marks and progress report broadcasts.
---
drbd/drbd_actlog.c | 35 +++++++++++++++++++++++------------
drbd/drbd_int.h | 1 +
drbd/drbd_receiver.c | 1 +
drbd/drbd_state.c | 2 ++
4 files changed, 27 insertions(+), 12 deletions(-)
diff --git a/drbd/drbd_actlog.c b/drbd/drbd_actlog.c
index b96560843878..646dcb29e1d9 100644
--- a/drbd/drbd_actlog.c
+++ b/drbd/drbd_actlog.c
@@ -1020,19 +1020,30 @@ static bool update_rs_extent(struct drbd_peer_device *peer_device,
void drbd_advance_rs_marks(struct drbd_peer_device *peer_device, unsigned long still_to_go)
{
- unsigned long now = jiffies;
- unsigned long last = peer_device->rs_mark_time[peer_device->rs_last_mark];
- int next = (peer_device->rs_last_mark + 1) % DRBD_SYNC_MARKS;
- if (time_after_eq(now, last + DRBD_SYNC_MARK_STEP)) {
- if (peer_device->rs_mark_left[peer_device->rs_last_mark] != still_to_go &&
- peer_device->repl_state[NOW] != L_PAUSED_SYNC_T &&
- peer_device->repl_state[NOW] != L_PAUSED_SYNC_S) {
- peer_device->rs_mark_time[next] = now;
- peer_device->rs_mark_left[next] = still_to_go;
- peer_device->rs_last_mark = next;
- }
- drbd_peer_device_post_work(peer_device, RS_PROGRESS);
+ unsigned long now;
+ int next;
+
+ /* report progress and advance marks only if we made progress */
+ if (peer_device->rs_mark_left[peer_device->rs_last_mark] == still_to_go)
+ return;
+
+ /* report progress and advance marks at most once every DRBD_SYNC_MARK_STEP (3 seconds) */
+ now = jiffies;
+ if (!time_after_eq(now, peer_device->rs_last_progress_report_ts + DRBD_SYNC_MARK_STEP))
+ return;
+
+ /* Do not advance marks if we are "paused" */
+ if (peer_device->repl_state[NOW] != L_PAUSED_SYNC_T &&
+ peer_device->repl_state[NOW] != L_PAUSED_SYNC_S) {
+ next = (peer_device->rs_last_mark + 1) % DRBD_SYNC_MARKS;
+ peer_device->rs_mark_time[next] = now;
+ peer_device->rs_mark_left[next] = still_to_go;
+ peer_device->rs_last_mark = next;
}
+
+ /* But still report progress even if paused. */
+ peer_device->rs_last_progress_report_ts = now;
+ drbd_peer_device_post_work(peer_device, RS_PROGRESS);
}
/* It is called lazy update, so don't do write-out too often. */
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
index 49bd7b0c407c..c18407899f59 100644
--- a/drbd/drbd_int.h
+++ b/drbd/drbd_int.h
@@ -1285,6 +1285,7 @@ struct drbd_peer_device {
unsigned long rs_paused;
/* skipped because csum was equal [unit BM_BLOCK_SIZE] */
unsigned long rs_same_csum;
+ unsigned long rs_last_progress_report_ts;
#define DRBD_SYNC_MARKS 8
#define DRBD_SYNC_MARK_STEP (3*HZ)
/* block not up-to-date at mark [unit BM_BLOCK_SIZE] */
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 19634f6423bd..ee54cf3ac116 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -3409,6 +3409,7 @@ static int receive_DataRequest(struct drbd_connection *connection, struct packet
peer_device->ov_skipped = 0;
peer_device->rs_total = ov_left;
peer_device->rs_last_writeout = now;
+ peer_device->rs_last_progress_report_ts = now;
for (i = 0; i < DRBD_SYNC_MARKS; i++) {
peer_device->rs_mark_left[i] = ov_left;
peer_device->rs_mark_time[i] = now;
diff --git a/drbd/drbd_state.c b/drbd/drbd_state.c
index be1de8f0653b..44f55ee5c939 100644
--- a/drbd/drbd_state.c
+++ b/drbd/drbd_state.c
@@ -2483,6 +2483,7 @@ static void initialize_resync_progress_marks(struct drbd_peer_device *peer_devic
unsigned long now = jiffies;
int i;
+ peer_device->rs_last_progress_report_ts = now;
for (i = 0; i < DRBD_SYNC_MARKS; i++) {
peer_device->rs_mark_left[i] = tw;
peer_device->rs_mark_time[i] = now;
@@ -2730,6 +2731,7 @@ static void finish_state_change(struct drbd_resource *resource, const char *tag)
peer_device->ov_last_skipped_size = 0;
peer_device->ov_last_skipped_start = 0;
peer_device->rs_last_writeout = now;
+ peer_device->rs_last_progress_report_ts = now;
for (i = 0; i < DRBD_SYNC_MARKS; i++) {
peer_device->rs_mark_left[i] = peer_device->rs_total;
peer_device->rs_mark_time[i] = now;
--
2.35.3

View File

@ -1,65 +0,0 @@
From f2cd05b8d60d27f43b07175b92ef4c2a69b8e3a2 Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Wed, 6 Sep 2023 15:49:44 +0200
Subject: [PATCH 02/20] drbd: improve decision about marking a failed disk
Outdated
Sometimes it is possible to update the metadata even after our disk has
failed. We were too eager to remove the MDF_WAS_UP_TO_DATE flag in this
case.
Firstly, we used the "NOW" states, so would mark our metadata Outdated
if we were a Primary with UpToDate data and no peers, and our disk
failed. Use the "NEW" states instead.
Secondly, do not consider peers that are disconnecting, because they
will not see that our disk state is Failed, and so will outdate
themselves. We do not want to outdate both nodes in this situation.
---
drbd/drbd_state.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drbd/drbd_state.c b/drbd/drbd_state.c
index 7e6e3477893d..8b60afeb097b 100644
--- a/drbd/drbd_state.c
+++ b/drbd/drbd_state.c
@@ -2489,15 +2489,24 @@ static void initialize_resync(struct drbd_peer_device *peer_device)
/* Is there a primary with access to up to date data known */
static bool primary_and_data_present(struct drbd_device *device)
{
- bool up_to_date_data = device->disk_state[NOW] == D_UP_TO_DATE;
- bool primary = device->resource->role[NOW] == R_PRIMARY;
+ bool up_to_date_data = device->disk_state[NEW] == D_UP_TO_DATE;
+ struct drbd_resource *resource = device->resource;
+ bool primary = resource->role[NEW] == R_PRIMARY;
struct drbd_peer_device *peer_device;
for_each_peer_device(peer_device, device) {
- if (peer_device->connection->peer_role[NOW] == R_PRIMARY)
+ struct drbd_connection *connection = peer_device->connection;
+
+ /* Do not consider the peer if we are disconnecting. */
+ if (resource->remote_state_change &&
+ drbd_twopc_between_peer_and_me(connection) &&
+ resource->twopc_reply.is_disconnect)
+ continue;
+
+ if (connection->peer_role[NEW] == R_PRIMARY)
primary = true;
- if (peer_device->disk_state[NOW] == D_UP_TO_DATE)
+ if (peer_device->disk_state[NEW] == D_UP_TO_DATE)
up_to_date_data = true;
}
@@ -4808,6 +4817,7 @@ change_cluster_wide_state(bool (*change)(struct change_context *, enum change_ph
} else if (context->mask.conn == conn_MASK && context->val.conn == C_DISCONNECTING) {
reply->target_reachable_nodes = NODE_MASK(context->target_node_id);
reply->reachable_nodes &= ~reply->target_reachable_nodes;
+ reply->is_disconnect = 1;
} else {
reply->target_reachable_nodes = reply->reachable_nodes;
}
--
2.35.3

View File

@ -1,60 +0,0 @@
From f6613104a37c1d43cb50fd619afccba370db47a0 Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Tue, 20 Aug 2024 12:28:09 +0100
Subject: [PATCH 02/32] drbd: inherit history UUIDs from sync source when
resync finishes
This prevents unexpected "unrelated data" or "split-brain" situations
from occurring later. For example with nodes A, B and C:
* A diskless, B, C with disk, all connected, on UUID X
* Down B
* Write on C, new UUID Y generated
* Add disk on A, resyncs from C
* Down C
* Up B, connects to A, should resync from A
Without this change, "unrelated data" or "split-brain" occurs between A
and B.
Node A has current UUID Y, but knows nothing about X.
Node B has current UUID X, but knows nothing about Y.
This scenario is also possible with "quorum majority".
Fix this by adding the history and bitmap UUIDs from the sync source
into the history on the sync target when a resync finishes. In the above
scenario, this adds the UUID X into the history on A and so has the
effect that a full sync from A to B occurs in the final step.
---
drbd/drbd_main.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 7968be7c4c3f..862438885f35 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -5030,11 +5030,22 @@ u64 drbd_uuid_resync_finished(struct drbd_peer_device *peer_device) __must_hold(
{
struct drbd_device *device = peer_device->device;
unsigned long flags;
+ int i;
u64 ss_nz_bm; /* sync_source has non zero bitmap for. expressed as nodemask */
u64 pwcu; /* peers with current uuid */
u64 newer;
spin_lock_irqsave(&device->ldev->md.uuid_lock, flags);
+ // Inherit history from the sync source
+ for (i = 0; i < ARRAY_SIZE(peer_device->history_uuids); i++)
+ _drbd_uuid_push_history(device, peer_device->history_uuids[i] & ~UUID_PRIMARY);
+
+ // Inherit history in bitmap UUIDs from the sync source
+ for (i = 0; i < DRBD_PEERS_MAX; i++)
+ if (peer_device->bitmap_uuids[i] != -1)
+ _drbd_uuid_push_history(device,
+ peer_device->bitmap_uuids[i] & ~UUID_PRIMARY);
+
ss_nz_bm = __test_bitmap_slots_of_peer(peer_device);
pwcu = peers_with_current_uuid(device, peer_device->current_uuid);
--
2.35.3

View File

@ -1,36 +0,0 @@
From d6f2b71109f6a589fbc3d5c571c840a6bd142943 Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg@linbit.com>
Date: Thu, 22 Aug 2024 16:05:25 +0200
Subject: [PATCH 03/32] build,compat: fix line offset in annotation pragmas
pointing to patched sources
I forgot to update the "new position" by the two output pragma lines
for each non-context to context line transition per chunk.
Offsets would accumultate within the chunk, but reset with the next chunk.
Pragmas pointing into the "patched" file would be off by two lines
(per such transition within a chunk), pointing to some line 2 (4,6,8) lines
above the actual offending line.
Noticed during recent compat work when the backward compat cocci rules
where still incomplete.
---
.../annotate-diff-with-original-file-position-pragmas.pl | 1 +
1 file changed, 1 insertion(+)
diff --git a/drbd/drbd-kernel-compat/annotate-diff-with-original-file-position-pragmas.pl b/drbd/drbd-kernel-compat/annotate-diff-with-original-file-position-pragmas.pl
index c28265e6dd9d..de95689a6ef0 100644
--- a/drbd/drbd-kernel-compat/annotate-diff-with-original-file-position-pragmas.pl
+++ b/drbd/drbd-kernel-compat/annotate-diff-with-original-file-position-pragmas.pl
@@ -91,6 +91,7 @@ m{^--- (?:\./)?(\S+)$} and do {
$chunk .= qq{+# $. "$patch_name"\n};
$chunk .= qq{+# $o_pos "$ABS_NAME"\n};
$n_count += 2;
+ $n_pos += 2;
$extra_ncount += 2;
$file_line_context_points_to_orig = 1;
$state = ' ';
--
2.35.3

View File

@ -1,32 +0,0 @@
From fbfb92d11e64daec167b24521c715ceab505b55d Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Thu, 7 Sep 2023 10:36:29 +0200
Subject: [PATCH 03/20] drbd: fix error path in drbd_get_listener()
When initializing a listener fails do not access the fields of the
listener struct after giving up the reference.
---
drbd/drbd_transport.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drbd/drbd_transport.c b/drbd/drbd_transport.c
index 416a50499046..2aefd71ee395 100644
--- a/drbd/drbd_transport.c
+++ b/drbd/drbd_transport.c
@@ -207,11 +207,11 @@ int drbd_get_listener(struct drbd_transport *transport, struct drbd_path *path,
if (needs_init) {
err = init_listener(transport, addr, &init_net, listener);
+ listener->err = err;
+ complete_all(&listener->ready);
if (err)
drbd_put_listener(path);
- listener->err = err;
- complete_all(&listener->ready);
return err;
}
--
2.35.3

View File

@ -1,47 +0,0 @@
From 67ac093d6dc176fd6a3bf0c7f5a3ad046d48f558 Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg@linbit.com>
Date: Wed, 6 Sep 2023 14:38:32 +0200
Subject: [PATCH 04/20] drbd: build: fix spurious re-build attempt of
compat.patch
Patching changed the timestamp of the patched files,
which are pre-requisites for generating the patch.
The second build after extracting the tarball
would try to regenerate the patch file.
Exclude generated *.mod.c from "to-be-patched" files for spatch.
Reset timestamp of patched files to that of the patch file, instead of current time.
---
drbd/Kbuild | 1 +
drbd/Makefile | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drbd/Kbuild b/drbd/Kbuild
index 1576dc19e1da..073469ae4191 100644
--- a/drbd/Kbuild
+++ b/drbd/Kbuild
@@ -110,6 +110,7 @@ filechk_compat.h = cat $(obj)/compat.$(KERNELVERSION).h
$(src)/.compat_patches_applied: $(src)/drbd-kernel-compat/compat.patch
@$(kecho) ' PATCH'
@patch -d $(src) -p0 --batch --forward --reject-file=- < $(src)/drbd-kernel-compat/compat.patch
+ @cd $(src) && p=drbd-kernel-compat/compat.patch && sed -ne 's/^--- //p' < $$p | xargs -r -- touch -r $$p
@cp -d $(src)/drbd-kernel-compat/compat.patch $(src)/.compat_patches_applied
$(src)/drbd-kernel-compat/compat.patch: $(obj)/compat.h
diff --git a/drbd/Makefile b/drbd/Makefile
index 09a1efbf7fe1..ecdff04b9808 100644
--- a/drbd/Makefile
+++ b/drbd/Makefile
@@ -170,7 +170,7 @@ else
compat_headers := $(wildcard drbd-kernel-compat/cocci_cache/*/compat.h)
compat_patches := $(patsubst %.h,%.patch,$(compat_headers))
- sources := $(filter-out drbd_strings.c drbd_buildtag.c,$(wildcard *.c))
+ sources := $(filter-out drbd_strings.c drbd_buildtag.c drbd%.mod.c,$(wildcard *.c))
sources += $(wildcard drbd-headers/linux/*.h)
$(compat_patches): $(sources)
--
2.35.3

View File

@ -1,57 +0,0 @@
From 2f464b8e8235efe2c5d972cf8054dcc2010b100e Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Wed, 14 Aug 2024 17:42:44 +0200
Subject: [PATCH 04/32] drbd: fix exposed_uuid going backward
When a diskless node in the primary role creates a new current UUID,
it sends it all its UpToDate peers and sets it as its own exposed
UUID. If there is only one UpToDate node in the secondary role and it
sends its current UUID to the diskless primary at about the same time,
then with the following state change, through the function
ensure_expose_data_uuid(), the diskless primary sets its exposed_uuid
back to the previous one.
Avoid this problem by not accepting a current_uuid update from a peer
when I am primary (authoritative), and I have told the peer the latest
update, and that peer is already on that latest (authoritative) value.
---
drbd/drbd_main.c | 1 +
drbd/drbd_receiver.c | 10 +++++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 862438885f35..bc3283b045c9 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -1484,6 +1484,7 @@ int drbd_send_current_uuid(struct drbd_peer_device *peer_device, u64 current_uui
if (!p)
return -EIO;
+ peer_device->comm_current_uuid = current_uuid;
p->uuid = cpu_to_be64(current_uuid);
p->weak_nodes = cpu_to_be64(weak_nodes);
return drbd_send_command(peer_device, P_CURRENT_UUID, DATA_STREAM);
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index ee54cf3ac116..985fac8e69b3 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -5815,7 +5815,15 @@ static int receive_uuids110(struct drbd_connection *connection, struct packet_in
peer_md = device->ldev->md.peers;
spin_lock_irq(&device->ldev->md.uuid_lock);
}
- peer_device->current_uuid = be64_to_cpu(p->current_uuid);
+
+ if (device->resource->role[NOW] != R_PRIMARY ||
+ device->disk_state[NOW] != D_DISKLESS ||
+ (peer_device->current_uuid & ~UUID_PRIMARY) !=
+ (device->exposed_data_uuid & ~UUID_PRIMARY) ||
+ (peer_device->comm_current_uuid & ~UUID_PRIMARY) !=
+ (device->exposed_data_uuid & ~UUID_PRIMARY))
+ peer_device->current_uuid = be64_to_cpu(p->current_uuid);
+
peer_device->dirty_bits = be64_to_cpu(p->dirty_bits);
peer_device->uuid_flags = be64_to_cpu(p->uuid_flags);
if (peer_device->uuid_flags & UUID_FLAG_HAS_UNALLOC) {
--
2.35.3

View File

@ -1,39 +0,0 @@
From c7384276634be7c5b49ef0b8d7fa064927a207f8 Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Wed, 14 Aug 2024 19:42:40 +0200
Subject: [PATCH 05/32] drbd: Proper locking around new_current_uuid on a
diskless
Like the current UUID of a diskful node, changing the exposed_uuid of
a diskless node needs to be serialized with the UUID exchange when
establishing new connections.
---
drbd/drbd_main.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index bc3283b045c9..2792b9896271 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -4827,7 +4827,10 @@ void drbd_uuid_new_current(struct drbd_device *device, bool forced)
current_uuid |= UUID_PRIMARY;
else
current_uuid &= ~UUID_PRIMARY;
+
+ down_write(&device->uuid_sem);
drbd_uuid_set_exposed(device, current_uuid, false);
+ downgrade_write(&device->uuid_sem);
drbd_info(device, "sending new current UUID: %016llX\n", current_uuid);
weak_nodes = drbd_weak_nodes_device(device);
@@ -4837,6 +4840,7 @@ void drbd_uuid_new_current(struct drbd_device *device, bool forced)
peer_device->current_uuid = current_uuid;
}
}
+ up_read(&device->uuid_sem);
}
}
--
2.35.3

View File

@ -1,28 +0,0 @@
From a98c818bd33920fd5189cdd8f5d81850ad4a945b Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Thu, 7 Sep 2023 17:32:56 +0200
Subject: [PATCH 05/20] drbd: log error code when thread fails to start
---
drbd/drbd_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 38f728f3da73..810df864f60b 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -642,9 +642,9 @@ int drbd_thread_start(struct drbd_thread *thi)
if (IS_ERR(nt)) {
if (connection)
- drbd_err(connection, "Couldn't start thread\n");
+ drbd_err(connection, "Couldn't start thread: %ld\n", PTR_ERR(nt));
else
- drbd_err(resource, "Couldn't start thread\n");
+ drbd_err(resource, "Couldn't start thread: %ld\n", PTR_ERR(nt));
return false;
}
--
2.35.3

View File

@ -1,43 +0,0 @@
From 18795749745baa4b8b37cb56eb12a57a7bd55da7 Mon Sep 17 00:00:00 2001
From: Roland Kammerer <roland.kammerer@linbit.com>
Date: Tue, 27 Aug 2024 09:08:31 +0200
Subject: [PATCH 06/32] build: CycloneDX: fix bom-ref, add purl
---
Makefile | 4 ++--
drbd-kmod.cdx.json.in | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 83a2ed8a42f7..3f58568cc138 100644
--- a/Makefile
+++ b/Makefile
@@ -238,11 +238,11 @@ drbd-kmod_rhel.spdx drbd-kmod_sles.spdx:
# 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" = "https://github.com/LINBIT/drbd/releases/tag/drbd-$(FDIST_VERSION)"' > $(CDX_FILE)
+ 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)" CDX_FILE="$@"
+ $(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:
diff --git a/drbd-kmod.cdx.json.in b/drbd-kmod.cdx.json.in
index f7a4c4a46aa6..ab4e05a43187 100644
--- a/drbd-kmod.cdx.json.in
+++ b/drbd-kmod.cdx.json.in
@@ -18,6 +18,7 @@
"name": "kmod-drbd",
"version": "__PLACEHOLDER__",
"bom-ref": "__PLACEHOLDER__",
+ "purl": "__PLACEHOLDER__",
"licenses": [
{
"licenses": {
--
2.35.3

View File

@ -1,82 +0,0 @@
From 8c2c783a09d81f0a725e7a3ae48be4ceb2d79a63 Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Fri, 8 Sep 2023 11:26:01 +0200
Subject: [PATCH 06/20] drbd: log numeric value of drbd_state_rv as well as
string form
"Auto-promote failed: ?" was seen in a log. Logging the numeric value of
the state change return value gives us more information about what
happened in such a case.
---
drbd/drbd_main.c | 8 ++++----
drbd/drbd_receiver.c | 6 +++---
drbd/drbd_state.c | 3 ++-
3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 810df864f60b..e26cf7e2b008 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -2698,8 +2698,8 @@ static int drbd_open(struct block_device *bdev, fmode_t mode)
if (resource->role[NOW] == R_SECONDARY) {
rv = try_to_promote(device, timeout, (mode & FMODE_NDELAY));
if (rv < SS_SUCCESS)
- drbd_info(resource, "Auto-promote failed: %s\n",
- drbd_set_st_err_str(rv));
+ drbd_info(resource, "Auto-promote failed: %s (%d)\n",
+ drbd_set_st_err_str(rv), rv);
}
} else if ((mode & FMODE_NDELAY) == 0) {
/* Double check peers
@@ -2856,8 +2856,8 @@ static void drbd_release(struct gendisk *gd, fmode_t mode)
!test_bit(EXPLICIT_PRIMARY, &resource->flags)) {
rv = drbd_set_role(resource, R_SECONDARY, false, NULL);
if (rv < SS_SUCCESS)
- drbd_warn(resource, "Auto-demote failed: %s\n",
- drbd_set_st_err_str(rv));
+ drbd_warn(resource, "Auto-demote failed: %s (%d)\n",
+ drbd_set_st_err_str(rv), rv);
}
}
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 95cf7ac36762..2162d13cb25e 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -983,8 +983,8 @@ static int connect_work(struct drbd_work *work, int cancel)
drbd_send_disconnect(connection);
apply_local_state_change(connection, OUTDATE_DISKS_AND_DISCONNECT, force_demote);
} else {
- drbd_info(connection, "Failure to connect %d %s; retrying\n",
- rv, drbd_set_st_err_str(rv));
+ drbd_info(connection, "Failure to connect: %s (%d); retrying\n",
+ drbd_set_st_err_str(rv), rv);
change_cstate(connection, C_NETWORK_FAILURE, CS_HARD);
}
@@ -6107,7 +6107,7 @@ out:
}
if (rv < SS_SUCCESS) {
- drbd_err(resource, "State change failed: %s\n", drbd_set_st_err_str(rv));
+ drbd_err(resource, "State change failed: %s (%d)\n", drbd_set_st_err_str(rv), rv);
if (rv == SS_PRIMARY_READER)
log_openers(resource);
}
diff --git a/drbd/drbd_state.c b/drbd/drbd_state.c
index 8b60afeb097b..23eab7f867aa 100644
--- a/drbd/drbd_state.c
+++ b/drbd/drbd_state.c
@@ -791,7 +791,8 @@ static enum drbd_state_rv ___end_state_change(struct drbd_resource *resource, st
rv = try_state_change(resource);
if (rv < SS_SUCCESS) {
if (flags & CS_VERBOSE) {
- drbd_err(resource, "State change failed: %s\n", drbd_set_st_err_str(rv));
+ drbd_err(resource, "State change failed: %s (%d)\n",
+ drbd_set_st_err_str(rv), rv);
print_state_change(resource, "Failed: ");
}
goto out;
--
2.35.3

View File

@ -1,51 +0,0 @@
From c4dd27cc69b99e13d4117fa348f968cf2199db6b Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Wed, 28 Aug 2024 18:43:31 +0200
Subject: [PATCH 07/32] build: Another update to the spdx files
Some enterprise customers require these files to contain a
"PackageCopyrightText" tag. Apart from that they require the
SPDX in JSON format. That will come in another commit.
---
Makefile | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 3f58568cc138..80c20d24ab54 100644
--- a/Makefile
+++ b/Makefile
@@ -205,6 +205,8 @@ 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
@@ -219,6 +221,7 @@ drbd-kmod_rhel.spdx drbd-kmod_sles.spdx:
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;; \
@@ -228,11 +231,13 @@ drbd-kmod_rhel.spdx drbd-kmod_sles.spdx:
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_VERSION="$$SPDX_VERSION" \
+ SPDX_YEAR="$$SPDX_YEAR"; \
mv $@.tmp $@; )
# only call this wrapper from drbd-kmod.cdx.json
--
2.35.3

View File

@ -1,45 +0,0 @@
From 15cf257c277020e1ba76eff7aa99ed08d44f7d3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20=22WanzenBug=22=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Fri, 8 Sep 2023 11:45:48 +0200
Subject: [PATCH 07/20] drbd: stop defining __KERNEL_SYSCALLS__
See also upstream Linux kernel commit
d519df00938e ("drbd: stop defining __KERNEL_SYSCALLS__")
Original message:
__KERNEL_SYSCALLS__ hasn't been needed since Linux 2.6.19 so stop
defining it.
---
drbd/drbd_main.c | 1 -
drbd/drbd_receiver.c | 1 -
2 files changed, 2 deletions(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index e26cf7e2b008..ccf0f72829db 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -36,7 +36,6 @@
#include <linux/notifier.h>
#include <linux/workqueue.h>
#include <linux/kthread.h>
-#define __KERNEL_SYSCALLS__
#include <linux/unistd.h>
#include <linux/vmalloc.h>
#include <linux/device.h>
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 2162d13cb25e..2e2ed4699a94 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -26,7 +26,6 @@
#include <linux/slab.h>
#include <linux/pkt_sched.h>
#include <uapi/linux/sched/types.h>
-#define __KERNEL_SYSCALLS__
#include <linux/unistd.h>
#include <linux/vmalloc.h>
#include <linux/random.h>
--
2.35.3

View File

@ -1,235 +0,0 @@
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

View File

@ -1,80 +0,0 @@
From c34a13c3df85352124e94456f81e3d4ba4f52440 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20=22WanzenBug=22=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Fri, 8 Sep 2023 12:20:10 +0200
Subject: [PATCH 08/20] compat: block: introduce holder ops
See also upstream Linux kernel commit
0718afd47f70 ("block: introduce holder ops")
Original message:
Add a new blk_holder_ops structure, which is passed to blkdev_get_by_* and
installed in the block_device for exclusive claims. It will be used to
allow the block layer to call back into the user of the block device for
thing like notification of a removed device or a device resize.
---
.../cocci/blkdev_get_by_path__no_has_holder_ops.cocci | 6 ++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
.../tests/blkdev_get_by_path_has_holder_ops.c | 7 +++++++
drbd/drbd_nl.c | 3 ++-
4 files changed, 18 insertions(+), 1 deletion(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/blkdev_get_by_path__no_has_holder_ops.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/blkdev_get_by_path_has_holder_ops.c
diff --git a/drbd/drbd-kernel-compat/cocci/blkdev_get_by_path__no_has_holder_ops.cocci b/drbd/drbd-kernel-compat/cocci/blkdev_get_by_path__no_has_holder_ops.cocci
new file mode 100644
index 000000000000..050d89e6fe0d
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/blkdev_get_by_path__no_has_holder_ops.cocci
@@ -0,0 +1,6 @@
+@@
+expression path, mode, holder, ops;
+@@
+ blkdev_get_by_path(path, mode, holder
+- , ops
+ )
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 959bbc351e1b..7071a0a4c5ec 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -556,6 +556,9 @@ int main(int argc, char **argv)
patch(1, "__bio_add_page", true, false,
COMPAT_HAVE___BIO_ADD_PAGE, "present");
+ patch(1, "blkdev_get_by_path", true, false,
+ COMPAT_BLKDEV_GET_BY_PATH_HAS_HOLDER_OPS, "has_holder_ops");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/blkdev_get_by_path_has_holder_ops.c b/drbd/drbd-kernel-compat/tests/blkdev_get_by_path_has_holder_ops.c
new file mode 100644
index 000000000000..02a560782f37
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/blkdev_get_by_path_has_holder_ops.c
@@ -0,0 +1,7 @@
+/* { "version": "v6.5-rc1", "commit": "0718afd47f70cf46877c39c25d06b786e1a3f36c", "comment": "block: introduce holder ops", "author": "Christoph Hellwig <hch@lst.de>", "date": "Thu Jun 1 11:44:52 2023 +0200" } */
+#include <linux/blkdev.h>
+
+struct block_device *foo(const char *bdev_path, struct blk_holder_ops *ops)
+{
+ return blkdev_get_by_path(bdev_path, 0, NULL, ops);
+}
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index 0fc1d84a996f..0a67bfa4ca52 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -2560,7 +2560,8 @@ static struct block_device *open_backing_dev(struct drbd_device *device,
const char *bdev_path, void *claim_ptr)
{
struct block_device *bdev = blkdev_get_by_path(bdev_path,
- FMODE_READ | FMODE_WRITE | FMODE_EXCL, claim_ptr);
+ FMODE_READ | FMODE_WRITE | FMODE_EXCL,
+ claim_ptr, NULL);
if (IS_ERR(bdev)) {
drbd_err(device, "open(\"%s\") failed with %ld\n",
bdev_path, PTR_ERR(bdev));
--
2.35.3

View File

@ -1,49 +0,0 @@
From 98325293e7d64ffae0e5e70620c5040ab0c76179 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Tue, 13 Aug 2024 12:23:52 +0200
Subject: [PATCH 09/32] compat: fix gen_patch_names for bdev_file_open_by_path
---
drbd/drbd-kernel-compat/gen_patch_names.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index a9781bbd04e5..7549ee39afb7 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -564,14 +564,17 @@ int main(int argc, char **argv)
patch(1, "__bio_add_page", true, false,
COMPAT_HAVE___BIO_ADD_PAGE, "present");
+ /* blkdev_put is oldest, then bdev_open_by_path, then bdev_file_open_by_path */
patch(1, "bdev_file_open_by_path", true, false,
COMPAT_HAVE_BDEV_FILE_OPEN_BY_PATH, "present");
-
#if !defined(COMPAT_HAVE_BDEV_FILE_OPEN_BY_PATH)
+ /* middle ground: bdev_open_by_path */
patch(1, "bdev_open_by_path", true, false,
COMPAT_HAVE_BDEV_OPEN_BY_PATH, "present");
-
# if !defined(COMPAT_HAVE_BDEV_OPEN_BY_PATH)
+ /* old: blkdev_get_by_* and blkdev_put */
+ patch(1, "blkdev_put", true, false,
+ COMPAT_BLKDEV_PUT_HAS_HOLDER, "has_holder");
patch(1, "blkdev_get_by_path", true, false,
COMPAT_BLKDEV_GET_BY_PATH_HAS_HOLDER_OPS, "has_holder_ops");
# endif
@@ -586,11 +589,6 @@ int main(int argc, char **argv)
patch(1, "blk_mode_t", true, false,
COMPAT_HAVE_BLK_MODE_T, "present");
-#if !defined(COMPAT_HAVE_BDEV_OPEN_BY_PATH)
- patch(1, "blkdev_put", true, false,
- COMPAT_BLKDEV_PUT_HAS_HOLDER, "has_holder");
-#endif
-
patch(1, "genl_info_userhdr", true, false,
COMPAT_HAVE_GENL_INFO_USERHDR, "present");
--
2.35.3

View File

@ -1,45 +0,0 @@
From fc7b1ad2c422e4148d6419f1eec56189a7a578ac Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Fri, 1 Sep 2023 11:04:49 +0200
Subject: [PATCH 09/20] drbd: reduce "net_ee not empty" info to a dynamic debug
print
This situation is known and harmless. No need to print a worrying
"killed N entries" message when it occurs.
A similar comment explaining that this is harmless was introduced in
commit:
31e0f1250f17 on disconnect, just give up all references on pages from net_ee
But the comment got lost in some refactoring:
0b220db6109e drbd: move {active,read,sync,done}_ee lists from device to connection
Bring the comment back, slightly simplified.
---
drbd/drbd_receiver.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 2e2ed4699a94..223353b1081c 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -8664,9 +8664,15 @@ static void conn_disconnect(struct drbd_connection *connection)
i = drbd_free_peer_reqs(connection, &connection->sync_ee);
if (i)
drbd_info(connection, "sync_ee not empty, killed %u entries\n", i);
+
+ /*
+ * tcp_close and release of sendpage pages can be deferred. We don't
+ * care for exactly when the network stack does its put_page(), but
+ * release our reference on these pages right here.
+ */
i = drbd_free_peer_reqs(connection, &connection->net_ee);
if (i)
- drbd_info(connection, "net_ee not empty, killed %u entries\n", i);
+ dynamic_drbd_dbg(connection, "net_ee not empty, killed %u entries\n", i);
cleanup_unacked_peer_requests(connection);
cleanup_peer_ack_list(connection);
--
2.35.3

View File

@ -1,35 +0,0 @@
From f6078aa51ed5b776eb2f646553872d576c404c60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Tue, 13 Aug 2024 12:40:27 +0200
Subject: [PATCH 10/32] compat: fix nla_nest_start_noflag test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GCC complains:
returning struct nlattr * from a function with return type int makes
integer from pointer without a cast
Return the proper type from this function.
---
drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c b/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c
index 1d8037c397c5..62ab06c563b7 100644
--- a/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c
+++ b/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c
@@ -1,7 +1,7 @@
/* {"version": "5.1-rc7", "commit": "ae0be8de9a53cda3505865c11826d8ff0640237c", "comment": "nla_nest_start was renamed to _noflag, and the original version became a wrapper adding a flag", "author": "Michal Kubecek <mkubecek@suse.cz>", "date": "Fri Apr 26 11:13:06 2019 +0200"} */
#include <net/netlink.h>
-int dummy(struct sk_buff *skb, int attrtype)
+static struct nlattr *dummy(struct sk_buff *skb, int attrtype)
{
return nla_nest_start_noflag(skb, attrtype);
}
--
2.35.3

View File

@ -1,37 +0,0 @@
From 1b94c10250c7d37423ba894457c40d9799025a93 Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Mon, 11 Sep 2023 09:20:24 +0200
Subject: [PATCH 10/20] drbd: do not send P_CURRENT_UUID to DRBD 8 peer when
our disk fails
DRBD 8 does not understand P_CURRENT_UUID. Skip the peer in
diskfull_peers_need_new_cur_uuid() to avoid sending such a packet.
This is valid because the DRBD 8 peer generates a new UUID itself when
our disk fails.
This prevents failures of the form:
drbd res: Unexpected data packet Unknown (0x0044)
drbd res: peer( Primary -> Unknown ) conn( Connected -> ProtocolError ) pdsk( Failed -> DUnknown )
---
drbd/drbd_main.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index ccf0f72829db..e6ed1185c710 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -4614,6 +4614,9 @@ static bool diskfull_peers_need_new_cur_uuid(struct drbd_device *device)
rcu_read_lock();
for_each_peer_device_rcu(peer_device, device) {
+ if (peer_device->connection->agreed_pro_version < 110)
+ continue;
+
/* Only an up-to-date peer persists a new current uuid! */
if (peer_device->disk_state[NOW] < D_UP_TO_DATE)
continue;
--
2.35.3

View File

@ -1,129 +0,0 @@
From b993152e80676f5b9ce583c9471b630cbd0675d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20=22WanzenBug=22=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Fri, 8 Sep 2023 15:09:47 +0200
Subject: [PATCH 11/20] compat: block: pass a gendisk to ->open
See also upstream Linux kernel commit
d32e2bf83791 ("block: pass a gendisk to ->open")
Original message:
->open is only called on the whole device. Make that explicit by
passing a gendisk instead of the block_device.
---
...ice_operations_open__no_takes_gendisk.cocci | 18 ++++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
...lock_device_operations_open_takes_gendisk.c | 17 +++++++++++++++++
drbd/drbd_main.c | 10 +++++-----
4 files changed, 43 insertions(+), 5 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/block_device_operations_open__no_takes_gendisk.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/block_device_operations_open_takes_gendisk.c
diff --git a/drbd/drbd-kernel-compat/cocci/block_device_operations_open__no_takes_gendisk.cocci b/drbd/drbd-kernel-compat/cocci/block_device_operations_open__no_takes_gendisk.cocci
new file mode 100644
index 000000000000..2ba2856da9db
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/block_device_operations_open__no_takes_gendisk.cocci
@@ -0,0 +1,18 @@
+@ drbd_open_arg @
+identifier gd;
+fresh identifier bdev = "" ## "bdev";
+@@
+ drbd_open(
+- struct gendisk *gd,
++ struct block_device *bdev,
+ ... ) {
+<...
+(
+- gd->part0
++ bdev
+|
+- gd
++ bdev->bd_disk
+)
+...>
+}
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 7071a0a4c5ec..6e4f06d9a3a7 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -559,6 +559,9 @@ int main(int argc, char **argv)
patch(1, "blkdev_get_by_path", true, false,
COMPAT_BLKDEV_GET_BY_PATH_HAS_HOLDER_OPS, "has_holder_ops");
+ patch(1, "block_device_operations_open", true, false,
+ COMPAT_BLOCK_DEVICE_OPERATIONS_OPEN_TAKES_GENDISK, "takes_gendisk");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/block_device_operations_open_takes_gendisk.c b/drbd/drbd-kernel-compat/tests/block_device_operations_open_takes_gendisk.c
new file mode 100644
index 000000000000..d5f20fd569fb
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/block_device_operations_open_takes_gendisk.c
@@ -0,0 +1,17 @@
+/* { "version": "v6.5-rc1", "commit": "d32e2bf83791727a84ad5d3e3d713e82f9adbe30", "comment": "block: pass a gendisk to ->open", "author": "Christoph Hellwig <hch@lst.de>", "date": "Thu Jun 8 13:02:36 2023 +0200" } */
+#include <linux/blkdev.h>
+
+#ifndef __same_type
+# define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
+#endif
+
+int foo_open(struct gendisk *disk, unsigned int mode)
+{
+ return 0;
+}
+
+void foo(void)
+{
+ struct block_device_operations ops;
+ BUILD_BUG_ON(!(__same_type(ops.open, &foo_open)));
+}
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index e6ed1185c710..53cb4c9e7db3 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -52,7 +52,7 @@
#include "drbd_meta_data.h"
#include "drbd_dax_pmem.h"
-static int drbd_open(struct block_device *bdev, fmode_t mode);
+static int drbd_open(struct gendisk *gd, fmode_t mode);
static void drbd_release(struct gendisk *gd, fmode_t mode);
static void md_sync_timer_fn(struct timer_list *t);
static int w_bitmap_io(struct drbd_work *w, int unused);
@@ -2646,9 +2646,9 @@ out:
spin_unlock(&device->openers_lock);
}
-static int drbd_open(struct block_device *bdev, fmode_t mode)
+static int drbd_open(struct gendisk *gd, fmode_t mode)
{
- struct drbd_device *device = bdev->bd_disk->private_data;
+ struct drbd_device *device = gd->private_data;
struct drbd_resource *resource = device->resource;
long timeout = resource->res_opts.auto_promote_timeout * HZ / 10;
enum ioc_rv r;
@@ -2664,7 +2664,7 @@ static int drbd_open(struct block_device *bdev, fmode_t mode)
/* Fail read-write open early,
* in case someone explicitly set us read-only (blockdev --setro) */
- if (bdev_read_only(bdev) && (mode & FMODE_WRITE))
+ if (bdev_read_only(gd->part0) && (mode & FMODE_WRITE))
return -EACCES;
if (resource->fail_io[NOW])
@@ -2740,7 +2740,7 @@ out:
mutex_unlock(&resource->open_release);
if (err) {
- drbd_release(bdev->bd_disk, mode);
+ drbd_release(gd, mode);
if (err == -EAGAIN && !(mode & FMODE_NDELAY))
err = -EMEDIUMTYPE;
}
--
2.35.3

View File

@ -1,29 +0,0 @@
From 32b84f7b4d071312e5e812eab6b26e4aad2899e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Mon, 19 Aug 2024 16:19:47 +0200
Subject: [PATCH 11/32] compat: fix blk_alloc_disk rule
---
drbd/drbd-kernel-compat/gen_patch_names.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 7549ee39afb7..c21a43b39488 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -155,9 +155,10 @@ int main(int argc, char **argv)
patch(1, "blk_alloc_disk", true, false,
COMPAT_BLK_ALLOC_DISK_TAKES_QUEUE_LIMITS, "takes_queue_limits");
-
+#if !defined(COMPAT_BLK_ALLOC_DISK_TAKES_QUEUE_LIMITS)
patch(1, "blk_alloc_disk", true, false,
COMPAT_HAVE_BLK_ALLOC_DISK, "present");
+#endif
/*******************************************************************************/
/*
--
2.35.3

View File

@ -1,67 +0,0 @@
From 88bf7f95dc359f4901f08ac8fb8ffc7dfceca9c1 Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Wed, 13 Sep 2023 17:50:37 +0200
Subject: [PATCH 12/20] drbd: Restore DATA_CORKED and CONTROL_CORKED bits
They were removed with 9072e1d1b6b3 in January 2022.
Since then, the CONTROL_CORKED mapped onto C_UNREGISTERED.
I think that had a negligible impact because C_UNREGISTERED indicates
if a connection was deleted before. It is no longer connected when it
is time to delete a connection. Therefore, the corking code can not
set that double-used bit.
The other user of C_UNREGISTERED is when iterating over connections. A
wrongly set C_UNREGISTERED causes another iteration over the
connections list - no further harm.
Still, I am fixing this by allocating dedicated bits for corking in
the flags word.
---
drbd/drbd_debugfs.c | 2 ++
drbd/drbd_int.h | 2 ++
drbd/drbd_main.c | 1 +
3 files changed, 5 insertions(+)
diff --git a/drbd/drbd_debugfs.c b/drbd/drbd_debugfs.c
index 778a995018d7..b8e4f2cde426 100644
--- a/drbd/drbd_debugfs.c
+++ b/drbd/drbd_debugfs.c
@@ -839,6 +839,8 @@ static int connection_debug_show(struct seq_file *m, void *ignored)
pretty_print_bit(CONN_DRY_RUN);
pretty_print_bit(DISCONNECT_EXPECTED);
pretty_print_bit(BARRIER_ACK_PENDING);
+ pretty_print_bit(DATA_CORKED);
+ pretty_print_bit(CONTROL_CORKED);
pretty_print_bit(C_UNREGISTERED);
pretty_print_bit(RECONNECT);
pretty_print_bit(CONN_DISCARD_MY_DATA);
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
index 17be90e7d8fa..4f3228d5a4d1 100644
--- a/drbd/drbd_int.h
+++ b/drbd/drbd_int.h
@@ -755,6 +755,8 @@ enum connection_flag {
DISCONNECT_EXPECTED,
BARRIER_ACK_PENDING,
CORKED,
+ DATA_CORKED = CORKED, /* used as computed value CORKED + DATA_STREAM */
+ CONTROL_CORKED, /* used as computed value CORKED + CONTROL_STREAM */
C_UNREGISTERED,
RECONNECT,
CONN_DISCARD_MY_DATA,
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 53cb4c9e7db3..6bb618909aa0 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -1039,6 +1039,7 @@ int __send_command(struct drbd_connection *connection, int vnr,
struct drbd_send_buffer *sbuf = &connection->send_buffer[drbd_stream];
struct drbd_transport *transport = &connection->transport;
struct drbd_transport_ops *tr_ops = transport->ops;
+ /* CORKED + drbd_stream is either DATA_CORKED or CONTROL_CORKED */
bool corked = test_bit(CORKED + drbd_stream, &connection->flags);
bool flush = stream_and_flags & SFLAG_FLUSH;
int err;
--
2.35.3

View File

@ -1,29 +0,0 @@
From 392743b95ab0aaff13d5c91eaaab5ae24388384f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Tue, 13 Aug 2024 12:29:35 +0200
Subject: [PATCH 12/32] drbd: remove const from function return type
Linux 6.10 enables some compiler flag that errors out with:
error: type qualifiers ignored on function return type
---
drbd/drbd_receiver.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 985fac8e69b3..1b9f80de6f41 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -272,7 +272,7 @@ static const char *drbd_sync_rule_str(enum sync_rule rule)
return sync_rule_names[rule];
}
-static const struct sync_descriptor strategy_descriptor(enum sync_strategy strategy)
+static struct sync_descriptor strategy_descriptor(enum sync_strategy strategy)
{
if (strategy < 0 || strategy > ARRAY_SIZE(sync_descriptors)) {
WARN_ON(true);
--
2.35.3

View File

@ -1,39 +0,0 @@
From 3672388dc75cbcdb5f3821b5f4354b55333004f5 Mon Sep 17 00:00:00 2001
From: Christoph Hellwig <hch@lst.de>
Date: Wed, 6 Mar 2024 15:03:30 +0100
Subject: [PATCH 13/32] drbd: don't set max_write_zeroes_sectors in
decide_on_discard_support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
fixup_write_zeroes always overrides the max_write_zeroes_sectors value
a little further down the callchain, so don't bother to setup a limit
in decide_on_discard_support.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Philipp Reisner <philipp.reisner@linbit.com>
Reviewed-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Tested-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
Link: https://lore.kernel.org/r/20240306140332.623759-6-philipp.reisner@linbit.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
---
drbd/drbd_nl.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index ef315e02f437..a0c3534d8996 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -2070,7 +2070,6 @@ static void decide_on_discard_support(struct drbd_device *device,
blk_queue_discard_granularity(q, 512);
max_discard_sectors = drbd_max_discard_sectors(device->resource);
blk_queue_max_discard_sectors(q, max_discard_sectors);
- blk_queue_max_write_zeroes_sectors(q, max_discard_sectors);
return;
not_supported:
--
2.35.3

View File

@ -1,38 +0,0 @@
From 9e087399533445e3df60a34f26a1e6a285b0504a Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Tue, 12 Sep 2023 16:36:43 +0200
Subject: [PATCH 13/20] drbd: remove unused extern for conn_try_outdate_peer()
---
drbd/drbd_int.h | 1 -
drbd/drbd_nl.c | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
index 4f3228d5a4d1..f6e7c3ac2629 100644
--- a/drbd/drbd_int.h
+++ b/drbd/drbd_int.h
@@ -1932,7 +1932,6 @@ extern void drbd_reconsider_queue_parameters(struct drbd_device *device,
struct drbd_backing_dev *bdev);
extern bool barrier_pending(struct drbd_resource *resource);
extern enum drbd_state_rv drbd_set_role(struct drbd_resource *, enum drbd_role, bool, struct sk_buff *);
-extern bool conn_try_outdate_peer(struct drbd_connection *connection);
extern void conn_try_outdate_peer_async(struct drbd_connection *connection);
extern int drbd_maybe_khelper(struct drbd_device *, struct drbd_connection *, char *);
extern int drbd_create_peer_device_default_config(struct drbd_peer_device *peer_device);
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index 0a67bfa4ca52..cb5cdb184824 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -768,7 +768,7 @@ static bool intentional_diskless(struct drbd_resource *resource)
return intentional_diskless;
}
-bool conn_try_outdate_peer(struct drbd_connection *connection)
+static bool conn_try_outdate_peer(struct drbd_connection *connection)
{
struct drbd_resource *resource = connection->resource;
unsigned long last_reconnect_jif;
--
2.35.3

File diff suppressed because it is too large Load Diff

View File

@ -1,73 +0,0 @@
From 78d5d462c2bdac350921c114caca588c606d7c0b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Mon, 1 Jul 2024 17:56:08 +0200
Subject: [PATCH 14/32] drbd: split out a drbd_discard_supported helper
Add a helper to check if discard is supported for a given connection /
backing device combination.
Similar idea to upstream kernel commit 5eaee6e9c8f9
("drbd: split out a drbd_discard_supported helper"), but also get rid of
the goto.
---
drbd/drbd_nl.c | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index a0c3534d8996..e3f508cd0421 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -2044,19 +2044,31 @@ static unsigned int drbd_max_discard_sectors(struct drbd_resource *resource)
return s;
}
-static void decide_on_discard_support(struct drbd_device *device,
+static bool drbd_discard_supported(struct drbd_device *device,
struct drbd_backing_dev *bdev)
{
- struct request_queue *q = device->rq_queue;
- unsigned int max_discard_sectors;
-
if (bdev && !bdev_max_discard_sectors(bdev->backing_bdev))
- goto not_supported;
+ return false;
if (!(common_connection_features(device->resource) & DRBD_FF_TRIM)) {
drbd_info(device,
"peer DRBD too old, does not support TRIM: disabling discards\n");
- goto not_supported;
+ return false;
+ }
+
+ return true;
+}
+
+static void decide_on_discard_support(struct drbd_device *device,
+ struct drbd_backing_dev *bdev)
+{
+ struct request_queue *q = device->rq_queue;
+ unsigned int max_discard_sectors;
+
+ if (!drbd_discard_supported(device, bdev)) {
+ blk_queue_discard_granularity(q, 0);
+ blk_queue_max_discard_sectors(q, 0);
+ return;
}
/*
@@ -2070,11 +2082,6 @@ static void decide_on_discard_support(struct drbd_device *device,
blk_queue_discard_granularity(q, 512);
max_discard_sectors = drbd_max_discard_sectors(device->resource);
blk_queue_max_discard_sectors(q, max_discard_sectors);
- return;
-
-not_supported:
- blk_queue_discard_granularity(q, 0);
- blk_queue_max_discard_sectors(q, 0);
}
static void fixup_write_zeroes(struct drbd_device *device, struct request_queue *q)
--
2.35.3

View File

@ -1,202 +0,0 @@
From 3b9fcc2cfaa32766724f371cc2054e057adbc425 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20=22WanzenBug=22=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Mon, 11 Sep 2023 13:36:07 +0200
Subject: [PATCH 15/20] compat: block: use the holder as indication for
exclusive opens
See also upstream Linux kernel commit
2736e8eeb0cc ("block: use the holder as indication for exclusive opens")
Original message:
The current interface for exclusive opens is rather confusing as it
requires both the FMODE_EXCL flag and a holder. Remove the need to pass
FMODE_EXCL and just key off the exclusive open off a non-NULL holder.
For blkdev_put this requires adding the holder argument, which provides
better debug checking that only the holder actually releases the hold,
but at the same time allows removing the now superfluous mode argument.
---
.../cocci/blkdev_put__no_has_holder.cocci | 38 +++++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 ++
.../tests/blkdev_put_has_holder.c | 17 +++++++++
drbd/drbd_nl.c | 28 ++++++++------
4 files changed, 75 insertions(+), 11 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/blkdev_put__no_has_holder.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/blkdev_put_has_holder.c
diff --git a/drbd/drbd-kernel-compat/cocci/blkdev_put__no_has_holder.cocci b/drbd/drbd-kernel-compat/cocci/blkdev_put__no_has_holder.cocci
new file mode 100644
index 000000000000..c903bc2d529c
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/blkdev_put__no_has_holder.cocci
@@ -0,0 +1,38 @@
+@@
+expression path, mode;
+@@
+ blkdev_get_by_path(
+ path,
+- mode,
++ mode | FMODE_EXCL,
+ ...
+ )
+
+@@
+expression bdev, holder;
+@@
+ blkdev_put(
+ bdev,
+- holder
++ FMODE_READ | FMODE_WRITE | FMODE_EXCL
+ )
+
+@@
+identifier device, bdev, holder, do_bd_unlink;
+@@
+ void close_backing_dev(
+ struct drbd_device *device,
+ struct block_device *bdev,
+- void *holder,
+ bool do_bd_unlink
+ ) { ... }
+
+@@
+expression device, bdev, holder, do_bd_unlink;
+@@
+ close_backing_dev(
+ device,
+ bdev,
+- holder,
+ do_bd_unlink
+ )
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 6e4f06d9a3a7..4761c1ef7d0c 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -562,6 +562,9 @@ int main(int argc, char **argv)
patch(1, "block_device_operations_open", true, false,
COMPAT_BLOCK_DEVICE_OPERATIONS_OPEN_TAKES_GENDISK, "takes_gendisk");
+ patch(1, "blkdev_put", true, false,
+ COMPAT_BLKDEV_PUT_HAS_HOLDER, "has_holder");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/blkdev_put_has_holder.c b/drbd/drbd-kernel-compat/tests/blkdev_put_has_holder.c
new file mode 100644
index 000000000000..d5f0c5dd0355
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/blkdev_put_has_holder.c
@@ -0,0 +1,17 @@
+/* { "version": "v6.5-rc1", "commit": "ae220766d87cd6799dbf918fea10613ae14c0654", "comment": "block: remove the unused mode argument to ->release", "author": "Christoph Hellwig <hch@lst.de>", "date": "Thu Jun 8 13:02:37 2023 +0200" } */
+#include <linux/blkdev.h>
+
+#ifndef __same_type
+# define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
+#endif
+
+void foo_blkdev_put(struct block_device *bdev, void *holder)
+{
+}
+
+
+void foo(void)
+{
+ BUILD_BUG_ON(!(__same_type(&blkdev_put, &foo_blkdev_put)));
+}
+
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index b7e9e43312f9..8c968cf252ca 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -2536,13 +2536,13 @@ bool want_bitmap(struct drbd_peer_device *peer_device)
}
static void close_backing_dev(struct drbd_device *device, struct block_device *bdev,
- bool do_bd_unlink)
+ void *holder, bool do_bd_unlink)
{
if (!bdev)
return;
if (do_bd_unlink)
bd_unlink_disk_holder(bdev, device->vdisk);
- blkdev_put(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL);
+ blkdev_put(bdev, holder);
}
void drbd_backing_dev_free(struct drbd_device *device, struct drbd_backing_dev *ldev)
@@ -2552,8 +2552,11 @@ void drbd_backing_dev_free(struct drbd_device *device, struct drbd_backing_dev *
drbd_dax_close(ldev);
- close_backing_dev(device, ldev->md_bdev, ldev->md_bdev != ldev->backing_bdev);
- close_backing_dev(device, ldev->backing_bdev, true);
+ close_backing_dev(device,
+ ldev->md_bdev,
+ ldev->md.meta_dev_idx < 0 ? (void *)device : (void *)drbd_m_holder,
+ ldev->md_bdev != ldev->backing_bdev);
+ close_backing_dev(device, ldev->backing_bdev, device, true);
kfree(ldev->disk_conf);
kfree(ldev);
@@ -2563,7 +2566,7 @@ static struct block_device *open_backing_dev(struct drbd_device *device,
const char *bdev_path, void *claim_ptr)
{
struct block_device *bdev = blkdev_get_by_path(bdev_path,
- FMODE_READ | FMODE_WRITE | FMODE_EXCL,
+ FMODE_READ | FMODE_WRITE,
claim_ptr, NULL);
if (IS_ERR(bdev)) {
drbd_err(device, "open(\"%s\") failed with %ld\n",
@@ -2588,6 +2591,7 @@ static int open_backing_devices(struct drbd_device *device,
struct drbd_backing_dev *nbc)
{
struct block_device *bdev;
+ void *meta_claim_ptr;
int err;
bdev = open_backing_dev(device, new_disk_conf->backing_dev, device);
@@ -2597,12 +2601,17 @@ static int open_backing_devices(struct drbd_device *device,
err = link_backing_dev(device, new_disk_conf->backing_dev, bdev);
if (err) {
/* close without unlinking; otherwise error path will try to unlink */
- close_backing_dev(device, bdev, false);
+ close_backing_dev(device, bdev, device, false);
return ERR_OPEN_DISK;
}
nbc->backing_bdev = bdev;
+ /* meta_claim_ptr: device, if claimed exclusively; shared drbd_m_holder,
+ * if potentially shared with other drbd minors
+ */
+ meta_claim_ptr = (new_disk_conf->meta_dev_idx < 0) ?
+ (void *)device : (void *)drbd_m_holder;
/*
* meta_dev_idx >= 0: external fixed size, possibly multiple
* drbd sharing one meta device. TODO in that case, paranoia
@@ -2611,10 +2620,7 @@ static int open_backing_devices(struct drbd_device *device,
* should check it for you already; but if you don't, or
* someone fooled it, we need to double check here)
*/
- bdev = open_backing_dev(device, new_disk_conf->meta_dev,
- /* claim ptr: device, if claimed exclusively; shared drbd_m_holder,
- * if potentially shared with other drbd minors */
- (new_disk_conf->meta_dev_idx < 0) ? (void*)device : (void*)drbd_m_holder);
+ bdev = open_backing_dev(device, new_disk_conf->meta_dev, meta_claim_ptr);
if (IS_ERR(bdev))
return ERR_OPEN_MD_DISK;
@@ -2624,7 +2630,7 @@ static int open_backing_devices(struct drbd_device *device,
err = link_backing_dev(device, new_disk_conf->meta_dev, bdev);
if (err) {
/* close without unlinking; otherwise error path will try to unlink */
- close_backing_dev(device, bdev, false);
+ close_backing_dev(device, bdev, meta_claim_ptr, false);
return ERR_OPEN_MD_DISK;
}
}
--
2.35.3

View File

@ -1,194 +0,0 @@
From 5931286cb71114c0f34e51fc7f357dceec139ca1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Tue, 13 Aug 2024 12:26:02 +0200
Subject: [PATCH 15/32] drbd: atomically update queue limits in
drbd_reconsider_queue_parameters
Switch drbd_reconsider_queue_parameters to set up the queue parameters
in an on-stack queue_limits structure and apply the limits atomically.
Remove various helpers that have become so trivial that they can be
folded into drbd_reconsider_queue_parameters.
Same idea as upstream kernel commit e6dfe748f09e ("drbd: atomically
update queue limits in drbd_reconsider_queue_parameters"), but with some
adaptations to DRBD 9.
---
drbd/drbd_nl.c | 136 ++++++++++++++++++++++---------------------------
1 file changed, 60 insertions(+), 76 deletions(-)
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index e3f508cd0421..7193ba0c77e3 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -2018,11 +2018,6 @@ static u32 common_connection_features(struct drbd_resource *resource)
return features;
}
-static void blk_queue_discard_granularity(struct request_queue *q, unsigned int granularity)
-{
- q->limits.discard_granularity = granularity;
-}
-
static unsigned int drbd_max_discard_sectors(struct drbd_resource *resource)
{
struct drbd_connection *connection;
@@ -2059,73 +2054,20 @@ static bool drbd_discard_supported(struct drbd_device *device,
return true;
}
-static void decide_on_discard_support(struct drbd_device *device,
- struct drbd_backing_dev *bdev)
-{
- struct request_queue *q = device->rq_queue;
- unsigned int max_discard_sectors;
-
- if (!drbd_discard_supported(device, bdev)) {
- blk_queue_discard_granularity(q, 0);
- blk_queue_max_discard_sectors(q, 0);
- return;
- }
-
- /*
- * We don't care for the granularity, really.
- *
- * Stacking limits below should fix it for the local device. Whether or
- * not it is a suitable granularity on the remote device is not our
- * problem, really. If you care, you need to use devices with similar
- * topology on all peers.
- */
- blk_queue_discard_granularity(q, 512);
- max_discard_sectors = drbd_max_discard_sectors(device->resource);
- blk_queue_max_discard_sectors(q, max_discard_sectors);
-}
-
-static void fixup_write_zeroes(struct drbd_device *device, struct request_queue *q)
-{
- /* Fixup max_write_zeroes_sectors after blk_stack_limits():
- * if we can handle "zeroes" efficiently on the protocol,
- * we want to do that, even if our backend does not announce
- * max_write_zeroes_sectors itself. */
-
- /* If all peers announce WZEROES support, use it. Otherwise, rather
- * send explicit zeroes than rely on some discard-zeroes-data magic. */
- if (common_connection_features(device->resource) & DRBD_FF_WZEROES)
- q->limits.max_write_zeroes_sectors = DRBD_MAX_BBIO_SECTORS;
- else
- q->limits.max_write_zeroes_sectors = 0;
-}
-
-static void fixup_discard_support(struct drbd_device *device, struct request_queue *q)
-{
- unsigned int max_discard = device->rq_queue->limits.max_discard_sectors;
- unsigned int discard_granularity = device->rq_queue->limits.discard_granularity >> SECTOR_SHIFT;
-
- if (discard_granularity > max_discard) {
- blk_queue_discard_granularity(q, 0);
- blk_queue_max_discard_sectors(q, 0);
- }
-}
-
-void drbd_reconsider_queue_parameters(struct drbd_device *device, struct drbd_backing_dev *bdev)
+static void get_common_queue_limits(struct queue_limits *common_limits,
+ struct drbd_device *device)
{
- struct request_queue * const q = device->rq_queue;
- struct queue_limits common_limits = { 0 }; /* sizeof(struct queue_limits) ~ 110 bytes */
- struct queue_limits peer_limits = { 0 };
struct drbd_peer_device *peer_device;
- struct request_queue *b = NULL;
+ struct queue_limits peer_limits = { 0 };
- blk_set_stacking_limits(&common_limits);
+ blk_set_stacking_limits(common_limits);
/* This is the workaround for "bio would need to, but cannot, be split" */
- common_limits.seg_boundary_mask = PAGE_SIZE - 1;
- common_limits.max_hw_sectors = device->device_conf.max_bio_size >> SECTOR_SHIFT;
- common_limits.max_sectors = device->device_conf.max_bio_size >> SECTOR_SHIFT;
- common_limits.physical_block_size = device->device_conf.block_size;
- common_limits.logical_block_size = device->device_conf.block_size;
- common_limits.io_min = device->device_conf.block_size;
+ common_limits->seg_boundary_mask = PAGE_SIZE - 1;
+ common_limits->max_hw_sectors = device->device_conf.max_bio_size >> SECTOR_SHIFT;
+ common_limits->max_sectors = device->device_conf.max_bio_size >> SECTOR_SHIFT;
+ common_limits->physical_block_size = device->device_conf.block_size;
+ common_limits->logical_block_size = device->device_conf.block_size;
+ common_limits->io_min = device->device_conf.block_size;
rcu_read_lock();
for_each_peer_device_rcu(peer_device, device) {
@@ -2140,21 +2082,63 @@ void drbd_reconsider_queue_parameters(struct drbd_device *device, struct drbd_ba
peer_limits.io_opt = peer_device->q_limits.io_opt;
peer_limits.max_hw_sectors = peer_device->q_limits.max_bio_size >> SECTOR_SHIFT;
peer_limits.max_sectors = peer_device->q_limits.max_bio_size >> SECTOR_SHIFT;
- blk_stack_limits(&common_limits, &peer_limits, 0);
+ blk_stack_limits(common_limits, &peer_limits, 0);
}
rcu_read_unlock();
+}
+
+void drbd_reconsider_queue_parameters(struct drbd_device *device, struct drbd_backing_dev *bdev)
+{
+ struct request_queue * const q = device->rq_queue;
+ struct queue_limits lim;
+ struct request_queue *b = NULL;
+
+ lim = queue_limits_start_update(q);
+ get_common_queue_limits(&lim, device);
+
+ /*
+ * We don't care for the granularity, really.
+ * Stacking limits below should fix it for the local device. Whether or
+ * not it is a suitable granularity on the remote device is not our
+ * problem, really. If you care, you need to use devices with similar
+ * topology on all peers.
+ */
+ if (drbd_discard_supported(device, bdev)) {
+ lim.discard_granularity = 512;
+ lim.max_hw_discard_sectors = drbd_max_discard_sectors(device->resource);
+ } else {
+ lim.discard_granularity = 0;
+ lim.max_hw_discard_sectors = 0;
+ }
if (bdev) {
b = bdev->backing_bdev->bd_disk->queue;
- blk_stack_limits(&common_limits, &b->limits, 0);
- disk_update_readahead(device->vdisk);
+ blk_stack_limits(&lim, &b->limits, 0);
+ }
+
+ /*
+ * If we can handle "zeroes" efficiently on the protocol,
+ * we want to do that, even if our backend does not announce
+ * max_write_zeroes_sectors itself.
+ */
+ if (common_connection_features(device->resource) & DRBD_FF_WZEROES)
+ lim.max_write_zeroes_sectors = DRBD_MAX_BBIO_SECTORS;
+ else
+ lim.max_write_zeroes_sectors = 0;
+
+ if ((lim.discard_granularity >> SECTOR_SHIFT) >
+ lim.max_hw_discard_sectors) {
+ /*
+ * discard_granularity is the smallest supported unit of a
+ * discard. If that is larger than the maximum supported discard
+ * size, we need to disable discards altogether.
+ */
+ lim.discard_granularity = 0;
+ lim.max_hw_discard_sectors = 0;
}
- q->limits = common_limits;
- blk_queue_max_hw_sectors(q, common_limits.max_hw_sectors);
- decide_on_discard_support(device, bdev);
- fixup_write_zeroes(device, q);
- fixup_discard_support(device, q);
+ if (queue_limits_commit_update(q, &lim))
+ drbd_err(device, "setting new queue limits failed\n");
}
/* Make sure IO is suspended before calling this function(). */
--
2.35.3

View File

@ -1,71 +0,0 @@
From fef08ee4fac426f5dfbec124bd2bd58fbd390cb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 22 Aug 2024 12:09:42 +0200
Subject: [PATCH 16/32] compat: test and patch for queue_limits_start_update
---
...ueue_limits_start_update__no_present.cocci | 20 +++++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
.../tests/have_queue_limits_start_update.c | 8 ++++++++
3 files changed, 31 insertions(+)
create mode 100644 drbd/drbd-kernel-compat/cocci/queue_limits_start_update__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/have_queue_limits_start_update.c
diff --git a/drbd/drbd-kernel-compat/cocci/queue_limits_start_update__no_present.cocci b/drbd/drbd-kernel-compat/cocci/queue_limits_start_update__no_present.cocci
new file mode 100644
index 000000000000..4e34f5887181
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/queue_limits_start_update__no_present.cocci
@@ -0,0 +1,20 @@
+@@
+identifier lim;
+identifier q;
+identifier device;
+identifier bdev;
+@@
+void drbd_reconsider_queue_parameters(struct drbd_device *device, struct drbd_backing_dev *bdev)
+{
+...
+ lim =
+- queue_limits_start_update(q);
++ q->limits;
+...
+- if (queue_limits_commit_update(q, &lim)) { ... }
++ blk_queue_max_hw_sectors(q, lim.max_hw_sectors);
++ q->limits = lim;
++ if (bdev)
++ disk_update_readahead(device->vdisk);
+...
+}
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index c21a43b39488..13aec5c8bd5f 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -393,6 +393,9 @@ int main(int argc, char **argv)
COMPAT_HAVE_WB_CONGESTED_ENUM, "present");
#endif
+ patch(1, "queue_limits_start_update", true, false,
+ COMPAT_HAVE_QUEUE_LIMITS_START_UPDATE, "present");
+
patch(1, "disk_update_readahead", true, false,
COMPAT_HAVE_DISK_UPDATE_READAHEAD, "present");
diff --git a/drbd/drbd-kernel-compat/tests/have_queue_limits_start_update.c b/drbd/drbd-kernel-compat/tests/have_queue_limits_start_update.c
new file mode 100644
index 000000000000..a867d1675218
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_queue_limits_start_update.c
@@ -0,0 +1,8 @@
+/* { "version": "v6.9-rc1", "commit": "d690cb8ae14bd377d422b7905b6959c7e7a45b95", "comment": "block: add an API to atomically update queue limits", "author": "Christoph Hellwig <hch@lst.de>", "date": "Tue Feb 13 08:34:14 2024 +0100" } */
+
+#include <linux/blkdev.h>
+
+static struct queue_limits foo(struct request_queue *q)
+{
+ return queue_limits_start_update(q);
+}
--
2.35.3

View File

@ -1,33 +0,0 @@
From 69d9286628b730870665cd2c6f05dd9f1813c65e Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Sun, 17 Sep 2023 22:21:11 +0800
Subject: [PATCH 16/20] drbd: Fix `net-options --set-defaults` to not clear the
transport
So far, `drbdsetup net-options --set-defaults` cleared the
transport_name. That is a stupid bug that caused `drbdadm adjust` to
do a disconnect/connect cycle. This affected `lb-tcp` and `rdma`. As
`tcp` is the default, it was not affected by this.
---
drbd/drbd_nl.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index 8c968cf252ca..b0a1e6fa46f1 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -3729,6 +3729,11 @@ int drbd_adm_net_opts(struct sk_buff *skb, struct genl_info *info)
if (should_set_defaults(info))
set_net_conf_defaults(new_net_conf);
+ /* The transport_name is immutable taking precedence over set_net_conf_defaults() */
+ memcpy(new_net_conf->transport_name, old_net_conf->transport_name,
+ old_net_conf->transport_name_len);
+ new_net_conf->transport_name_len = old_net_conf->transport_name_len;
+
err = net_conf_from_attrs_for_change(new_net_conf, info);
if (err && err != -ENOMSG) {
retcode = ERR_MANDATORY_TAG;
--
2.35.3

View File

@ -1,54 +0,0 @@
From 4352ece8e85da43090be171276a0d45d83c55a00 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 22 Aug 2024 12:25:39 +0200
Subject: [PATCH 17/32] compat: specify which essential change was not made
---
drbd/drbd-kernel-compat/cocci/bdi_congested__yes_present.cocci | 2 +-
drbd/drbd-kernel-compat/cocci/bio_op_shift__yes_present.cocci | 2 +-
.../cocci/blk_queue_max_write_same_sectors__yes_present.cocci | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drbd/drbd-kernel-compat/cocci/bdi_congested__yes_present.cocci b/drbd/drbd-kernel-compat/cocci/bdi_congested__yes_present.cocci
index 8a0260321ab5..fdf6afc8355f 100644
--- a/drbd/drbd-kernel-compat/cocci/bdi_congested__yes_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/bdi_congested__yes_present.cocci
@@ -21,7 +21,7 @@ struct device_statistics *s;
@ script:python depends on !(add_bdi_read_congested_congested_remote && add_bdi_read_congested_device_to_statistics) @
@@
import sys
-print('ERROR: A rule making an essential change was not executed!', file=sys.stderr)
+print('ERROR: A rule making an essential change was not executed! (bdi_read_congested)', file=sys.stderr)
print('ERROR: This would not show up as a compiler error, but would still break DRBD.', file=sys.stderr)
print('ERROR: Check bdi_congested__yes_present.cocci', file=sys.stderr)
print('ERROR: As a precaution, the build will be aborted here.', file=sys.stderr)
diff --git a/drbd/drbd-kernel-compat/cocci/bio_op_shift__yes_present.cocci b/drbd/drbd-kernel-compat/cocci/bio_op_shift__yes_present.cocci
index cc02f5b91c2e..3225291f7dbd 100644
--- a/drbd/drbd-kernel-compat/cocci/bio_op_shift__yes_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/bio_op_shift__yes_present.cocci
@@ -57,7 +57,7 @@ combine_opf(wire_flags_to_bio_op(dpf),
@ script:python depends on !combine_wire_flags @
@@
import sys
-print('ERROR: A rule making an essential change was not executed!', file=sys.stderr)
+print('ERROR: A rule making an essential change was not executed! (combine_opf)', file=sys.stderr)
print('ERROR: This would not show up as a compiler error, but would still break DRBD.', file=sys.stderr)
print('ERROR: As a precaution, the build will be aborted here.', file=sys.stderr)
sys.exit(1)
diff --git a/drbd/drbd-kernel-compat/cocci/blk_queue_max_write_same_sectors__yes_present.cocci b/drbd/drbd-kernel-compat/cocci/blk_queue_max_write_same_sectors__yes_present.cocci
index 8eb4eef7dfd5..9202ee9c2dc4 100644
--- a/drbd/drbd-kernel-compat/cocci/blk_queue_max_write_same_sectors__yes_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/blk_queue_max_write_same_sectors__yes_present.cocci
@@ -7,7 +7,7 @@ blk_queue_max_hw_sectors(q, ...);
@ script:python depends on !add_blk_queue_max_write_same_sectors @
@@
import sys
-print('ERROR: A rule making an essential change was not executed!', file=sys.stderr)
+print('ERROR: A rule making an essential change was not executed! (blk_queue_max_write_same_sectors)', file=sys.stderr)
print('ERROR: This would not show up as a compiler error, but would still break DRBD.', file=sys.stderr)
print('ERROR: Check blk_queue_max_write_same_sectors_yes_present.cocci', file=sys.stderr)
print('ERROR: As a precaution, the build will be aborted here.', file=sys.stderr)
--
2.35.3

View File

@ -1,35 +0,0 @@
From 0666bc5b014049b6aa184b5a8fdb60481b9c8717 Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Fri, 22 Sep 2023 15:09:07 +0200
Subject: [PATCH 17/20] drbd: propagate exposed UUIDs only into established
connections
Sending into connections in C_CONNECTING state while we exchange the
feature and auth packets might interfere with exchanging those. I also
witnessed that it might block unexpectedly long (2 - 6 seconds),
holding the `connection->mutex[DATA_STREAM]` mutex and again causing
troubles with establishing connections.
This is a fix for commit 772e5b21d from April 2023
"drbd: Consider outdating a disk when more recent data is behind a diskless"
Released with of 9.1.15 and 9.2.4.
---
drbd/drbd_receiver.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 0c3ab0fd486c..bfd265b86b43 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -7206,7 +7206,7 @@ static void propagate_exposed_uuid(struct drbd_device *device)
u64 im;
for_each_peer_device_ref(peer_device, im, device) {
- if (peer_device->connection->cstate[NOW] < C_CONNECTING)
+ if (!test_bit(INITIAL_STATE_SENT, &peer_device->flags))
continue;
drbd_send_current_uuid(peer_device, device->exposed_data_uuid, 0);
}
--
2.35.3

View File

@ -1,185 +0,0 @@
From e3ef0e229a6ae88346164d1507697ae1b397cdf9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20=22WanzenBug=22=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Tue, 12 Sep 2023 10:17:08 +0200
Subject: [PATCH 18/20] drbd: rework autopromote
With upstream commit ae220766d87c we lost the ability to keep separate
counts for RW and RO openers. Instead, we keep track of openers using a
single count, and a flag indicating if the device was opened RW once.
Once a device was opened RW, it will stay "writable" for DRBD, until all
openers are gone. This should offer a good compromise between keeping
the old auto-promote behaviour, and the changed device interface.
---
drbd/drbd_int.h | 3 ++-
drbd/drbd_main.c | 38 +++++++++++++++++++++-----------------
drbd/drbd_nl.c | 9 +++++----
drbd/drbd_state.c | 7 ++++---
4 files changed, 32 insertions(+), 25 deletions(-)
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
index b705f26e71a4..cf593c09cda1 100644
--- a/drbd/drbd_int.h
+++ b/drbd/drbd_int.h
@@ -1399,7 +1399,8 @@ struct drbd_device {
struct drbd_bitmap *bitmap;
- int open_rw_cnt, open_ro_cnt;
+ int open_cnt;
+ bool writable;
/* FIXME clean comments, restructure so it is more obvious which
* members are protected by what */
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 4b0b967c2c97..bb05b2215dfb 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -2579,10 +2579,9 @@ static enum ioc_rv inc_open_count(struct drbd_device *device, fmode_t mode)
r = IOC_ABORT;
else if (!resource->remote_state_change) {
r = IOC_OK;
+ device->open_cnt++;
if (mode & FMODE_WRITE)
- device->open_rw_cnt++;
- else
- device->open_ro_cnt++;
+ device->writable = true;
}
read_unlock_irq(&resource->state_rwlock);
@@ -2756,8 +2755,10 @@ void drbd_open_counts(struct drbd_resource *resource, int *rw_count_ptr, int *ro
rcu_read_lock();
idr_for_each_entry(&resource->devices, device, vnr) {
- rw_count += device->open_rw_cnt;
- ro_count += device->open_ro_cnt;
+ if (device->writable)
+ rw_count += device->open_cnt;
+ else
+ ro_count += device->open_cnt;
}
rcu_read_unlock();
*rw_count_ptr = rw_count;
@@ -2825,33 +2826,35 @@ static void drbd_release(struct gendisk *gd, fmode_t mode)
{
struct drbd_device *device = gd->private_data;
struct drbd_resource *resource = device->resource;
+ bool was_writable = device->writable;
int open_rw_cnt, open_ro_cnt;
mutex_lock(&resource->open_release);
- if (mode & FMODE_WRITE)
- device->open_rw_cnt--;
- else
- device->open_ro_cnt--;
+ device->open_cnt--;
drbd_open_counts(resource, &open_rw_cnt, &open_ro_cnt);
- /* last one to close will be responsible for write-out of all dirty pages */
- if (mode & FMODE_WRITE && device->open_rw_cnt == 0)
+ /* last one to close will be responsible for write-out of all dirty pages.
+ * We also reset the writable flag for this device here: later code may
+ * check if the device is still opened for writes to determine things
+ * like auto-demote.
+ */
+ if (was_writable && device->open_cnt == 0) {
drbd_fsync_device(device);
+ device->writable = false;
+ }
if (open_ro_cnt == 0)
wake_up_all(&resource->state_wait);
- if (test_bit(UNREGISTERED, &device->flags) &&
- device->open_rw_cnt == 0 && device->open_ro_cnt == 0 &&
+ if (test_bit(UNREGISTERED, &device->flags) && device->open_cnt == 0 &&
!test_and_set_bit(DESTROYING_DEV, &device->flags))
call_rcu(&device->rcu, drbd_reclaim_device);
if (resource->res_opts.auto_promote) {
enum drbd_state_rv rv;
- if (mode & FMODE_WRITE &&
- open_rw_cnt == 0 &&
+ if (was_writable && open_rw_cnt == 0 &&
resource->role[NOW] == R_PRIMARY &&
!test_bit(EXPLICIT_PRIMARY, &resource->flags)) {
rv = drbd_set_role(resource, R_SECONDARY, false, "auto-demote", NULL);
@@ -2869,9 +2872,10 @@ static void drbd_release(struct gendisk *gd, fmode_t mode)
end_state_change(resource, &irq_flags, "release");
}
- /* if the open counts are 0, we free the whole list, otherwise we remove the specific pid */
+ /* if the open count is 0, we free the whole list, otherwise we remove the specific pid */
prune_or_free_openers(device,
- (open_ro_cnt == 0 && open_rw_cnt == 0) ? 0 : task_pid_nr(current));
+ (open_ro_cnt == 0 && open_rw_cnt == 0) ?
+ 0 : task_pid_nr(current));
mutex_unlock(&resource->open_release);
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index b0a1e6fa46f1..71ed4272614e 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -4541,8 +4541,10 @@ int drbd_open_ro_count(struct drbd_resource *resource)
int vnr, open_ro_cnt = 0;
read_lock_irq(&resource->state_rwlock);
- idr_for_each_entry(&resource->devices, device, vnr)
- open_ro_cnt += device->open_ro_cnt;
+ idr_for_each_entry(&resource->devices, device, vnr) {
+ if (!device->writable)
+ open_ro_cnt += device->open_cnt;
+ }
read_unlock_irq(&resource->state_rwlock);
return open_ro_cnt;
@@ -6394,8 +6396,7 @@ static enum drbd_ret_code adm_del_minor(struct drbd_device *device)
notify_device_state(NULL, 0, device, NULL, NOTIFY_DESTROY);
mutex_unlock(&notification_mutex);
- if (device->open_ro_cnt == 0 && device->open_rw_cnt == 0 &&
- !test_and_set_bit(DESTROYING_DEV, &device->flags))
+ if (device->open_cnt == 0 && !test_and_set_bit(DESTROYING_DEV, &device->flags))
call_rcu(&device->rcu, drbd_reclaim_device);
return ret;
diff --git a/drbd/drbd_state.c b/drbd/drbd_state.c
index 22cd134be962..fa70507df425 100644
--- a/drbd/drbd_state.c
+++ b/drbd/drbd_state.c
@@ -1634,7 +1634,7 @@ handshake_found:
return SS_TWO_PRIMARIES;
if (!fail_io[NEW]) {
idr_for_each_entry(&resource->devices, device, vnr) {
- if (device->open_ro_cnt)
+ if (!device->writable && device->open_cnt)
return SS_PRIMARY_READER;
/*
* One might be tempted to add "|| open_rw_cont" here.
@@ -1661,7 +1661,7 @@ handshake_found:
(disk_state[OLD] > D_DETACHING && disk_state[NEW] == D_DETACHING)))
return SS_IN_TRANSIENT_STATE;
- if (role[OLD] == R_PRIMARY && role[NEW] == R_SECONDARY && device->open_rw_cnt &&
+ if (role[OLD] == R_PRIMARY && role[NEW] == R_SECONDARY && device->writable &&
!(resource->state_change_flags & CS_FS_IGN_OPENERS))
return SS_DEVICE_IN_USE;
@@ -1693,7 +1693,8 @@ handshake_found:
return SS_NO_UP_TO_DATE_DISK;
/* Prevent detach or disconnect while held open read only */
- if (device->open_ro_cnt && any_disk_up_to_date[OLD] && !any_disk_up_to_date[NEW])
+ if (!device->writable && device->open_cnt &&
+ any_disk_up_to_date[OLD] && !any_disk_up_to_date[NEW])
return SS_NO_UP_TO_DATE_DISK;
if (disk_state[NEW] == D_NEGOTIATING)
--
2.35.3

View File

@ -1,57 +0,0 @@
From b340c96d60065f08397d14360e7f045005c587e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Fri, 23 Aug 2024 12:30:45 +0200
Subject: [PATCH 18/32] gen_patch_names: reorder blk_mode_t
And match against bdev_file_open_by_path.
---
drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci | 7 +------
drbd/drbd-kernel-compat/gen_patch_names.c | 6 +++---
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci b/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
index d1312a093ffe..cde4430478e5 100644
--- a/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
@@ -22,12 +22,7 @@ identifier mode;
@@
// special case: bdev_open_by_path takes a blk_mode_t, so convert that too. I can't seem to get
// coccinelle to match the "READ | WRITE" condition generically, so just hard code it.
-// NOTE: we use blkdev_get_by_path instead of bdev_open_by_path in some compat cases, so support that too.
-(
-bdev_open_by_path
-|
-blkdev_get_by_path
-)
+bdev_file_open_by_path
(...,
- BLK_OPEN_READ | BLK_OPEN_WRITE
+ FMODE_READ | FMODE_WRITE
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 13aec5c8bd5f..6f62ea5827b7 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -568,6 +568,9 @@ int main(int argc, char **argv)
patch(1, "__bio_add_page", true, false,
COMPAT_HAVE___BIO_ADD_PAGE, "present");
+ patch(1, "blk_mode_t", true, false,
+ COMPAT_HAVE_BLK_MODE_T, "present");
+
/* blkdev_put is oldest, then bdev_open_by_path, then bdev_file_open_by_path */
patch(1, "bdev_file_open_by_path", true, false,
COMPAT_HAVE_BDEV_FILE_OPEN_BY_PATH, "present");
@@ -590,9 +593,6 @@ int main(int argc, char **argv)
patch(1, "block_device_operations_release", true, false,
COMPAT_BLOCK_DEVICE_OPERATIONS_RELEASE_TAKES_SINGLE_ARGUMENT, "takes_single_argument");
- patch(1, "blk_mode_t", true, false,
- COMPAT_HAVE_BLK_MODE_T, "present");
-
patch(1, "genl_info_userhdr", true, false,
COMPAT_HAVE_GENL_INFO_USERHDR, "present");
--
2.35.3

View File

@ -1,107 +0,0 @@
From bf287c15359c4495a706ca270e7dcab4c2d6ebcc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20=22WanzenBug=22=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Tue, 12 Sep 2023 15:27:01 +0200
Subject: [PATCH 19/20] compat: block: remove the unused mode argument to
->release
See also upstream Linux kernel commit
ae220766d87c ("block: remove the unused mode argument to ->release")
Original message:
The mode argument to the ->release block_device_operation is never used,
so remove it.
---
...ions_release__no_takes_single_argument.cocci | 17 +++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
...e_operations_release_takes_single_argument.c | 7 +++++++
drbd/drbd_main.c | 6 +++---
4 files changed, 30 insertions(+), 3 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/block_device_operations_release__no_takes_single_argument.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/block_device_operations_release_takes_single_argument.c
diff --git a/drbd/drbd-kernel-compat/cocci/block_device_operations_release__no_takes_single_argument.cocci b/drbd/drbd-kernel-compat/cocci/block_device_operations_release__no_takes_single_argument.cocci
new file mode 100644
index 000000000000..b0a0ee9eef39
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/block_device_operations_release__no_takes_single_argument.cocci
@@ -0,0 +1,17 @@
+@@
+identifier gd;
+fresh identifier mode = "" ## "mode";
+@@
+ drbd_release(
+ struct gendisk *gd
++ , fmode_t mode
+ ) { ... }
+
+@@
+symbol drbd_release;
+expression gd;
+@@
+ drbd_release(
+ gd
++ , 0
+ )
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 4761c1ef7d0c..608be8b4f099 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -565,6 +565,9 @@ int main(int argc, char **argv)
patch(1, "blkdev_put", true, false,
COMPAT_BLKDEV_PUT_HAS_HOLDER, "has_holder");
+ patch(1, "block_device_operations_release", true, false,
+ COMPAT_BLOCK_DEVICE_OPERATIONS_RELEASE_TAKES_SINGLE_ARGUMENT, "takes_single_argument");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/block_device_operations_release_takes_single_argument.c b/drbd/drbd-kernel-compat/tests/block_device_operations_release_takes_single_argument.c
new file mode 100644
index 000000000000..d51c863e359a
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/block_device_operations_release_takes_single_argument.c
@@ -0,0 +1,7 @@
+/* { "version": "v6.5-rc1", "commit": "ae220766d87cd6799dbf918fea10613ae14c0654", "comment": "block: remove the unused mode argument to ->release", "author": "Christoph Hellwig <hch@lst.de>", "date": "Thu Jun 8 13:02:37 2023 +0200" } */
+#include <linux/blkdev.h>
+
+void foo(struct block_device_operations *ops, struct gendisk *gd)
+{
+ ops->release(gd);
+}
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index bb05b2215dfb..1864861db21d 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -53,7 +53,7 @@
#include "drbd_dax_pmem.h"
static int drbd_open(struct gendisk *gd, fmode_t mode);
-static void drbd_release(struct gendisk *gd, fmode_t mode);
+static void drbd_release(struct gendisk *gd);
static void md_sync_timer_fn(struct timer_list *t);
static int w_bitmap_io(struct drbd_work *w, int unused);
static int flush_send_buffer(struct drbd_connection *connection, enum drbd_stream drbd_stream);
@@ -2740,7 +2740,7 @@ out:
mutex_unlock(&resource->open_release);
if (err) {
- drbd_release(gd, mode);
+ drbd_release(gd);
if (err == -EAGAIN && !(mode & FMODE_NDELAY))
err = -EMEDIUMTYPE;
}
@@ -2822,7 +2822,7 @@ void drbd_fsync_device(struct drbd_device *device)
drbd_flush_peer_acks(resource);
}
-static void drbd_release(struct gendisk *gd, fmode_t mode)
+static void drbd_release(struct gendisk *gd)
{
struct drbd_device *device = gd->private_data;
struct drbd_resource *resource = device->resource;
--
2.35.3

View File

@ -1,38 +0,0 @@
From 37edd6c75cccba9b151e8b834c83832ae0382484 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 29 Aug 2024 13:27:31 +0200
Subject: [PATCH 19/32] compat: fix blk_queue_update_readahead patch
Did not match anymore
---
.../cocci/blk_queue_update_readahead__no_present.cocci | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drbd/drbd-kernel-compat/cocci/blk_queue_update_readahead__no_present.cocci b/drbd/drbd-kernel-compat/cocci/blk_queue_update_readahead__no_present.cocci
index ed62a3426ad6..2e78f626261d 100644
--- a/drbd/drbd-kernel-compat/cocci/blk_queue_update_readahead__no_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/blk_queue_update_readahead__no_present.cocci
@@ -1,8 +1,10 @@
@@
-expression e;
-struct request_queue *q, b;
+identifier q, b;
@@
-blk_stack_limits(e, &b->limits, 0);
+struct request_queue *q;
+...
+struct request_queue *b;
+<...
- blk_queue_update_readahead(q);
+ if (q->backing_dev_info->ra_pages !=
+ b->backing_dev_info->ra_pages) {
@@ -12,3 +14,4 @@ blk_stack_limits(e, &b->limits, 0);
+ q->backing_dev_info->ra_pages =
+ b->backing_dev_info->ra_pages;
+ }
+...>
\ No newline at end of file
--
2.35.3

View File

@ -1,57 +0,0 @@
From f2a779276e7b0918c8592da8254a044c291f1778 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 29 Aug 2024 16:15:27 +0200
Subject: [PATCH 20/32] compat: test and patch for
que_limits->max_hw_discard_sectors
---
.../queue_limits__no_has_max_hw_discard_sectors.cocci | 5 +++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
.../tests/queue_limits_has_max_hw_discard_sectors.c | 8 ++++++++
3 files changed, 16 insertions(+)
create mode 100644 drbd/drbd-kernel-compat/cocci/queue_limits__no_has_max_hw_discard_sectors.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/queue_limits_has_max_hw_discard_sectors.c
diff --git a/drbd/drbd-kernel-compat/cocci/queue_limits__no_has_max_hw_discard_sectors.cocci b/drbd/drbd-kernel-compat/cocci/queue_limits__no_has_max_hw_discard_sectors.cocci
new file mode 100644
index 000000000000..bf96b80a003d
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/queue_limits__no_has_max_hw_discard_sectors.cocci
@@ -0,0 +1,5 @@
+@@
+struct queue_limits lim;
+@@
+- lim.max_hw_discard_sectors
++ lim.max_discard_sectors
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 6f62ea5827b7..5abc32725daf 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -296,6 +296,9 @@ int main(int argc, char **argv)
patch(1, "write_zeroes", true, false,
COMPAT_HAVE_REQ_OP_WRITE_ZEROES, "capable");
+ patch(1, "queue_limits", true, false,
+ COMPAT_QUEUE_LIMITS_HAS_MAX_HW_DISCARD_SECTORS, "has_max_hw_discard_sectors");
+
patch(1, "bio_bi_opf", true, false,
COMPAT_HAVE_BIO_BI_OPF, "present");
diff --git a/drbd/drbd-kernel-compat/tests/queue_limits_has_max_hw_discard_sectors.c b/drbd/drbd-kernel-compat/tests/queue_limits_has_max_hw_discard_sectors.c
new file mode 100644
index 000000000000..5dcf9c48667b
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/queue_limits_has_max_hw_discard_sectors.c
@@ -0,0 +1,8 @@
+/* { "version": "v6.9-rc1", "commit": "4f563a64732dabb2677c7d1232a8f714a18b41b3", "comment": "lim.max_hw_discard_sectors was added", "author": "Christoph Hellwig <hch@lst.de>", "date": "Tue Feb 13 08:34:16 2024 +0100" } */
+
+#include <linux/blkdev.h>
+
+int foo(struct queue_limits *lim)
+{
+ return lim->max_hw_discard_sectors;
+}
--
2.35.3

View File

@ -1,66 +0,0 @@
From c8e2a3c4355b4794267cd6e58a074802b4607cb9 Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Fri, 22 Sep 2023 16:57:24 +0200
Subject: [PATCH 20/20] drbd: do not allow auto-demote to be interrupted by
signal
Pending signals can mess up auto-demote:
drbd res: Preparing cluster-wide state change 671410162 (0->-1 3/2)
drbd res: Aborting cluster-wide state change 671410162 (6ms) rv = -21
drbd res: Auto-demote failed: Interrupted state change
After this state change failure no process has the DRBD device open, but
DRBD remains Primary.
---
drbd/drbd_main.c | 33 +++++++++++++++++++++++----------
1 file changed, 23 insertions(+), 10 deletions(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 1864861db21d..0719229f210e 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -2851,17 +2851,30 @@ static void drbd_release(struct gendisk *gd)
!test_and_set_bit(DESTROYING_DEV, &device->flags))
call_rcu(&device->rcu, drbd_reclaim_device);
- if (resource->res_opts.auto_promote) {
- enum drbd_state_rv rv;
+ if (resource->res_opts.auto_promote &&
+ open_rw_cnt == 0 &&
+ resource->role[NOW] == R_PRIMARY &&
+ !test_bit(EXPLICIT_PRIMARY, &resource->flags)) {
+ sigset_t mask, oldmask;
+ int rv;
+
+ /*
+ * Auto-demote is triggered by the last opener releasing the
+ * DRBD device. However, it is an implicit action, so it should
+ * not be affected by the state of the process. In particular,
+ * it should ignore any pending signals. It may be the case
+ * that the process is releasing DRBD because it is being
+ * terminated using a signal.
+ */
+ sigfillset(&mask);
+ sigprocmask(SIG_BLOCK, &mask, &oldmask);
- if (was_writable && open_rw_cnt == 0 &&
- resource->role[NOW] == R_PRIMARY &&
- !test_bit(EXPLICIT_PRIMARY, &resource->flags)) {
- rv = drbd_set_role(resource, R_SECONDARY, false, "auto-demote", NULL);
- if (rv < SS_SUCCESS)
- drbd_warn(resource, "Auto-demote failed: %s (%d)\n",
- drbd_set_st_err_str(rv), rv);
- }
+ rv = drbd_set_role(resource, R_SECONDARY, false, "auto-demote", NULL);
+ if (rv < SS_SUCCESS)
+ drbd_warn(resource, "Auto-demote failed: %s (%d)\n",
+ drbd_set_st_err_str(rv), rv);
+
+ sigprocmask(SIG_SETMASK, &oldmask, NULL);
}
if (open_ro_cnt == 0 && open_rw_cnt == 0 && resource->fail_io[NOW]) {
--
2.35.3

View File

@ -1,26 +0,0 @@
From 4578726d3b0e5b7c699659c1ecd26194060e7be7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 29 Aug 2024 16:15:47 +0200
Subject: [PATCH 21/32] compat: fixup write_zeroes__no_capable
We now access the field directly instead of using this helper
---
drbd/drbd-kernel-compat/cocci/write_zeroes__no_capable.cocci | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drbd/drbd-kernel-compat/cocci/write_zeroes__no_capable.cocci b/drbd/drbd-kernel-compat/cocci/write_zeroes__no_capable.cocci
index 4fa6d9e249d7..2b060e2abd16 100644
--- a/drbd/drbd-kernel-compat/cocci/write_zeroes__no_capable.cocci
+++ b/drbd/drbd-kernel-compat/cocci/write_zeroes__no_capable.cocci
@@ -30,5 +30,6 @@ expression e;
+WARN_ON_ONCE(e); /* WRITE_ZEROES not supported on this kernel */
@@
+struct queue_limits lim;
@@
-- blk_queue_max_write_zeroes_sectors(...);
+- lim.max_write_zeroes_sectors = ...;
--
2.35.3

View File

@ -1,107 +0,0 @@
From a000a5577210929ca808fe19719186cb7e917f44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20WanzenBug=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Wed, 13 Sep 2023 13:30:57 +0200
Subject: [PATCH] compat: sock: Remove ->sendpage*() in favour of
sendmsg(MSG_SPLICE_PAGES)
See also upstream Linux kernel commits
dc97391e6610 ("sock: Remove ->sendpage*() in favour of sendmsg(MSG_SPLICE_PAGES)")
eeac7405c735 ("drbd: Use sendmsg(MSG_SPLICE_PAGES) rather than sendpage()")
4b9c2edaf728 ("drbd: swap bvec_set_page len and offset")
Original message:
Remove ->sendpage() and ->sendpage_locked(). sendmsg() with
MSG_SPLICE_PAGES should be used instead. This allows multiple pages and
multipage folios to be passed through.
---
.../cocci/msg_splice_pages__no_present.cocci | 16 ++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
.../tests/have_msg_splice_pages.c | 7 +++++++
drbd/drbd_transport_tcp.c | 8 ++++++--
4 files changed, 32 insertions(+), 2 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/msg_splice_pages__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/have_msg_splice_pages.c
diff --git a/drbd/drbd-kernel-compat/cocci/msg_splice_pages__no_present.cocci b/drbd/drbd-kernel-compat/cocci/msg_splice_pages__no_present.cocci
new file mode 100644
index 000000000000..0fdf77e43737
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/msg_splice_pages__no_present.cocci
@@ -0,0 +1,16 @@
+@@
+expression flags;
+@@
+ flags
+- | MSG_SPLICE_PAGES
+
+@@
+identifier bvec, page, len, offset, msg, socket;
+@@
+- struct bio_vec bvec;
+ ...
+ int sent;
+- bvec_set_page(&bvec, page, len, offset);
+- iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, &bvec, 1, len);
+- sent = sock_sendmsg(socket, &msg);
++ sent = socket->ops->sendpage(socket, page, offset, len, msg.msg_flags);
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 608be8b4f099..6a96c5b89f11 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -127,6 +127,9 @@ int main(int argc, char **argv)
patch(1, "bvec_kmap_local", true, false,
COMPAT_HAVE_BVEC_KMAP_LOCAL, "present");
+ patch(1, "msg_splice_pages", true, false,
+ COMPAT_HAVE_MSG_SPLICE_PAGES, "present");
+
patch(1, "struct_bvec_iter", true, false,
COMPAT_HAVE_STRUCT_BVEC_ITER, "present");
diff --git a/drbd/drbd-kernel-compat/tests/have_msg_splice_pages.c b/drbd/drbd-kernel-compat/tests/have_msg_splice_pages.c
new file mode 100644
index 000000000000..0bb23ef6d39a
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_msg_splice_pages.c
@@ -0,0 +1,7 @@
+/* { "version": "v6.5-rc1", "commit": "dc97391e661009eab46783030d2404c9b6e6f2e7", "comment": "sock: Remove ->sendpage*() in favour of sendmsg(MSG_SPLICE_PAGES)", "author": "David Howells <dhowells@redhat.com>", "date": "Fri Jun 23 23:55:12 2023 +0100" } */
+#include <linux/net.h>
+
+int foo(void)
+{
+ return MSG_SPLICE_PAGES;
+}
diff --git a/drbd/drbd_transport_tcp.c b/drbd/drbd_transport_tcp.c
index ca60833f73d7..5dcba50dd0eb 100644
--- a/drbd/drbd_transport_tcp.c
+++ b/drbd/drbd_transport_tcp.c
@@ -1193,18 +1193,22 @@ static int dtt_send_page(struct drbd_transport *transport, enum drbd_stream stre
struct drbd_tcp_transport *tcp_transport =
container_of(transport, struct drbd_tcp_transport, transport);
struct socket *socket = tcp_transport->stream[stream];
+ struct msghdr msg = { .msg_flags = msg_flags | MSG_NOSIGNAL | MSG_SPLICE_PAGES };
+ struct bio_vec bvec;
int len = size;
int err = -EIO;
if (!socket)
return -ENOTCONN;
- msg_flags |= MSG_NOSIGNAL;
dtt_update_congested(tcp_transport);
do {
int sent;
- sent = socket->ops->sendpage(socket, page, offset, len, msg_flags);
+ bvec_set_page(&bvec, page, len, offset);
+ iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, &bvec, 1, len);
+
+ sent = sock_sendmsg(socket, &msg);
if (sent <= 0) {
if (sent == -EAGAIN) {
if (drbd_stream_send_timed_out(transport, stream))
--
2.42.1

View File

@ -1,183 +0,0 @@
From 2d3c3fd6546174a0452c9bbd64d4f4193c0c39e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20WanzenBug=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Wed, 13 Sep 2023 11:26:35 +0200
Subject: [PATCH] compat: block: replace fmode_t with a block-specific type for
block open flags
See also upstream Linux kernel commit
05bdb9965305 ("block: replace fmode_t with a block-specific type for block open flags"
Original message:
The only overlap between the block open flags mapped into the fmode_t and
other uses of fmode_t are FMODE_READ and FMODE_WRITE. Define a new
blk_mode_t instead for use in blkdev_get_by_{dev,path}, ->open and
->ioctl and stop abusing fmode_t.
---
.../cocci/blk_mode_t__no_present.cocci | 19 ++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
.../tests/have_blk_mode_t.c | 4 +++
drbd/drbd_main.c | 26 +++++++++----------
4 files changed, 39 insertions(+), 13 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/have_blk_mode_t.c
diff --git a/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci b/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
new file mode 100644
index 000000000000..030723c817de
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
@@ -0,0 +1,19 @@
+@@
+identifier fn;
+identifier mode;
+@@
+ fn (
+ ...,
+- blk_mode_t mode
++ fmode_t mode
+ ) {
+ <...
+(
+- BLK_OPEN_WRITE
++ FMODE_WRITE
+|
+- BLK_OPEN_NDELAY
++ FMODE_NDELAY
+)
+ ...>
+ }
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 6a96c5b89f11..e4a65a3c451e 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -571,6 +571,9 @@ int main(int argc, char **argv)
patch(1, "block_device_operations_release", true, false,
COMPAT_BLOCK_DEVICE_OPERATIONS_RELEASE_TAKES_SINGLE_ARGUMENT, "takes_single_argument");
+ patch(1, "blk_mode_t", true, false,
+ COMPAT_HAVE_BLK_MODE_T, "present");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/have_blk_mode_t.c b/drbd/drbd-kernel-compat/tests/have_blk_mode_t.c
new file mode 100644
index 000000000000..e063bdc30f43
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_blk_mode_t.c
@@ -0,0 +1,4 @@
+/* { "version": "v6.5-rc1", "commit": "05bdb9965305bbfdae79b31d22df03d1e2cfcb22", "comment": "block: replace fmode_t with a block-specific type for block open flags", "author": "Christoph Hellwig <hch@lst.de>", "date": "Thu Jun 8 13:02:55 2023 +0200" } */
+#include <linux/blkdev.h>
+
+void foo(blk_mode_t mode) {}
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 0719229f210e..f9560bdff63f 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -52,7 +52,7 @@
#include "drbd_meta_data.h"
#include "drbd_dax_pmem.h"
-static int drbd_open(struct gendisk *gd, fmode_t mode);
+static int drbd_open(struct gendisk *gd, blk_mode_t mode);
static void drbd_release(struct gendisk *gd);
static void md_sync_timer_fn(struct timer_list *t);
static int w_bitmap_io(struct drbd_work *w, int unused);
@@ -2566,10 +2566,10 @@ enum ioc_rv {
IOC_ABORT = 2,
};
-static enum ioc_rv inc_open_count(struct drbd_device *device, fmode_t mode)
+static enum ioc_rv inc_open_count(struct drbd_device *device, blk_mode_t mode)
{
struct drbd_resource *resource = device->resource;
- enum ioc_rv r = mode & FMODE_NDELAY ? IOC_ABORT : IOC_SLEEP;
+ enum ioc_rv r = mode & BLK_OPEN_NDELAY ? IOC_ABORT : IOC_SLEEP;
if (test_bit(DOWN_IN_PROGRESS, &resource->flags))
return IOC_ABORT;
@@ -2580,7 +2580,7 @@ static enum ioc_rv inc_open_count(struct drbd_device *device, fmode_t mode)
else if (!resource->remote_state_change) {
r = IOC_OK;
device->open_cnt++;
- if (mode & FMODE_WRITE)
+ if (mode & BLK_OPEN_WRITE)
device->writable = true;
}
read_unlock_irq(&resource->state_rwlock);
@@ -2646,7 +2646,7 @@ out:
spin_unlock(&device->openers_lock);
}
-static int drbd_open(struct gendisk *gd, fmode_t mode)
+static int drbd_open(struct gendisk *gd, blk_mode_t mode)
{
struct drbd_device *device = gd->private_data;
struct drbd_resource *resource = device->resource;
@@ -2655,7 +2655,7 @@ static int drbd_open(struct gendisk *gd, fmode_t mode)
int err = 0;
/* Fail read-only open from systemd-udev (version <= 238) */
- if (!(mode & FMODE_WRITE) && !drbd_allow_oos) {
+ if (!(mode & BLK_OPEN_WRITE) && !drbd_allow_oos) {
char comm[TASK_COMM_LEN];
get_task_comm(comm, current);
if (!strcmp("systemd-udevd", comm))
@@ -2664,7 +2664,7 @@ static int drbd_open(struct gendisk *gd, fmode_t mode)
/* Fail read-write open early,
* in case someone explicitly set us read-only (blockdev --setro) */
- if (bdev_read_only(gd->part0) && (mode & FMODE_WRITE))
+ if (bdev_read_only(gd->part0) && (mode & BLK_OPEN_WRITE))
return -EACCES;
if (resource->fail_io[NOW])
@@ -2693,14 +2693,14 @@ static int drbd_open(struct gendisk *gd, fmode_t mode)
This avoids split brain when the drbd volume gets opened
temporarily by udev while it scans for PV signatures. */
- if (mode & FMODE_WRITE) {
+ if (mode & BLK_OPEN_WRITE) {
if (resource->role[NOW] == R_SECONDARY) {
- rv = try_to_promote(device, timeout, (mode & FMODE_NDELAY));
+ rv = try_to_promote(device, timeout, (mode & BLK_OPEN_NDELAY));
if (rv < SS_SUCCESS)
drbd_info(resource, "Auto-promote failed: %s (%d)\n",
drbd_set_st_err_str(rv), rv);
}
- } else if ((mode & FMODE_NDELAY) == 0) {
+ } else if ((mode & BLK_OPEN_NDELAY) == 0) {
/* Double check peers
*
* Some services may try to first open ro, and only if that
@@ -2720,14 +2720,14 @@ static int drbd_open(struct gendisk *gd, fmode_t mode)
}
}
} else if (resource->role[NOW] != R_PRIMARY &&
- !(mode & FMODE_WRITE) && !drbd_allow_oos) {
+ !(mode & BLK_OPEN_WRITE) && !drbd_allow_oos) {
err = -EMEDIUMTYPE;
goto out;
}
if (test_bit(UNREGISTERED, &device->flags)) {
err = -ENODEV;
- } else if (mode & FMODE_WRITE) {
+ } else if (mode & BLK_OPEN_WRITE) {
if (resource->role[NOW] != R_PRIMARY)
err = -EROFS;
} else /* READ access only */ {
@@ -2741,7 +2741,7 @@ out:
mutex_unlock(&resource->open_release);
if (err) {
drbd_release(gd);
- if (err == -EAGAIN && !(mode & FMODE_NDELAY))
+ if (err == -EAGAIN && !(mode & BLK_OPEN_NDELAY))
err = -EMEDIUMTYPE;
}
--
2.42.1

View File

@ -1,77 +0,0 @@
From ce06250eb289e98bf97940104c92751282704783 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Wed, 4 Sep 2024 19:05:06 +0200
Subject: [PATCH 22/32] compat: fixup queue_flag_discard__yes_present
blk_queue_discard_granularity does not exist anymore, just use the field
in queue_limits.
Match directly do drbd_reconsider_queue_parameters instead of trying to
guess the right function.
---
.../queue_flag_discard__yes_present.cocci | 30 ++++++-------------
1 file changed, 9 insertions(+), 21 deletions(-)
diff --git a/drbd/drbd-kernel-compat/cocci/queue_flag_discard__yes_present.cocci b/drbd/drbd-kernel-compat/cocci/queue_flag_discard__yes_present.cocci
index cc28c3d02d82..e0ecc697b10a 100644
--- a/drbd/drbd-kernel-compat/cocci/queue_flag_discard__yes_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/queue_flag_discard__yes_present.cocci
@@ -1,27 +1,19 @@
@@
-struct request_queue *q;
-@@
-(
-q->limits.max_discard_sectors = 0;
-+ blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q);
-|
-q->limits.max_discard_sectors = ...;
-+ blk_queue_flag_set(QUEUE_FLAG_DISCARD, q);
-)
-
-@@
-struct request_queue *q;
+struct queue_limits lim;
+identifier q;
@@
+struct request_queue *q = device->rq_queue;
+...
(
-blk_queue_discard_granularity(q, 0);
+lim.max_hw_discard_sectors = 0;
+ blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q);
|
-blk_queue_discard_granularity(q, 512);
+lim.max_hw_discard_sectors = ...;
+ blk_queue_flag_set(QUEUE_FLAG_DISCARD, q);
)
@@
-identifier q, device, fn;
+identifier q, device;
@@
+static void fixup_discard_if_not_supported(struct request_queue *q)
+{
@@ -31,18 +23,14 @@ identifier q, device, fn;
+ * */
+ if (!blk_queue_discard(q)) {
+ blk_queue_max_discard_sectors(q, 0);
-+ blk_queue_discard_granularity(q, 0);
++ q->limits.discard_granularity = 0;
+ }
+}
-fn (struct drbd_device *device, ...)
+void drbd_reconsider_queue_parameters(struct drbd_device *device, ...)
{
...
struct request_queue *q = device->rq_queue;
...
-decide_on_discard_support(...);
-<+...
-blk_stack_limits(...);
-...+>
+ fixup_discard_if_not_supported(q);
}
--
2.35.3

View File

@ -1,96 +0,0 @@
From 1412792a443ddc696fd1c8981a6cc544272f54bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20WanzenBug=20Wanzenb=C3=B6ck?=
<moritz.wanzenboeck@linbit.com>
Date: Wed, 13 Sep 2023 15:46:12 +0200
Subject: [PATCH] compat: genetlink: remove userhdr from struct genl_info
See also upstream Linux kernel commit
bffcc6882a1b ("genetlink: remove userhdr from struct genl_info")
Original message:
Only three families use info->userhdr today and going forward
we discourage using fixed headers in new families.
So having the pointer to user header in struct genl_info
is an overkill. Compute the header pointer at runtime.
---
.../cocci/genl_info_userhdr__no_present.cocci | 5 +++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
drbd/drbd-kernel-compat/tests/have_genl_info_userhdr.c | 7 +++++++
drbd/drbd_nl.c | 6 +++---
4 files changed, 18 insertions(+), 3 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/genl_info_userhdr__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/have_genl_info_userhdr.c
diff --git a/drbd/drbd-kernel-compat/cocci/genl_info_userhdr__no_present.cocci b/drbd/drbd-kernel-compat/cocci/genl_info_userhdr__no_present.cocci
new file mode 100644
index 000000000000..75e787797068
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/genl_info_userhdr__no_present.cocci
@@ -0,0 +1,5 @@
+@@
+expression info;
+@@
+- genl_info_userhdr(info)
++ info->userhdr
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index e4a65a3c451e..b136acf3148a 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -574,6 +574,9 @@ int main(int argc, char **argv)
patch(1, "blk_mode_t", true, false,
COMPAT_HAVE_BLK_MODE_T, "present");
+ patch(1, "genl_info_userhdr", true, false,
+ COMPAT_HAVE_GENL_INFO_USERHDR, "present");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/have_genl_info_userhdr.c b/drbd/drbd-kernel-compat/tests/have_genl_info_userhdr.c
new file mode 100644
index 000000000000..3c69dacce244
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_genl_info_userhdr.c
@@ -0,0 +1,7 @@
+/* { "version": "v6.6-rc1", "commit": "bffcc6882a1bb2be8c9420184966f4c2c822078e", "comment": "genetlink: remove userhdr from struct genl_info", "author": "Jakub Kicinski <kuba@kernel.org>", "date": "Mon Aug 14 14:47:16 2023 -0700" } */
+#include <net/genetlink.h>
+
+void *foo(struct genl_info *info)
+{
+ return genl_info_userhdr(info);
+}
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index 71ed4272614e..538c31202e4b 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -203,7 +203,7 @@ static struct drbd_path *first_path(struct drbd_connection *connection)
static int drbd_adm_prepare(struct drbd_config_context *adm_ctx,
struct sk_buff *skb, struct genl_info *info, unsigned flags)
{
- struct drbd_genlmsghdr *d_in = info->userhdr;
+ struct drbd_genlmsghdr *d_in = genl_info_userhdr(info);
const u8 cmd = info->genlhdr->cmd;
int err;
@@ -2106,7 +2106,7 @@ static void drbd_try_suspend_al(struct drbd_device *device)
static bool should_set_defaults(struct genl_info *info)
{
- unsigned flags = ((struct drbd_genlmsghdr*)info->userhdr)->flags;
+ unsigned int flags = ((struct drbd_genlmsghdr *)genl_info_userhdr(info))->flags;
return 0 != (flags & DRBD_GENL_F_SET_DEFAULTS);
}
@@ -6279,7 +6279,7 @@ out_no_unlock:
int drbd_adm_new_minor(struct sk_buff *skb, struct genl_info *info)
{
struct drbd_config_context adm_ctx;
- struct drbd_genlmsghdr *dh = info->userhdr;
+ struct drbd_genlmsghdr *dh = genl_info_userhdr(info);
struct device_conf device_conf;
struct drbd_resource *resource;
struct drbd_device *device;
--
2.42.1

View File

@ -1,53 +0,0 @@
From ac4e2f85066d2da306ec0e3fed8db4e945be6f6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 5 Sep 2024 13:03:07 +0200
Subject: [PATCH 23/32] drbd: move flags to queue_limits
Roughly equivalent to the following commits from upstream Linux:
1122c0c1 block: move cache control settings out of queue->flags
bd4a633b block: move the nonrot flag to queue_limits
1a02f3a7 block: move the stable_writes flag to queue_limits
---
drbd/drbd_main.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 2792b9896271..407b0a1d1773 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -3886,6 +3886,11 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsig
int vnr = adm_ctx->volume;
enum drbd_ret_code err = ERR_NOMEM;
bool locked = false;
+ struct queue_limits lim = {
+ .features = BLK_FEAT_WRITE_CACHE | BLK_FEAT_FUA |
+ BLK_FEAT_ROTATIONAL |
+ BLK_FEAT_STABLE_WRITES,
+ };
lockdep_assert_held(&resource->conf_update);
@@ -3948,7 +3953,7 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsig
init_rwsem(&device->uuid_sem);
- disk = blk_alloc_disk(NULL, NUMA_NO_NODE);
+ disk = blk_alloc_disk(&lim, NUMA_NO_NODE);
if (IS_ERR(disk)) {
err = PTR_ERR(disk);
goto out_no_disk;
@@ -3967,9 +3972,6 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsig
sprintf(disk->disk_name, "drbd%d", minor);
disk->private_data = device;
- blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, disk->queue);
- blk_queue_write_cache(disk->queue, true, true);
-
device->md_io.page = alloc_page(GFP_KERNEL);
if (!device->md_io.page)
goto out_no_io_page;
--
2.35.3

View File

@ -1,75 +0,0 @@
From 5a09ad97f57eb276dc1e9a84e1c82f11ce1fe1b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 4 Apr 2024 15:53:31 +0200
Subject: [PATCH 1/3] compat: fixup FMODE_READ/FMODE_WRITE usage
Fixes: 4a84d1d0 ("compat: block: replace fmode_t with a block-specific type for block open flags")
---
.../cocci/blk_mode_t__no_present.cocci | 15 +++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 6 +++---
drbd/drbd_nl.c | 2 +-
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci b/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
index 030723c817de..d1312a093ffe 100644
--- a/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/blk_mode_t__no_present.cocci
@@ -17,3 +17,18 @@ identifier mode;
)
...>
}
+
+@@
+@@
+// special case: bdev_open_by_path takes a blk_mode_t, so convert that too. I can't seem to get
+// coccinelle to match the "READ | WRITE" condition generically, so just hard code it.
+// NOTE: we use blkdev_get_by_path instead of bdev_open_by_path in some compat cases, so support that too.
+(
+bdev_open_by_path
+|
+blkdev_get_by_path
+)
+ (...,
+- BLK_OPEN_READ | BLK_OPEN_WRITE
++ FMODE_READ | FMODE_WRITE
+ , ...)
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index b136acf3148a..86a7ce7a93ed 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -565,15 +565,15 @@ int main(int argc, char **argv)
patch(1, "block_device_operations_open", true, false,
COMPAT_BLOCK_DEVICE_OPERATIONS_OPEN_TAKES_GENDISK, "takes_gendisk");
- patch(1, "blkdev_put", true, false,
- COMPAT_BLKDEV_PUT_HAS_HOLDER, "has_holder");
-
patch(1, "block_device_operations_release", true, false,
COMPAT_BLOCK_DEVICE_OPERATIONS_RELEASE_TAKES_SINGLE_ARGUMENT, "takes_single_argument");
patch(1, "blk_mode_t", true, false,
COMPAT_HAVE_BLK_MODE_T, "present");
+ patch(1, "blkdev_put", true, false,
+ COMPAT_BLKDEV_PUT_HAS_HOLDER, "has_holder");
+
patch(1, "genl_info_userhdr", true, false,
COMPAT_HAVE_GENL_INFO_USERHDR, "present");
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index d41ccfcd4bb2..a355f5d5feb1 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -2566,7 +2566,7 @@ static struct block_device *open_backing_dev(struct drbd_device *device,
const char *bdev_path, void *claim_ptr)
{
struct block_device *bdev = blkdev_get_by_path(bdev_path,
- FMODE_READ | FMODE_WRITE,
+ BLK_OPEN_READ | BLK_OPEN_WRITE,
claim_ptr, NULL);
if (IS_ERR(bdev)) {
drbd_err(device, "open(\"%s\") failed with %ld\n",
--
2.44.0

View File

@ -1,191 +0,0 @@
From 3c18af1a3e8d67833e3ea8a2d38408501c9ee6be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 5 Sep 2024 13:05:59 +0200
Subject: [PATCH 24/32] compat: test and patch for queue_limits.features
And fixup compat patches that rely on blk_queue_write_cache being there.
Match to disk->private_data = ... instead.
---
.../blk_queue_make_request__yes_present.cocci | 3 ++-
.../blk_queue_merge_bvec__yes_present.cocci | 21 +++++++++++-----
.../cocci/congested_fn__yes_present.cocci | 3 ++-
.../queue_limits_features__no_present.cocci | 25 +++++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 15 ++++++-----
.../tests/queue_limits_has_features.c | 8 ++++++
6 files changed, 61 insertions(+), 14 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/queue_limits_features__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/queue_limits_has_features.c
diff --git a/drbd/drbd-kernel-compat/cocci/blk_queue_make_request__yes_present.cocci b/drbd/drbd-kernel-compat/cocci/blk_queue_make_request__yes_present.cocci
index 63c65d21cb32..665e10cbaa1a 100644
--- a/drbd/drbd-kernel-compat/cocci/blk_queue_make_request__yes_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/blk_queue_make_request__yes_present.cocci
@@ -5,12 +5,13 @@ identifier make_request_fn;
+ blk_alloc_queue(GFP_KERNEL)
@@
+struct gendisk *disk;
identifier rm_blk_alloc_queue.make_request_fn;
@@
drbd_create_device(...)
{
...
+ disk->private_data = ...;
+ blk_queue_make_request(q, make_request_fn);
- blk_queue_write_cache(...);
...
}
diff --git a/drbd/drbd-kernel-compat/cocci/blk_queue_merge_bvec__yes_present.cocci b/drbd/drbd-kernel-compat/cocci/blk_queue_merge_bvec__yes_present.cocci
index d4c0d85810e8..bedb09f8b375 100644
--- a/drbd/drbd-kernel-compat/cocci/blk_queue_merge_bvec__yes_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/blk_queue_merge_bvec__yes_present.cocci
@@ -1,10 +1,10 @@
-@@
+@ add_drbd_merge_bvec_definition @
identifier ws;
@@
+extern int drbd_merge_bvec(struct request_queue *, struct bvec_merge_data *, struct bio_vec *);
extern void do_submit(struct work_struct *ws);
-@@
+@ add_drbd_merge_bvec @
@@
+/* This is called by bio_add_page().
+ *
@@ -44,9 +44,10 @@ extern void do_submit(struct work_struct *ws);
do_submit(...)
{ ... }
-@@
+@ add_blk_queue_merge_bvec @
symbol true;
identifier q, resource, dev;
+struct gendisk *disk;
@@
drbd_create_device(...)
{
@@ -68,9 +69,17 @@ struct request_queue *q;
// also want to store it in queuedata for the compat.
dev->rq_queue = q;
+ q->queuedata = dev;
-<...
-blk_queue_write_cache(q, true, true);
+...
+disk->private_data = ...;
+ blk_queue_merge_bvec(q, drbd_merge_bvec);
-...>
+...
}
+@ script:python depends on !(add_drbd_merge_bvec_definition && add_drbd_merge_bvec && add_blk_queue_merge_bvec) @
+@@
+import sys
+print('ERROR: A rule making an essential change was not executed! (blk_queue_merge_bvec)', file=sys.stderr)
+print('ERROR: This would not show up as a compiler error, but would still break DRBD.', file=sys.stderr)
+print('ERROR: As a precaution, the build will be aborted here.', file=sys.stderr)
+sys.exit(1)
+
diff --git a/drbd/drbd-kernel-compat/cocci/congested_fn__yes_present.cocci b/drbd/drbd-kernel-compat/cocci/congested_fn__yes_present.cocci
index d0b55c3dffbf..a697311af6bd 100644
--- a/drbd/drbd-kernel-compat/cocci/congested_fn__yes_present.cocci
+++ b/drbd/drbd-kernel-compat/cocci/congested_fn__yes_present.cocci
@@ -63,14 +63,15 @@ drbd_cleanup(...)
@@
identifier dev;
+struct gendisk *disk;
@@
drbd_create_device(...)
{
...
struct drbd_device *dev;
...
+ disk->private_data = ...;
+ q->backing_dev_info->congested_fn = drbd_congested;
+ q->backing_dev_info->congested_data = dev;
- blk_queue_write_cache(...);
...
}
diff --git a/drbd/drbd-kernel-compat/cocci/queue_limits_features__no_present.cocci b/drbd/drbd-kernel-compat/cocci/queue_limits_features__no_present.cocci
new file mode 100644
index 000000000000..b9017351302b
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/queue_limits_features__no_present.cocci
@@ -0,0 +1,25 @@
+// NOTE this actually encompasses three patches:
+// 1122c0c1 block: move cache control settings out of queue->flags
+// bd4a633b block: move the nonrot flag to queue_limits
+// 1a02f3a7 block: move the stable_writes flag to queue_limits
+//
+// They add "BLK_FEAT_WRITE_CACHE | BLK_FEAT_FUA", "BLK_FEAT_ROTATIONAL", and
+// "BLK_FEAT_STABLE_WRITES", respectively.
+// Since these commits are all from the same series, just patch them together.
+@@
+expression e;
+struct gendisk *disk;
+identifier lim;
+@@
+-struct queue_limits lim = {
+- .features = e,
+-};
+...
+blk_alloc_disk(
+- &lim
++ NULL
+ , ...)
+...
+disk->private_data = ...;
++ blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, disk->queue);
++ blk_queue_write_cache(disk->queue, true, true);
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 5abc32725daf..cc3bad2d84e4 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -153,6 +153,9 @@ int main(int argc, char **argv)
patch(1, "blk_cleanup_disk", false, true,
COMPAT_HAVE_BLK_CLEANUP_DISK, "present");
+ patch(1, "queue_limits_features", true, false,
+ COMPAT_QUEUE_LIMITS_HAS_FEATURES, "present");
+
patch(1, "blk_alloc_disk", true, false,
COMPAT_BLK_ALLOC_DISK_TAKES_QUEUE_LIMITS, "takes_queue_limits");
#if !defined(COMPAT_BLK_ALLOC_DISK_TAKES_QUEUE_LIMITS)
@@ -267,13 +270,13 @@ int main(int argc, char **argv)
patch(1, "security_netlink_recv", false, true,
COMPAT_HAVE_SECURITY_NETLINK_RECV, "present");
-#if defined(COMPAT_HAVE_QUEUE_FLAG_STABLE_WRITES)
- /* in versions >=5.9, there is QUEUE_FLAG_STABLE_WRITES */
-#else
- /* for <5.9 but >=3.9, fall back to BDI_CAP_STABLE_WRITES */
+ /*
+ * >= 6.10: BLK_FEAT_STABLE_WRITES
+ * 5.9-6.10: QUEUE_FLAG_STABLE_WRITES
+ * <5.9: BDI_CAP_STABLE_WRITES
+ */
patch(1, "queue_flag_stable_writes", true, false,
- NO, "present");
-#endif
+ COMPAT_HAVE_QUEUE_FLAG_STABLE_WRITES, "present");
patch(1, "queue_flag_discard", false, true,
COMPAT_HAVE_QUEUE_FLAG_DISCARD, "present");
diff --git a/drbd/drbd-kernel-compat/tests/queue_limits_has_features.c b/drbd/drbd-kernel-compat/tests/queue_limits_has_features.c
new file mode 100644
index 000000000000..e566a34bdda6
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/queue_limits_has_features.c
@@ -0,0 +1,8 @@
+/* { "version": "v6.10", "commit": "1122c0c1cc71f740fa4d5f14f239194e06a1d5e7", "comment": "features field was introduced", "author": "Christoph Hellwig <hch@lst.de>", "date": "Mon Jun 17 08:04:40 2024 +0200" } */
+
+#include <linux/blkdev.h>
+
+unsigned int foo(struct queue_limits lim)
+{
+ return lim.features;
+}
--
2.35.3

View File

@ -1,379 +0,0 @@
From 604f31ab14eeca9eddb42028de93bb89f3ae6515 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 4 Apr 2024 16:27:51 +0200
Subject: [PATCH 2/3] compat: drdb: Convert to use bdev_open_by_path()
Equivalent to upstream Linux commit 75e27d373425
("drdb [sic]: Convert to use bdev_open_by_path()"), plus a compat patch.
---
.../cocci/bdev_open_by_path__no_present.cocci | 173 ++++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +
.../tests/have_bdev_open_by_path.c | 8 +
drbd/drbd_int.h | 2 +
drbd/drbd_nl.c | 59 +++---
5 files changed, 216 insertions(+), 29 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/bdev_open_by_path__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c
diff --git a/drbd/drbd-kernel-compat/cocci/bdev_open_by_path__no_present.cocci b/drbd/drbd-kernel-compat/cocci/bdev_open_by_path__no_present.cocci
new file mode 100644
index 000000000000..983f05080f79
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/bdev_open_by_path__no_present.cocci
@@ -0,0 +1,173 @@
+@@
+@@
+struct drbd_backing_dev {
+...
+- struct bdev_handle *backing_bdev_handle;
+...
+- struct bdev_handle *md_bdev_handle;
+...
+}
+
+@@
+identifier handle;
+@@
+static void close_backing_dev(...,
+- struct bdev_handle *handle
++ struct block_device *bdev, void *holder
+ , ...
+ )
+{
+<...
+(
+- handle->bdev
++ bdev
+|
+- bdev_release(handle)
++ blkdev_put(bdev, holder)
+|
+- handle
++ bdev
+)
+...>
+}
+
+@@
+identifier device;
+struct bdev_handle *handle;
+identifier err;
+identifier new_disk_conf;
+@@
+// special case: when linking the meta_dev, we want to pass meta_claim_ptr to close instead of device
+err = link_backing_dev(..., new_disk_conf->meta_dev, ...);
+if (err) {
+ ...
+ close_backing_dev(device,
+- handle
++ bdev, meta_claim_ptr
+ , ...);
+ ...
+}
+
+@@
+identifier ldev;
+struct bdev_handle *handle;
+identifier device;
+@@
+// generic close_backing_dev usage
+close_backing_dev(device,
+(
+- ldev->backing_bdev_handle
++ ldev->backing_bdev, device
+|
+- ldev->md_bdev_handle
++ ldev->md_bdev,
++ ldev->md.meta_dev_idx < 0 ? (void *)device : (void *)drbd_m_holder
+|
+- handle
++ bdev, device
+)
+, ...);
+
+@@
+identifier handle;
+@@
+- struct bdev_handle *
++ struct block_device *
+open_backing_dev(...)
+{
+...
+- struct bdev_handle *handle = bdev_open_by_path(
++ struct block_device *bdev = blkdev_get_by_path(
+...);
+<...
+(
+IS_ERR
+|
+PTR_ERR
+)
+ (
+- handle
++ bdev
+ )
+...>
+return
+- handle
++ bdev
+;
+}
+
+@@
+identifier handle;
+identifier err;
+@@
+static int link_backing_dev(...,
+- struct bdev_handle *handle
++ struct block_device *bdev
+ )
+{
+...
+int err = bd_link_disk_holder(
+- handle->bdev
++ bdev
+ , ...);
+if (err) {
+- bdev_release(handle);
+ ...
+}
+...
+}
+
+@@
+identifier device;
+expression bd;
+identifier handle;
+@@
+// generic link_backing_dev usage
+link_backing_dev(device, bd,
+- handle
++ bdev
+ )
+
+@@
+identifier handle;
+@@
+// generic open_backing_dev usage
+{
+...
+- struct bdev_handle *handle;
++ struct block_device *bdev;
+<...
+(
+- handle
++ bdev
+= open_backing_dev(...);
+|
+IS_ERR(
+- handle
++ bdev
+ )
+)
+...>
+}
+
+@@
+struct drbd_backing_dev *nbc;
+identifier handle;
+@@
+(
+- nbc->backing_bdev = handle->bdev;
+- nbc->backing_bdev_handle = handle;
++ nbc->backing_bdev = bdev;
+|
+- nbc->md_bdev = handle->bdev;
+- nbc->md_bdev_handle = handle;
++ nbc->md_bdev = bdev;
+)
+
+@@
+identifier handle;
+identifier nbc;
+@@
+// only this one comparison exists in the code, just special-case it instead of implementing the generic case
+- handle != nbc->backing_bdev_handle
++ bdev != nbc->backing_bdev
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 86a7ce7a93ed..d6fe75a80cf6 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -559,6 +559,9 @@ int main(int argc, char **argv)
patch(1, "__bio_add_page", true, false,
COMPAT_HAVE___BIO_ADD_PAGE, "present");
+ patch(1, "bdev_open_by_path", true, false,
+ COMPAT_HAVE_BDEV_OPEN_BY_PATH, "present");
+
patch(1, "blkdev_get_by_path", true, false,
COMPAT_BLKDEV_GET_BY_PATH_HAS_HOLDER_OPS, "has_holder_ops");
diff --git a/drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c b/drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c
new file mode 100644
index 000000000000..92266de0b15b
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c
@@ -0,0 +1,8 @@
+/* { "version": "v6.7", "commit": "e719b4d156749f02eafed31a3c515f2aa9dcc72a", "comment": "introduce bdev_open_by_* functions", "author": "Jan Kara <jack@suse.cz>", "date": "Wed Sep 27 11:34:07 2023 +0200" } */
+
+#include <linux/blkdev.h>
+
+struct bdev_handle *foo(const char *path, blk_mode_t mode, void *holder,
+ const struct blk_holder_ops *hops) {
+ return bdev_open_by_path(path, mode, holder, hops);
+}
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
index cf593c09cda1..a41b228cb13b 100644
--- a/drbd/drbd_int.h
+++ b/drbd/drbd_int.h
@@ -700,7 +700,9 @@ struct drbd_md {
struct drbd_backing_dev {
struct block_device *backing_bdev;
+ struct bdev_handle *backing_bdev_handle;
struct block_device *md_bdev;
+ struct bdev_handle *md_bdev_handle;
struct drbd_md md;
struct disk_conf __rcu *disk_conf; /* RCU, for updates: resource->conf_update */
sector_t known_size; /* last known size of that backing device */
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index a355f5d5feb1..6a48287e251e 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -94,7 +94,7 @@ atomic_t drbd_genl_seq = ATOMIC_INIT(2); /* two. */
DEFINE_MUTEX(notification_mutex);
-/* used blkdev_get_by_path, to claim our meta data device(s) */
+/* used bdev_open_by_path, to claim our meta data device(s) */
static char *drbd_m_holder = "Hands off! this is DRBD's meta data device.";
static void drbd_adm_send_reply(struct sk_buff *skb, struct genl_info *info)
@@ -2535,14 +2535,14 @@ bool want_bitmap(struct drbd_peer_device *peer_device)
return want_bitmap;
}
-static void close_backing_dev(struct drbd_device *device, struct block_device *bdev,
- void *holder, bool do_bd_unlink)
+static void close_backing_dev(struct drbd_device *device,
+ struct bdev_handle *handle, bool do_bd_unlink)
{
- if (!bdev)
+ if (!handle)
return;
if (do_bd_unlink)
- bd_unlink_disk_holder(bdev, device->vdisk);
- blkdev_put(bdev, holder);
+ bd_unlink_disk_holder(handle->bdev, device->vdisk);
+ bdev_release(handle);
}
void drbd_backing_dev_free(struct drbd_device *device, struct drbd_backing_dev *ldev)
@@ -2553,33 +2553,33 @@ void drbd_backing_dev_free(struct drbd_device *device, struct drbd_backing_dev *
drbd_dax_close(ldev);
close_backing_dev(device,
- ldev->md_bdev,
- ldev->md.meta_dev_idx < 0 ? (void *)device : (void *)drbd_m_holder,
+ ldev->md_bdev_handle,
ldev->md_bdev != ldev->backing_bdev);
- close_backing_dev(device, ldev->backing_bdev, device, true);
+ close_backing_dev(device, ldev->backing_bdev_handle, true);
kfree(ldev->disk_conf);
kfree(ldev);
}
-static struct block_device *open_backing_dev(struct drbd_device *device,
+static struct bdev_handle *open_backing_dev(struct drbd_device *device,
const char *bdev_path, void *claim_ptr)
{
- struct block_device *bdev = blkdev_get_by_path(bdev_path,
+ struct bdev_handle *handle = bdev_open_by_path(bdev_path,
BLK_OPEN_READ | BLK_OPEN_WRITE,
claim_ptr, NULL);
- if (IS_ERR(bdev)) {
+ if (IS_ERR(handle)) {
drbd_err(device, "open(\"%s\") failed with %ld\n",
- bdev_path, PTR_ERR(bdev));
+ bdev_path, PTR_ERR(handle));
}
- return bdev;
+ return handle;
}
static int link_backing_dev(struct drbd_device *device,
- const char *bdev_path, struct block_device *bdev)
+ const char *bdev_path, struct bdev_handle *handle)
{
- int err = bd_link_disk_holder(bdev, device->vdisk);
+ int err = bd_link_disk_holder(handle->bdev, device->vdisk);
if (err) {
+ bdev_release(handle);
drbd_err(device, "bd_link_disk_holder(\"%s\", ...) failed with %d\n",
bdev_path, err);
}
@@ -2590,22 +2590,22 @@ static int open_backing_devices(struct drbd_device *device,
struct disk_conf *new_disk_conf,
struct drbd_backing_dev *nbc)
{
- struct block_device *bdev;
+ struct bdev_handle *handle;
void *meta_claim_ptr;
int err;
- bdev = open_backing_dev(device, new_disk_conf->backing_dev, device);
- if (IS_ERR(bdev))
+ handle = open_backing_dev(device, new_disk_conf->backing_dev, device);
+ if (IS_ERR(handle))
return ERR_OPEN_DISK;
- err = link_backing_dev(device, new_disk_conf->backing_dev, bdev);
+ err = link_backing_dev(device, new_disk_conf->backing_dev, handle);
if (err) {
/* close without unlinking; otherwise error path will try to unlink */
- close_backing_dev(device, bdev, device, false);
+ close_backing_dev(device, handle, false);
return ERR_OPEN_DISK;
}
-
- nbc->backing_bdev = bdev;
+ nbc->backing_bdev = handle->bdev;
+ nbc->backing_bdev_handle = handle;
/* meta_claim_ptr: device, if claimed exclusively; shared drbd_m_holder,
* if potentially shared with other drbd minors
@@ -2620,22 +2620,23 @@ static int open_backing_devices(struct drbd_device *device,
* should check it for you already; but if you don't, or
* someone fooled it, we need to double check here)
*/
- bdev = open_backing_dev(device, new_disk_conf->meta_dev, meta_claim_ptr);
- if (IS_ERR(bdev))
+ handle = open_backing_dev(device, new_disk_conf->meta_dev, meta_claim_ptr);
+ if (IS_ERR(handle))
return ERR_OPEN_MD_DISK;
/* avoid double bd_claim_by_disk() for the same (source,target) tuple,
* as would happen with internal metadata. */
- if (bdev != nbc->backing_bdev) {
- err = link_backing_dev(device, new_disk_conf->meta_dev, bdev);
+ if (handle != nbc->backing_bdev_handle) {
+ err = link_backing_dev(device, new_disk_conf->meta_dev, handle);
if (err) {
/* close without unlinking; otherwise error path will try to unlink */
- close_backing_dev(device, bdev, meta_claim_ptr, false);
+ close_backing_dev(device, handle, false);
return ERR_OPEN_MD_DISK;
}
}
- nbc->md_bdev = bdev;
+ nbc->md_bdev = handle->bdev;
+ nbc->md_bdev_handle = handle;
return NO_ERROR;
}
--
2.44.0

View File

@ -1,47 +0,0 @@
From 85afbf893a6c7cd55e04407731e52d495b6f228f Mon Sep 17 00:00:00 2001
From: Kees Cook <keescook@chromium.org>
Date: Fri, 15 Sep 2023 13:03:16 -0700
Subject: [PATCH 25/32] drbd: Annotate struct fifo_buffer with __counted_by
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Prepare for the coming implementation by GCC and Clang of the __counted_by
attribute. Flexible array members annotated with __counted_by can have
their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS
(for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family
functions).
As found with Coccinelle[1], add __counted_by for struct fifo_buffer.
[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
Cc: Philipp Reisner <philipp.reisner@linbit.com>
Cc: Lars Ellenberg <lars.ellenberg@linbit.com>
Cc: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: drbd-dev@lists.linbit.com
Cc: linux-block@vger.kernel.org
Reviewed-by: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Link: https://lore.kernel.org/r/20230915200316.never.707-kees@kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
---
drbd/drbd_int.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
index c18407899f59..182593257c6a 100644
--- a/drbd/drbd_int.h
+++ b/drbd/drbd_int.h
@@ -746,7 +746,7 @@ struct fifo_buffer {
unsigned int head_index;
unsigned int size;
int total; /* sum of all values */
- int values[];
+ int values[] __counted_by(size);
};
extern struct fifo_buffer *fifo_alloc(unsigned int fifo_size);
--
2.35.3

View File

@ -1,41 +0,0 @@
From 6088f29b44fed60d1e631383a9b6f280ff42aaa6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 11 Apr 2024 11:59:38 +0200
Subject: [PATCH 3/3] compat: gate blkdev_* patches behind bdev_open_by_path
If we have bdev_open_by_path, there is no need to consider these patches
since they only apply to the (older) blkdev_{get_put}_* functions.
---
drbd/drbd-kernel-compat/gen_patch_names.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index d6fe75a80cf6..8355e723f82c 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -562,8 +562,10 @@ int main(int argc, char **argv)
patch(1, "bdev_open_by_path", true, false,
COMPAT_HAVE_BDEV_OPEN_BY_PATH, "present");
+#if !defined(COMPAT_HAVE_BDEV_OPEN_BY_PATH)
patch(1, "blkdev_get_by_path", true, false,
COMPAT_BLKDEV_GET_BY_PATH_HAS_HOLDER_OPS, "has_holder_ops");
+#endif
patch(1, "block_device_operations_open", true, false,
COMPAT_BLOCK_DEVICE_OPERATIONS_OPEN_TAKES_GENDISK, "takes_gendisk");
@@ -574,8 +576,10 @@ int main(int argc, char **argv)
patch(1, "blk_mode_t", true, false,
COMPAT_HAVE_BLK_MODE_T, "present");
+#if !defined(COMPAT_HAVE_BDEV_OPEN_BY_PATH)
patch(1, "blkdev_put", true, false,
COMPAT_BLKDEV_PUT_HAS_HOLDER, "has_holder");
+#endif
patch(1, "genl_info_userhdr", true, false,
COMPAT_HAVE_GENL_INFO_USERHDR, "present");
--
2.44.0

View File

@ -1,94 +0,0 @@
From 3a1d6d3e2bd0e1506995e316b183cef8abc0034b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Fri, 6 Sep 2024 11:14:43 +0200
Subject: [PATCH 26/32] compat: test and patch for __counted_by
Unfortunately, the "attribute name" variable type only works with very
recent coccinelle versions (>=1.1.1). So add a hint about that in the
README.
---
README.md | 9 ++++-----
.../cocci/counted_by__no_present.cocci | 12 ++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
drbd/drbd-kernel-compat/tests/have_counted_by.c | 8 ++++++++
4 files changed, 27 insertions(+), 5 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/counted_by__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/have_counted_by.c
diff --git a/README.md b/README.md
index ec513d19438e..b63286db0113 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@ Since version 9.0.20, DRBD has been using a kernel backwards compatibility syste
based on [Coccinelle](https://github.com/coccinelle/coccinelle) semantic patches.
While this has many advantages, it also makes it a little harder for "casual"
developers to build DRBD from the git sources. The problem is that we require a
-very recent version of `spatch` (at least 1.0.8 at time of writing), and most
+very recent version of `spatch` (at least 1.1.1 at time of writing), and most
distributions only have relatively old versions in their repositories.
## From git
@@ -48,10 +48,9 @@ For users wishing to build DRBD from its git sources, here are a few options:
chances are you won't even have to use any of the compat features, which
means you won't require compatibility patches and in turn don't need spatch
installed.
-2. On Ubuntu 18.04 and newer, use a recent spatch version from the
- [Coccinelle PPA](https://launchpad.net/~npalix/+archive/ubuntu/coccinelle).
- This provides (at time of writing) version 1.0.8, which is recent enough to
- build DRBD.
+2. Fedora >=39 packages Coccinelle 1.1.1, which is recent enough to build DRBD. **Warning**: while
+ Ubuntu also ships Coccinelle with supposedly the same version number (1.1.1), this version
+ is *not* able to build DRBD.
3. Build and install spatch from source. This will also give you a version that
is recent enough to build DRBD.
diff --git a/drbd/drbd-kernel-compat/cocci/counted_by__no_present.cocci b/drbd/drbd-kernel-compat/cocci/counted_by__no_present.cocci
new file mode 100644
index 000000000000..40db31bece0c
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/counted_by__no_present.cocci
@@ -0,0 +1,12 @@
+@@
+type T;
+identifier s, x;
+attribute name __counted_by;
+@@
+struct s {
+...
+ T x
+- __counted_by(...)
+ ;
+...
+};
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index cc3bad2d84e4..72c1e25512ea 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -605,6 +605,9 @@ int main(int argc, char **argv)
patch(1, "need_recalc_sigpending", false, true,
COMPAT_NEED_RECALC_SIGPENDING, "need");
+ patch(1, "counted_by", true, false,
+ COMPAT_HAVE_COUNTED_BY, "present");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/have_counted_by.c b/drbd/drbd-kernel-compat/tests/have_counted_by.c
new file mode 100644
index 000000000000..07fac32aad16
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_counted_by.c
@@ -0,0 +1,8 @@
+/* { "version": "v6.4", "commit": "dd06e72e68bcb4070ef211be100d2896e236c8fb", "comment": "add __counted_by macro", "author": "Kees Cook <keescook@chromium.org>", "date": "Wed May 17 12:08:44 2023 -0700" } */
+
+#include <linux/compiler_attributes.h>
+
+struct foo {
+ int a;
+ int b[] __counted_by(a);
+};
--
2.35.3

View File

@ -1,100 +0,0 @@
From fa5329fb2c7e089cbe712acecb2c75ba8887754e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Fri, 6 Sep 2024 15:16:49 +0200
Subject: [PATCH 27/32] drbd: fix function cast warnings in state machine
Equivalent to upstream commit fe0b1e9a ("drbd: fix function cast
warnings in state machine").
---
drbd/drbd_state.c | 16 ++++++++++------
drbd/drbd_state_change.h | 8 ++++----
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/drbd/drbd_state.c b/drbd/drbd_state.c
index 44f55ee5c939..100e32ba037f 100644
--- a/drbd/drbd_state.c
+++ b/drbd/drbd_state.c
@@ -3212,10 +3212,11 @@ static union drbd_state state_change_word(struct drbd_state_change *state_change
int notify_resource_state_change(struct sk_buff *skb,
unsigned int seq,
- struct drbd_state_change *state_change,
+ void *state_change,
enum drbd_notification_type type)
{
- struct drbd_resource_state_change *resource_state_change = state_change->resource;
+ struct drbd_resource_state_change *resource_state_change =
+ ((struct drbd_state_change *)state_change)->resource;
struct drbd_resource *resource = resource_state_change->resource;
struct resource_info resource_info = {
.res_role = resource_state_change->role[NEW],
@@ -3232,9 +3233,10 @@ int notify_resource_state_change(struct sk_buff *skb,
int notify_connection_state_change(struct sk_buff *skb,
unsigned int seq,
- struct drbd_connection_state_change *connection_state_change,
+ void *state_change,
enum drbd_notification_type type)
{
+ struct drbd_connection_state_change *connection_state_change = state_change;
struct drbd_connection *connection = connection_state_change->connection;
struct connection_info connection_info = {
.conn_connection_state = connection_state_change->cstate[NEW],
@@ -3246,9 +3248,10 @@ int notify_connection_state_change(struct sk_buff *skb,
int notify_device_state_change(struct sk_buff *skb,
unsigned int seq,
- struct drbd_device_state_change *device_state_change,
+ void *state_change,
enum drbd_notification_type type)
{
+ struct drbd_device_state_change *device_state_change = state_change;
struct drbd_device *device = device_state_change->device;
struct device_info device_info;
device_state_change_to_info(&device_info, device_state_change);
@@ -3258,10 +3261,11 @@ int notify_device_state_change(struct sk_buff *skb,
int notify_peer_device_state_change(struct sk_buff *skb,
unsigned int seq,
- struct drbd_peer_device_state_change *state_change,
+ void *state_change,
enum drbd_notification_type type)
{
- struct drbd_peer_device *peer_device = state_change->peer_device;
+ struct drbd_peer_device_state_change *peer_device_state_change = state_change;
+ struct drbd_peer_device *peer_device = peer_device_state_change->peer_device;
struct peer_device_info peer_device_info;
peer_device_state_change_to_info(&peer_device_info, state_change);
diff --git a/drbd/drbd_state_change.h b/drbd/drbd_state_change.h
index 3dc8616dedd4..40687d40b222 100644
--- a/drbd/drbd_state_change.h
+++ b/drbd/drbd_state_change.h
@@ -69,19 +69,19 @@ extern void forget_state_change(struct drbd_state_change *);
extern int notify_resource_state_change(struct sk_buff *,
unsigned int,
- struct drbd_state_change *,
+ void *,
enum drbd_notification_type type);
extern int notify_connection_state_change(struct sk_buff *,
unsigned int,
- struct drbd_connection_state_change *,
+ void *,
enum drbd_notification_type type);
extern int notify_device_state_change(struct sk_buff *,
unsigned int,
- struct drbd_device_state_change *,
+ void *,
enum drbd_notification_type type);
extern int notify_peer_device_state_change(struct sk_buff *,
unsigned int,
- struct drbd_peer_device_state_change *,
+ void *,
enum drbd_notification_type type);
#endif /* DRBD_STATE_CHANGE_H */
--
2.35.3

View File

@ -1,61 +0,0 @@
From 11e96ecc0575eb0d6d4e29caaffb70d1e299908d Mon Sep 17 00:00:00 2001
From: Simon Horman <horms@kernel.org>
Date: Tue, 23 Jul 2024 10:41:52 +0100
Subject: [PATCH 28/32] Add missing documentation of peer_device parameter to
Kernel doc.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
These parameters were added in commit 8164dd6c8ae1 ("drbd: Add peer
device parameter to whole-bitmap I/O handlers")
Flagged by W=1 builds.
Signed-off-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240723-drbd-doc-v1-1-a04d9b7a9688@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
---
drbd/drbd_main.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 407b0a1d1773..a216b725e66c 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -5356,6 +5356,7 @@ int drbd_bmio_set_all_n_write(struct drbd_device *device,
/**
* drbd_bmio_set_n_write() - io_fn for drbd_queue_bitmap_io() or drbd_bitmap_io()
* @device: DRBD device.
+ * @peer_device: Peer DRBD device.
*
* Sets all bits in the bitmap towards one peer and writes the whole bitmap to stable storage.
*/
@@ -5408,6 +5409,7 @@ int drbd_bmio_set_allocated_n_write(struct drbd_device *device,
/**
* drbd_bmio_clear_all_n_write() - io_fn for drbd_queue_bitmap_io() or drbd_bitmap_io()
* @device: DRBD device.
+ * @peer_device: Peer DRBD device.
*
* Clears all bits in the bitmap and writes the whole bitmap to stable storage.
*/
@@ -5474,6 +5476,7 @@ void drbd_queue_pending_bitmap_work(struct drbd_device *device)
* @io_fn: IO callback to be called when bitmap IO is possible
* @done: callback to be called after the bitmap IO was performed
* @why: Descriptive text of the reason for doing the IO
+ * @peer_device: Peer DRBD device.
*
* While IO on the bitmap happens we freeze application IO thus we ensure
* that drbd_set_out_of_sync() can not be called. This function MAY ONLY be
@@ -5549,6 +5552,7 @@ void drbd_queue_bitmap_io(struct drbd_device *device,
* @device: DRBD device.
* @io_fn: IO callback to be called when bitmap IO is possible
* @why: Descriptive text of the reason for doing the IO
+ * @peer_device: Peer DRBD device.
*
* freezes application IO while that the actual IO operations runs. This
* functions MAY NOT be called from sender context.
--
2.35.3

View File

@ -1,42 +0,0 @@
From 9fe2be655a793d2f9425b96e53a7e1e7feec067e Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge@linbit.com>
Date: Wed, 18 Sep 2024 15:08:55 +0200
Subject: [PATCH 30/32] drbd: kref_put() path when kernel_accept() fails
We need to put the reference that dtt_wait_connect_cond() gets.
This is an unusual situation. The function dtt_wait_connect_cond() only
returns a path when pending_accepts is positive or there is a socket in
the path->sockets list. So if the code reaches the kernel_accept() call,
we expect it to succeed. However, it has been observed to fail, so we
need to handle that case cleanly.
Without the kref_put(), it is impossible to rmmod drbd.
For any error other than -EAGAIN, the error is be passed up and is
logged by conn_connect(). However, when -EAGAIN is returned,
dtt_connect() continues trying to connect and the error from
kernel_accept() leaves no traces in the logs.
---
drbd/drbd_transport_tcp.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drbd/drbd_transport_tcp.c b/drbd/drbd_transport_tcp.c
index df144fcb4522..d59f68d83c58 100644
--- a/drbd/drbd_transport_tcp.c
+++ b/drbd/drbd_transport_tcp.c
@@ -625,8 +625,10 @@ retry:
s_estab = NULL;
err = kernel_accept(listener->s_listen, &s_estab, O_NONBLOCK);
- if (err < 0)
+ if (err < 0) {
+ kref_put(&path->path.kref, drbd_destroy_path);
return err;
+ }
/* The established socket inherits the sk_state_change callback
from the listening socket. */
--
2.35.3

View File

@ -1,29 +0,0 @@
From 903779df9a65ac04814afb1530423914bdfe305c Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg@linbit.com>
Date: Sun, 6 Oct 2024 01:14:19 +0200
Subject: [PATCH 31/32] build: fix typo in Makefile.spatch
The variable name should be cached_compat_h, compat_h does not exist.
Noticed when built with `make -j`:
Because of the empty prerequisites, sometimes make would try to build
kernelrelease.txt before the directory was created.
---
drbd/Makefile.spatch | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drbd/Makefile.spatch b/drbd/Makefile.spatch
index bbcf10dc0603..a5cc774c18b5 100644
--- a/drbd/Makefile.spatch
+++ b/drbd/Makefile.spatch
@@ -42,7 +42,7 @@ cached_compat_patch := $(cache_dir)/compat.patch
# Remember which kernel releases this supposedly works for.
# If KERNELRELEASE is not known, will add an empty line (at most once).
-$(cache_dir)/kernelrelease.txt: $(compat_h) FORCE
+$(cache_dir)/kernelrelease.txt: $(cached_compat_h) FORCE
$(Q)set -e; \
grep -sqxFe "$(KERNELRELEASE)" $@ < /dev/null || \
echo $(KERNELRELEASE) >> $@;
--
2.35.3

View File

@ -1,90 +0,0 @@
From 13ada1be201eb14ff8295a17194de8db5cdccd7f Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg@linbit.com>
Date: Wed, 2 Oct 2024 14:34:02 +0200
Subject: [PATCH 32/32] drbd: open: do not delay open() if already Primary
Since 48376549f (drbd: When a remote state change is active to not touch the open_counts, 2017-10-30)
if a remote state change is pending when someone tries to open() a DRBD volume,
we wait, interruptible, for "auto-promote-timeout",
until that state change is finalized (committed or aborted),
or give up with EAGAIN if the auto-promote timeout is reached.
auto-promote-timeout by default is much smaller than twopc-timeout,
so we may get spurious open() failures.
This could be mitigated with auto-promote-timeout > twopc-timeout.
But we can just ignore the pending state change,
if changing the open_cnt won't make a difference:
if we are already Primary, or we already have openers anyways.
If
- we have some remote state change pending,
- and we are not Primary already,
- and we do not have any openers, or this is an open with write intent,
we reject NDELAY openers immediately.
Normal openers wait for the state change to be finalized
(or give up after auto-promote-timeout).
We do not need to wait if:
- there is no remote state change pending,
- or we are already Primary anyways,
- or we are Secondary, this is a read-only open, and we have openers already.
Note: we may still want to immediately reject NDELAY open if
there is a remote state change pending, even if we have an
open count != 0. These are typically short lived openers
triggered via udev. If they overlap (new open comes in
before previous close), these may still accumulate enough
time to mess with state changes.
For now, I decide to allow them.
---
drbd/drbd_main.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index a216b725e66c..258be3b9c10d 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -2583,10 +2583,21 @@ enum ioc_rv {
IOC_ABORT = 2,
};
+/* If we are in the middle of a cluster wide state change, we don't want
+ * to change (open_cnt == 0), as that then could cause a failure to commit
+ * some already promised peer auto-promote locally.
+ * So we wait until the pending remote_state_change is finalized,
+ * or give up when the timeout is reached.
+ *
+ * But we don't want to fail an open on a Primary just because it happens
+ * during some unrelated remote state change.
+ * If we are already Primary, or already have an open count != 0,
+ * we don't need to wait, it won't change anything.
+ */
static enum ioc_rv inc_open_count(struct drbd_device *device, blk_mode_t mode)
{
struct drbd_resource *resource = device->resource;
- enum ioc_rv r = mode & BLK_OPEN_NDELAY ? IOC_ABORT : IOC_SLEEP;
+ enum ioc_rv r;
if (test_bit(DOWN_IN_PROGRESS, &resource->flags))
return IOC_ABORT;
@@ -2594,7 +2605,14 @@ static enum ioc_rv inc_open_count(struct drbd_device *device, blk_mode_t mode)
read_lock_irq(&resource->state_rwlock);
if (test_bit(UNREGISTERED, &device->flags))
r = IOC_ABORT;
- else if (!resource->remote_state_change) {
+ else if (resource->remote_state_change &&
+ resource->role[NOW] != R_PRIMARY &&
+ (device->open_cnt == 0 || mode & BLK_OPEN_WRITE)) {
+ if (mode & BLK_OPEN_NDELAY)
+ r = IOC_ABORT;
+ else
+ r = IOC_SLEEP;
+ } else {
r = IOC_OK;
device->open_cnt++;
if (mode & BLK_OPEN_WRITE)
--
2.35.3

View File

@ -1,59 +0,0 @@
diff -Nupr a/drbd/drbd_nl.c b/drbd/drbd_nl.c
--- a/drbd/drbd_nl.c 2024-08-12 15:03:18.458476462 +0800
+++ b/drbd/drbd_nl.c 2024-08-12 15:05:08.415670056 +0800
@@ -2017,6 +2017,55 @@ static void fixup_discard_support(struct
}
}
+/**
+ * blk_queue_max_hw_sectors - set max sectors for a request for this queue
+ * @q: the request queue for the device
+ * @max_hw_sectors: max hardware sectors in the usual 512b unit
+ *
+ * Description:
+ * Enables a low level driver to set a hard upper limit,
+ * max_hw_sectors, on the size of requests. max_hw_sectors is set by
+ * the device driver based upon the capabilities of the I/O
+ * controller.
+ *
+ * max_dev_sectors is a hard limit imposed by the storage device for
+ * READ/WRITE requests. It is set by the disk driver.
+ *
+ * max_sectors is a soft limit imposed by the block layer for
+ * filesystem type requests. This value can be overridden on a
+ * per-device basis in /sys/block/<device>/queue/max_sectors_kb.
+ * The soft limit can not exceed max_hw_sectors.
+ **/
+static void blk_queue_max_hw_sectors(struct request_queue *q, unsigned int max_hw_sectors)
+{
+ struct queue_limits *limits = &q->limits;
+ unsigned int max_sectors;
+
+ if ((max_hw_sectors << 9) < PAGE_SIZE) {
+ max_hw_sectors = 1 << (PAGE_SHIFT - 9);
+ pr_info("%s: set to minimum %u\n", __func__, max_hw_sectors);
+ }
+
+ max_hw_sectors = round_down(max_hw_sectors,
+ limits->logical_block_size >> SECTOR_SHIFT);
+ limits->max_hw_sectors = max_hw_sectors;
+
+ max_sectors = min_not_zero(max_hw_sectors, limits->max_dev_sectors);
+
+ if (limits->max_user_sectors)
+ max_sectors = min(max_sectors, limits->max_user_sectors);
+ else
+ max_sectors = min(max_sectors, BLK_DEF_MAX_SECTORS_CAP);
+
+ max_sectors = round_down(max_sectors,
+ limits->logical_block_size >> SECTOR_SHIFT);
+ limits->max_sectors = max_sectors;
+
+ if (!q->disk)
+ return;
+ q->disk->bdi->io_pages = max_sectors >> (PAGE_SHIFT - 9);
+}
+
void drbd_reconsider_queue_parameters(struct drbd_device *device, struct drbd_backing_dev *bdev)
{
struct request_queue * const q = device->rq_queue;

View File

@ -1,35 +0,0 @@
From f6078aa51ed5b776eb2f646553872d576c404c60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Tue, 13 Aug 2024 12:40:27 +0200
Subject: [PATCH] compat: fix nla_nest_start_noflag test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GCC complains:
returning struct nlattr * from a function with return type int makes
integer from pointer without a cast
Return the proper type from this function.
---
drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c b/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c
index 1d8037c397c5..62ab06c563b7 100644
--- a/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c
+++ b/drbd/drbd-kernel-compat/tests/have_nla_nest_start_noflag.c
@@ -1,7 +1,7 @@
/* {"version": "5.1-rc7", "commit": "ae0be8de9a53cda3505865c11826d8ff0640237c", "comment": "nla_nest_start was renamed to _noflag, and the original version became a wrapper adding a flag", "author": "Michal Kubecek <mkubecek@suse.cz>", "date": "Fri Apr 26 11:13:06 2019 +0200"} */
#include <net/netlink.h>
-int dummy(struct sk_buff *skb, int attrtype)
+static struct nlattr *dummy(struct sk_buff *skb, int attrtype)
{
return nla_nest_start_noflag(skb, attrtype);
}
--
2.35.3

View File

@ -1,180 +0,0 @@
From cfa95bfaefdc2c4e91806fdeb810901015a42a36 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
<christoph.boehmwalder@linbit.com>
Date: Thu, 27 Jun 2024 11:19:33 +0200
Subject: [PATCH] drbd: port block device access to file
Equivalent to upstream kernel commit 20e6a8d0dcdc
("drbd: port block device access to file").
---
by heming.zhao@suse.com
change this patch (ignore commit cdd3b8aa03f1a)
from:
```
/* avoid double bd_claim_by_disk() for the same (source,target) tuple,
* as would happen with internal metadata. */
- if (handle->bdev != nbc->backing_bdev) {
- err = link_backing_dev(device, new_disk_conf->meta_dev, handle);
```
to:
```
/* avoid double bd_claim_by_disk() for the same (source,target) tuple,
* as would happen with internal metadata. */
- if (handle != nbc->backing_bdev_handle) {
- err = link_backing_dev(device, new_disk_conf->meta_dev, handle);
```
---
drbd/drbd_int.h | 4 ++--
drbd/drbd_nl.c | 56 ++++++++++++++++++++++++-------------------------
2 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/drbd/drbd_int.h b/drbd/drbd_int.h
index ae7b45b2f8df..0ebd79091af6 100644
--- a/drbd/drbd_int.h
+++ b/drbd/drbd_int.h
@@ -704,9 +704,9 @@ struct drbd_md {
struct drbd_backing_dev {
struct block_device *backing_bdev;
- struct bdev_handle *backing_bdev_handle;
+ struct file *backing_bdev_file;
struct block_device *md_bdev;
- struct bdev_handle *md_bdev_handle;
+ struct file *f_md_bdev;
struct drbd_md md;
struct disk_conf __rcu *disk_conf; /* RCU, for updates: resource->conf_update */
sector_t known_size; /* last known size of that backing device */
diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c
index 298db40b22ea..b732fa6f9d60 100644
--- a/drbd/drbd_nl.c
+++ b/drbd/drbd_nl.c
@@ -2710,13 +2710,13 @@ bool want_bitmap(struct drbd_peer_device *peer_device)
}
static void close_backing_dev(struct drbd_device *device,
- struct bdev_handle *handle, bool do_bd_unlink)
+ struct file *bdev_file, bool do_bd_unlink)
{
- if (!handle)
+ if (!bdev_file)
return;
if (do_bd_unlink)
- bd_unlink_disk_holder(handle->bdev, device->vdisk);
- bdev_release(handle);
+ bd_unlink_disk_holder(file_bdev(bdev_file), device->vdisk);
+ fput(bdev_file);
}
void drbd_backing_dev_free(struct drbd_device *device, struct drbd_backing_dev *ldev)
@@ -2727,33 +2727,33 @@ void drbd_backing_dev_free(struct drbd_device *device, struct drbd_backing_dev *
drbd_dax_close(ldev);
close_backing_dev(device,
- ldev->md_bdev_handle,
+ ldev->f_md_bdev,
ldev->md_bdev != ldev->backing_bdev);
- close_backing_dev(device, ldev->backing_bdev_handle, true);
+ close_backing_dev(device, ldev->backing_bdev_file, true);
kfree(ldev->disk_conf);
kfree(ldev);
}
-static struct bdev_handle *open_backing_dev(struct drbd_device *device,
+static struct file *open_backing_dev(struct drbd_device *device,
const char *bdev_path, void *claim_ptr)
{
- struct bdev_handle *handle = bdev_open_by_path(bdev_path,
+ struct file *file = bdev_file_open_by_path(bdev_path,
BLK_OPEN_READ | BLK_OPEN_WRITE,
claim_ptr, NULL);
- if (IS_ERR(handle)) {
+ if (IS_ERR(file)) {
drbd_err(device, "open(\"%s\") failed with %ld\n",
- bdev_path, PTR_ERR(handle));
+ bdev_path, PTR_ERR(file));
}
- return handle;
+ return file;
}
static int link_backing_dev(struct drbd_device *device,
- const char *bdev_path, struct bdev_handle *handle)
+ const char *bdev_path, struct file *file)
{
- int err = bd_link_disk_holder(handle->bdev, device->vdisk);
+ int err = bd_link_disk_holder(file_bdev(file), device->vdisk);
if (err) {
- bdev_release(handle);
+ fput(file);
drbd_err(device, "bd_link_disk_holder(\"%s\", ...) failed with %d\n",
bdev_path, err);
}
@@ -2764,22 +2764,22 @@ static int open_backing_devices(struct drbd_device *device,
struct disk_conf *new_disk_conf,
struct drbd_backing_dev *nbc)
{
- struct bdev_handle *handle;
+ struct file *file;
void *meta_claim_ptr;
int err;
- handle = open_backing_dev(device, new_disk_conf->backing_dev, device);
- if (IS_ERR(handle))
+ file = open_backing_dev(device, new_disk_conf->backing_dev, device);
+ if (IS_ERR(file))
return ERR_OPEN_DISK;
- err = link_backing_dev(device, new_disk_conf->backing_dev, handle);
+ err = link_backing_dev(device, new_disk_conf->backing_dev, file);
if (err) {
/* close without unlinking; otherwise error path will try to unlink */
- close_backing_dev(device, handle, false);
+ close_backing_dev(device, file, false);
return ERR_OPEN_DISK;
}
- nbc->backing_bdev = handle->bdev;
- nbc->backing_bdev_handle = handle;
+ nbc->backing_bdev = file_bdev(file);
+ nbc->backing_bdev_file = file;
/* meta_claim_ptr: device, if claimed exclusively; shared drbd_m_holder,
* if potentially shared with other drbd minors
@@ -2794,23 +2794,23 @@ static int open_backing_devices(struct drbd_device *device,
* should check it for you already; but if you don't, or
* someone fooled it, we need to double check here)
*/
- handle = open_backing_dev(device, new_disk_conf->meta_dev, meta_claim_ptr);
- if (IS_ERR(handle))
+ file = open_backing_dev(device, new_disk_conf->meta_dev, meta_claim_ptr);
+ if (IS_ERR(file))
return ERR_OPEN_MD_DISK;
/* avoid double bd_claim_by_disk() for the same (source,target) tuple,
* as would happen with internal metadata. */
- if (handle != nbc->backing_bdev_handle) {
- err = link_backing_dev(device, new_disk_conf->meta_dev, handle);
+ if (file_bdev(file) != nbc->backing_bdev) {
+ err = link_backing_dev(device, new_disk_conf->meta_dev, file);
if (err) {
/* close without unlinking; otherwise error path will try to unlink */
- close_backing_dev(device, handle, false);
+ close_backing_dev(device, file, false);
return ERR_OPEN_MD_DISK;
}
}
- nbc->md_bdev = handle->bdev;
- nbc->md_bdev_handle = handle;
+ nbc->md_bdev = file_bdev(file);
+ nbc->f_md_bdev = file;
return NO_ERROR;
}
--
2.35.3

View File

@ -1,92 +0,0 @@
Oct 11, 2024. by heming.zhao@suse.com
This patch includes the following 4 changes for passing the build on v6.11.0.
-------------
for 'queue_flag_stable_writes__no_present', modifying
drbd-kernel-compat/cocci/queue_flag_stable_writes__no_present.cocci
upstream kernel:
commit 1a02f3a73f8c670eddeb44bf52a75ae7f67cfc11
Author: Christoph Hellwig <hch@lst.de>
Date: Mon Jun 17 08:04:44 2024 +0200
block: move the stable_writes flag to queue_limits
-------------
for 'disk_update_readahead__no_present', modifying
drbd-kernel-compat/cocci/disk_update_readahead__no_present.cocci
upstream kernel:
commit 73781b3b81e76583708a652c853d54d03dce031d
Author: Christoph Hellwig <hch@lst.de>
Date: Wed Jun 26 16:26:27 2024 +0200
block: remove disk_update_readahead
--------------
for 'blk_queue_update_readahead__no_present', modifying
'drbd-kernel-compat/gen_patch_names.c', which bypasses the
testing of COMPAT_HAVE_BLK_QUEUE_UPDATE_READAHEAD.
---------------
for 'blk_queue_write_cache__no_present__yes_flush', modifying
drbd-kernel-compat/tests/have_blk_queue_write_cache.c
upstream kernel:
commit 62e35f942231e372f8e465d8484de66a60221226
Author: Christoph Hellwig <hch@lst.de>
Date: Thu Jun 27 13:14:03 2024 +0200
block: pass a gendisk to the queue_sysfs_entry methods
---------------
diff -Nupr a/drbd/drbd-kernel-compat/cocci/disk_update_readahead__no_present.cocci b/drbd/drbd-kernel-compat/cocci/disk_update_readahead__no_present.cocci
--- a/drbd/drbd-kernel-compat/cocci/disk_update_readahead__no_present.cocci 2024-10-11 09:23:43.340688884 +0800
+++ b/drbd/drbd-kernel-compat/cocci/disk_update_readahead__no_present.cocci 2024-10-11 09:27:53.755206413 +0800
@@ -6,5 +6,5 @@ type T;
T q = dev->rq_queue;
<...
- disk_update_readahead(dev->vdisk);
-+ blk_queue_update_readahead(q);
++ blk_apply_bdi_limits(dev->vdisk->bdi, &dev->vdisk->queue->limits);
...>
diff -Nupr a/drbd/drbd-kernel-compat/cocci/queue_flag_stable_writes__no_present.cocci b/drbd/drbd-kernel-compat/cocci/queue_flag_stable_writes__no_present.cocci
--- a/drbd/drbd-kernel-compat/cocci/queue_flag_stable_writes__no_present.cocci 2024-10-11 09:23:25.420604140 +0800
+++ b/drbd/drbd-kernel-compat/cocci/queue_flag_stable_writes__no_present.cocci 2024-10-11 09:28:33.265393250 +0800
@@ -2,4 +2,4 @@
expression q;
@@
- blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, q);
-+ q->backing_dev_info->capabilities |= BDI_CAP_STABLE_WRITES;
++ q->limits.features |= BLK_FEAT_STABLE_WRITES;
diff -Nupr a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
--- a/drbd/drbd-kernel-compat/gen_patch_names.c 2024-10-11 09:24:54.021023132 +0800
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c 2024-10-11 09:26:48.508231197 +0800
@@ -405,6 +405,7 @@ int main(int argc, char **argv)
patch(1, "disk_update_readahead", true, false,
COMPAT_HAVE_DISK_UPDATE_READAHEAD, "present");
+#if 0
#if !defined(COMPAT_HAVE_DISK_UPDATE_READAHEAD)
/* disk_update_readahead is the "new version" of
* blk_queue_update_readahead. we only need to consider compat
@@ -412,6 +413,7 @@ int main(int argc, char **argv)
patch(1, "blk_queue_update_readahead", true, false,
COMPAT_HAVE_BLK_QUEUE_UPDATE_READAHEAD, "present");
#endif
+#endif
patch(1, "struct_gendisk", true, false,
COMPAT_STRUCT_GENDISK_HAS_BACKING_DEV_INFO, "has_backing_dev_info");
diff -Nupr a/drbd/drbd-kernel-compat/tests/have_blk_queue_write_cache.c b/drbd/drbd-kernel-compat/tests/have_blk_queue_write_cache.c
--- a/drbd/drbd-kernel-compat/tests/have_blk_queue_write_cache.c 2024-10-11 09:25:57.557990258 +0800
+++ b/drbd/drbd-kernel-compat/tests/have_blk_queue_write_cache.c 2024-10-11 09:27:17.571701979 +0800
@@ -2,5 +2,5 @@
void dummy(struct request_queue *q, bool enabled, bool fua)
{
- blk_queue_write_cache(q, enabled, fua);
+ blk_queue_write_cache(q);
}

View File

@ -1,37 +0,0 @@
From 80673af5c0cebaeedc1260248466cfd8b268aa0c Mon Sep 17 00:00:00 2001
From: Su Yue <glass.su@suse.com>
Date: Tue, 12 Nov 2024 10:14:17 +0800
Subject: [PATCH] boo1233222_fix_drbd_build_error_against_kernel_v6.11.6
This patch fixes build error due to kernel ABI change introduced
in v6.11.6 by
commit 56440d7ec28d60f8da3bfa09062b3368ff9b16db
Author: Eric Dumazet <edumazet@google.com>
Date: Fri Oct 11 17:12:17 2024 +0000
genetlink: hold RCU in genlmsg_mcast()
After the commit, genlmsg_multicast_allns is called without parameter flags.
Signed-off-by: Su Yue <glass.su@suse.com>
---
.../genl_magic_func-genl_register_family_with_ops_groups.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drbd/drbd-headers/linux/genl_magic_func-genl_register_family_with_ops_groups.h b/drbd/drbd-headers/linux/genl_magic_func-genl_register_family_with_ops_groups.h
index b7adc480247e..733cbc788f7f 100644
--- a/drbd/drbd-headers/linux/genl_magic_func-genl_register_family_with_ops_groups.h
+++ b/drbd/drbd-headers/linux/genl_magic_func-genl_register_family_with_ops_groups.h
@@ -19,7 +19,7 @@ static int CONCAT_(GENL_MAGIC_FAMILY, _genl_multicast_ ## group)( \
unsigned int group_id = \
CONCAT_(GENL_MAGIC_FAMILY, _group_ ## group); \
return genlmsg_multicast_allns(&ZZZ_genl_family, skb, 0, \
- group_id, flags); \
+ group_id); \
}
#include GENL_MAGIC_INCLUDE_FILE
--
2.47.0

View File

@ -1,78 +0,0 @@
By heming.zhao@suse.com
This patch was updated/changed after boo#1230635
----
diff -Nupr a/drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c b/drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c
--- a/drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c 2024-06-19 15:02:47.050694378 +0800
+++ b/drbd/drbd-kernel-compat/tests/have_bdev_open_by_path.c 2024-06-19 15:11:39.313298178 +0800
@@ -2,7 +2,7 @@
#include <linux/blkdev.h>
-struct bdev_handle *foo(const char *path, blk_mode_t mode, void *holder,
- const struct blk_holder_ops *hops) {
- return bdev_open_by_path(path, mode, holder, hops);
+void foo(void)
+{
+ return;
}
diff -Nupr a/drbd/drbd-kernel-compat/tests/have_blk_alloc_disk.c b/drbd/drbd-kernel-compat/tests/have_blk_alloc_disk.c
--- a/drbd/drbd-kernel-compat/tests/have_blk_alloc_disk.c 2024-06-19 11:35:39.957400039 +0800
+++ b/drbd/drbd-kernel-compat/tests/have_blk_alloc_disk.c 2024-06-19 11:36:43.594396686 +0800
@@ -2,7 +2,17 @@
#include <linux/blkdev.h>
+#define DRBD_MAX_BIO_SIZE_SAFE (1U << 12) /* Works always = 4k */
+
struct gendisk *foo(int node)
{
- return blk_alloc_disk(node);
+ struct queue_limits lim = {
+ /*
+ * Setting the max_hw_sectors to an odd value of 8kibyte here.
+ * This triggers a max_bio_size message upon first attach or
+ * connect.
+ */
+ .max_hw_sectors = DRBD_MAX_BIO_SIZE_SAFE >> 8,
+ };
+ return blk_alloc_disk(&lim, node);
}
diff -Nupr a/drbd/drbd_main.c b/drbd/drbd_main.c
--- a/drbd/drbd_main.c 2024-06-19 11:41:59.409367593 +0800
+++ b/drbd/drbd_main.c 2024-06-19 11:41:40.052600574 +0800
@@ -3752,6 +3752,7 @@ static int init_submitter(struct drbd_de
return 0;
}
+#define DRBD_MAX_BIO_SIZE_SAFE (1U << 12) /* Works always = 4k */
enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsigned int minor,
struct device_conf *device_conf, struct drbd_device **p_device)
{
@@ -3767,6 +3768,15 @@ enum drbd_ret_code drbd_create_device(st
enum drbd_ret_code err = ERR_NOMEM;
bool locked = false;
+ struct queue_limits lim = {
+ /*
+ * Setting the max_hw_sectors to an odd value of 8kibyte here.
+ * This triggers a max_bio_size message upon first attach or
+ * connect.
+ */
+ .max_hw_sectors = DRBD_MAX_BIO_SIZE_SAFE >> 8,
+ };
+
lockdep_assert_held(&resource->conf_update);
device = minor_to_device(minor);
@@ -3824,7 +3834,7 @@ enum drbd_ret_code drbd_create_device(st
init_rwsem(&device->uuid_sem);
- disk = blk_alloc_disk(NUMA_NO_NODE);
+ disk = blk_alloc_disk(&lim, NUMA_NO_NODE);
if (!disk)
goto out_no_disk;

BIN
drbd-9.1.16.tar.gz (Stored with Git LFS)

Binary file not shown.

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4a0af3560d6d133f8062d4284dd6a2be8614388bbacd140a0978232fd163c533
size 1427992