From: "Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: "Philipp Reisner" <philipp.reisner@linbit.com>,
"Lars Ellenberg" <lars@linbit.com>,
drbd-dev@lists.linux.dev, linux-block@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>
Subject: [PATCH v2 00/20] drbd: DRBD 9 rework
Date: Tue, 6 Oct 2026 17:45:47 +0200 [thread overview]
Message-ID: <20261006154607.3936501-1-christoph.boehmwalder@linbit.com> (raw)
As discussed (context: [0]), here is our DRBD 9 rework series, intended
for linux-next via for-7.x/drbd.
This replays about 10-15 years of active out-of-tree development work
[1], depending on your way of counting. The out-of-tree module has
severely diverged from the in-tree version over the years, which is
what we are aiming to fix now.
Hopefully that somewhat excuses (or at least explains) the massive
diffs -- we've tried to come up with a way to group the changes by
topic, but I realize it's still not exactly trivial to review.
We've been polishing this series for a while now, and we have taken
great care to make it as "upstream-presentable" as possible. That said,
there are still probably imperfections. It's a start -- feedback
welcome!
The netlink interface has been reworked so that userspace is not
broken: the existing "drbd" generic netlink family keeps being served
at version 1, and this series does not touch its generated
serialization or its UAPI header.
Every shipped drbd-utils release therefore keeps working against this
driver. DRBD 9's own utilities speak a new family, "drbd2", written as
a YNL specification under Documentation/netlink/specs/ and following
current genetlink conventions; its generated code is checked in as
usual. The driver registers both families and translates each onto the
same wire-neutral core, so the multi-peer administration model is only
reachable through drbd2, while version-1 clients see the single-peer
semantics they expect.
The RDMA and load-balancing TCP (lb-tcp) transports are not part of
this series; they will be submitted separately once they have had the
same treatment. The rdma_ctrl_rcvbuf_size
and rdma_ctrl_sndbuf_size net options do remain in the UAPI: they are
generic transport options that are interpreted by whichever transport is
in use, so there is no reason to remove and later re-add them.
The base for these patches is for-7.4/block, plus a set of preparation
patches that were sent earlier but have not yet been applied [2].
As discussed, the goal is to get this applied to a for-7.x/drbd branch
so it can land in linux-next via block-next. After letting it mature
in linux-next for a while, it should go in via the block tree.
Thanks,
Christoph
[0] https://lore.kernel.org/linux-next/899e0337-9642-4ca6-9050-aeab14fa22ef@kernel.dk/
[1] https://github.com/LINBIT/drbd
[2] https://lore.kernel.org/linux-block/20260923140608.1116713-1-christoph.boehmwalder@linbit.com/
Changes since v1:
- New modern YNL-based drbd2 netlink family
- Compat layer that serves the old drbd v1 netlink family for userspace
backward compatibility
- Dropped rdma and lb-tcp transports to reduce the diff size, these will
be sent later
- Incoroporated review feedback from the previous series
- Many checkpatch/style fixes
Christoph Böhmwalder (20):
drbd: mark as BROKEN during DRBD 9 rework
drbd: extend wire protocol definitions for DRBD 9
drbd: introduce DRBD 9 on-disk metadata format
drbd: add transport layer abstraction
drbd: add TCP transport implementation
drbd: add DAX/PMEM support for metadata access
drbd: add optional compatibility layer for DRBD 8.4
drbd: add application/resync IO synchronization documentation
drbd: rework sender for DRBD 9 multi-peer
drbd: replace per-device state model with multi-peer data structures
drbd: rewrite state machine for DRBD 9 multi-peer clusters
drbd: rework activity log and bitmap for multi-peer replication
drbd: rework request processing for DRBD 9 multi-peer IO
drbd: rework module core for DRBD 9 transport and multi-peer
drbd: rework receiver for DRBD 9 transport and multi-peer protocol
drbd: rework the netlink core for DRBD 9
drbd: serve the "drbd" genl family at version 1 for existing userspace
drbd: add the "drbd2" genl family
drbd: update monitoring interfaces for multi-peer topology
drbd: remove BROKEN for DRBD
.../application-resync-synchronization.rst | 208 +
.../admin-guide/blockdev/drbd/index.rst | 1 +
Documentation/netlink/specs/drbd2.yaml | 2476 +++
drivers/block/drbd/Kconfig | 43 +
drivers/block/drbd/Makefile | 9 +-
drivers/block/drbd/drbd2_nl_gen.c | 748 +
drivers/block/drbd/drbd2_nl_gen.h | 107 +
drivers/block/drbd/drbd_actlog.c | 1267 +-
drivers/block/drbd/drbd_bitmap.c | 1989 +-
drivers/block/drbd/drbd_config.h | 44 +-
drivers/block/drbd/drbd_dax_pmem.c | 172 +
drivers/block/drbd/drbd_dax_pmem.h | 43 +
drivers/block/drbd/drbd_debugfs.c | 1721 +-
drivers/block/drbd/drbd_debugfs.h | 2 +
drivers/block/drbd/drbd_int.h | 3748 ++--
drivers/block/drbd/drbd_interval.c | 37 +-
drivers/block/drbd/drbd_interval.h | 125 +-
drivers/block/drbd/drbd_legacy_84.c | 641 +
drivers/block/drbd/drbd_legacy_84.h | 129 +
drivers/block/drbd/drbd_main.c | 6680 +++++--
drivers/block/drbd/drbd_meta_data.h | 154 +
drivers/block/drbd/drbd_nl.c | 9477 ++++++---
drivers/block/drbd/drbd_nl.h | 390 +
drivers/block/drbd/drbd_nl_84.c | 3622 ++++
drivers/block/drbd/drbd_nl_defaults.c | 167 +
drivers/block/drbd/drbd_nl_drbd2.c | 2533 +++
drivers/block/drbd/drbd_nl_types.h | 388 +
drivers/block/drbd/drbd_polymorph_printk.h | 37 +-
drivers/block/drbd/drbd_proc.c | 327 +-
drivers/block/drbd/drbd_protocol.h | 614 +-
drivers/block/drbd/drbd_receiver.c | 16314 ++++++++++++----
drivers/block/drbd/drbd_req.c | 3172 ++-
drivers/block/drbd/drbd_req.h | 332 +-
drivers/block/drbd/drbd_sender.c | 4354 +++--
drivers/block/drbd/drbd_state.c | 8963 +++++++--
drivers/block/drbd/drbd_state.h | 326 +-
drivers/block/drbd/drbd_state_change.h | 80 +-
drivers/block/drbd/drbd_strings.c | 103 +-
drivers/block/drbd/drbd_strings.h | 4 +-
drivers/block/drbd/drbd_transport.c | 545 +
drivers/block/drbd/drbd_transport.h | 480 +
drivers/block/drbd/drbd_transport_tcp.c | 1746 ++
drivers/block/drbd/drbd_transport_template.c | 164 +
include/uapi/linux/drbd.h | 299 +-
include/uapi/linux/drbd2.h | 1012 +
include/uapi/linux/drbd_limits.h | 135 +-
46 files changed, 58914 insertions(+), 17014 deletions(-)
create mode 100644 Documentation/admin-guide/blockdev/drbd/application-resync-synchronization.rst
create mode 100644 Documentation/netlink/specs/drbd2.yaml
create mode 100644 drivers/block/drbd/drbd2_nl_gen.c
create mode 100644 drivers/block/drbd/drbd2_nl_gen.h
create mode 100644 drivers/block/drbd/drbd_dax_pmem.c
create mode 100644 drivers/block/drbd/drbd_dax_pmem.h
create mode 100644 drivers/block/drbd/drbd_legacy_84.c
create mode 100644 drivers/block/drbd/drbd_legacy_84.h
create mode 100644 drivers/block/drbd/drbd_meta_data.h
create mode 100644 drivers/block/drbd/drbd_nl.h
create mode 100644 drivers/block/drbd/drbd_nl_84.c
create mode 100644 drivers/block/drbd/drbd_nl_defaults.c
create mode 100644 drivers/block/drbd/drbd_nl_drbd2.c
create mode 100644 drivers/block/drbd/drbd_nl_types.h
create mode 100644 drivers/block/drbd/drbd_transport.c
create mode 100644 drivers/block/drbd/drbd_transport.h
create mode 100644 drivers/block/drbd/drbd_transport_tcp.c
create mode 100644 drivers/block/drbd/drbd_transport_template.c
create mode 100644 include/uapi/linux/drbd2.h
base-commit: c3bcce56763375946bc31a4dac859b4b4cc07ccd
--
2.55.0
next reply other threads:[~2026-10-06 15:46 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-06 15:45 Christoph Böhmwalder [this message]
2026-10-06 15:45 ` [PATCH v2 01/20] drbd: mark as BROKEN during DRBD 9 rework Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 02/20] drbd: extend wire protocol definitions for DRBD 9 Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 03/20] drbd: introduce DRBD 9 on-disk metadata format Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 04/20] drbd: add transport layer abstraction Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 05/20] drbd: add TCP transport implementation Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 06/20] drbd: add DAX/PMEM support for metadata access Christoph Böhmwalder
2026-10-06 16:03 ` Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 07/20] drbd: add optional compatibility layer for DRBD 8.4 Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 08/20] drbd: add application/resync IO synchronization documentation Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 09/20] drbd: rework sender for DRBD 9 multi-peer Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 10/20] drbd: replace per-device state model with multi-peer data structures Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 11/20] drbd: rewrite state machine for DRBD 9 multi-peer clusters Christoph Böhmwalder
2026-10-06 15:45 ` [PATCH v2 12/20] drbd: rework activity log and bitmap for multi-peer replication Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 13/20] drbd: rework request processing for DRBD 9 multi-peer IO Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 14/20] drbd: rework module core for DRBD 9 transport and multi-peer Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 15/20] drbd: rework receiver for DRBD 9 transport and multi-peer protocol Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 16/20] drbd: rework the netlink core for DRBD 9 Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 17/20] drbd: serve the "drbd" genl family at version 1 for existing userspace Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 18/20] drbd: add the "drbd2" genl family Christoph Böhmwalder
2026-10-06 16:06 ` Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 19/20] drbd: update monitoring interfaces for multi-peer topology Christoph Böhmwalder
2026-10-06 15:46 ` [PATCH v2 20/20] drbd: remove BROKEN for DRBD Christoph Böhmwalder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261006154607.3936501-1-christoph.boehmwalder@linbit.com \
--to=christoph.boehmwalder@linbit.com \
--cc=axboe@kernel.dk \
--cc=drbd-dev@lists.linux.dev \
--cc=lars@linbit.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=philipp.reisner@linbit.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox