From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56832343D66 for ; Tue, 7 Apr 2026 17:34:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775583253; cv=none; b=MQTMBPWx9ewBX7bfG/Na43jYHkIFd7E7PFzh1VMuYdWP3voGqrY+u/Oyh3XKitx2eVfQoRYd4HNyNpjDX8Q/LsBphR4Y8R/GYHO7G2QK90y2SJR24vNB33CrKiNxaNOLlh09bsSzNKuWQiRz1kFMub7ncs+F90cC8DwH2l4v200= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775583253; c=relaxed/simple; bh=g2ZM5FmkM/cMVSD6A+ioyLtze+wBXuHB3O6JxpHUSc8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=YLGm6DFUU/O4zF/XlMciXUXETGMhmasqmOE8pk8rOgvPtx9/nmcBRImYNygeO7+A2gREbJKGY2rrCQDPFgIwbzyC1wWRH28etjfIfuA2PztCSOLpRvnTju3UBJrBv2FCro0vJ3cEbaPzi0b5ANlkdSPBAfDL0ztxUQQMUtb1QRE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linbit.com; spf=pass smtp.mailfrom=linbit.com; dkim=pass (2048-bit key) header.d=linbit-com.20251104.gappssmtp.com header.i=@linbit-com.20251104.gappssmtp.com header.b=lFqi79mZ; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linbit.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linbit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linbit-com.20251104.gappssmtp.com header.i=@linbit-com.20251104.gappssmtp.com header.b="lFqi79mZ" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4887fd35e60so34773845e9.2 for ; Tue, 07 Apr 2026 10:34:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linbit-com.20251104.gappssmtp.com; s=20251104; t=1775583250; x=1776188050; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=8RvP1qL9GHPweA7UFv71M7qDWUSH6dTBdOKH8YAv1Ek=; b=lFqi79mZTeg+5CMl63eOKuFMI/QQTHWniLygGpcDNMWbvhG0557PZMk/NzXO+HDPqF iWSkhO/mYyAE6vEm/MzzGwWK4u65n7SxifZuUEcfIzzunAmEf+6w4Y2eNP12aUp1f93n zDEsLnk791P9UD4D4v4DCUtwBRHCpeuf1EpK+NCOkXljPimJmO0ndYECaaykHbNls/3e jjSwLMy0VhE5QxMPY2rEI9BSb+aUI7m2IYJINV3/kOGSdv8Bfag8gylobJlKqO4x++z3 2xh8rIRm3M1XGw/1SgOhAnHp5cZ13bE6LotBD0Q4J2ajpfvPe/RVpgY7APOqz+1OArDV EuuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775583250; x=1776188050; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8RvP1qL9GHPweA7UFv71M7qDWUSH6dTBdOKH8YAv1Ek=; b=RiynszvZ4p0jAdo1UkEfpqEFO25KcnO/i3XYJYQfypLUIRxO9yRMh1THjhKFHsEQTC mZkEaFJz4Iv0BGLDpohomIzaVaj7iOVcEM3X0R3URoo1gvvvPgF0gy7C3X2LiX6NdkgY 73NahzI+dN1qTZ7djbq1CLTohfPaKsqyNS5OJy0NZEbZOBIucf2ncyU3VmHMEex6jUwF C4W4RQNJy+31V5fLUhu0k25t0NdJkjr6yVk3n5bj9aEDTOCB6VgPjSNM5N5ycne+pwkq pIUz4Yj/AqFP8a6hEYSd6osgRQf4EKzQyi/vmn4+fj5pqHf5UvLsP3c0WNbLhTLnuwHf fbJw== X-Forwarded-Encrypted: i=1; AJvYcCVha19g/dSQPB9x9ZhVeGInBxMAstHnw5Xw4pUC1uuLGYAIjFjCRHhaZIaMsJWYmD6kLlNCeFzEm8f4mrU=@vger.kernel.org X-Gm-Message-State: AOJu0YxxT9gHhviFr6RJ7U/nJ/hyetOdzeY5aPsaxcGxVBnCY2fmpTWO 1585g7vyeCzMcnUFiCWL84vGrhC+ZpGt5IdtM2RgCYUtHF9QI2bSHxd5EZxcHpvV/JU= X-Gm-Gg: AeBDiev2F1vYAphG3jIIw9DhKr7N7I5USvFmRlttmsMjwa/glrfepx/HIzaoXZGityb 0DHZA95Bl76i+2kzoMoZ2uzDXV0UpPLiF8zwG5d6Gf/uohFo/CUAy8gOZAplCn70brUFHtIIWAE 2LYOXNK+vI5VNUxpW/flEHdxmDCNqYcgNnRNtuzElTSyxuVmLjtys7ChwH/NpjQwTFpOJ3zrjhg ICno8d59MPFZuYUole7damLSapDTYQeKHtYJFQufIvEduHqP49ddo1MoRyU+qtAhV/AmgUYVF0p 0zxk14WGm+7ps+e115pLg0Iu3o6mJtHt83lm+6K28sAdTKh4HN3S1GW0L5u+mKIW2lOSkGc5KLh clGEmA3D0IUZ+griMkrOdnGZJMPRrrIgTIeVmEfGi4yb2uZwB1yBNLJCORq1gVr+C9cyvPd6cXW fR3y/lJE8jcJMuZjvI8dkNupZC+if5jHJIdQAiESHo5YW4h4SI8ZVsRhHjDiLkmQiir82l6TWUg 69DWtQ8pW+8F1xh77BGEA== X-Received: by 2002:a05:600c:4b23:b0:488:a723:ea53 with SMTP id 5b1f17b1804b1-488a723ebddmr100893325e9.7.1775583249679; Tue, 07 Apr 2026 10:34:09 -0700 (PDT) Received: from localhost.localdomain (h082218028181.host.wavenet.at. [82.218.28.181]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488c4e930c7sm6667275e9.6.2026.04.07.10.34.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 10:34:09 -0700 (PDT) From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= To: Jens Axboe Cc: drbd-dev@lists.linbit.com, linux-kernel@vger.kernel.org, Lars Ellenberg , Philipp Reisner , linux-block@vger.kernel.org, Donald Hunter , Eric Dumazet , Jakub Kicinski , netdev@vger.kernel.org, =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= Subject: [PATCH 0/4] drbd: switch from genl_magic to YNL Date: Tue, 7 Apr 2026 19:33:52 +0200 Message-ID: <20260407173356.873887-1-christoph.boehmwalder@linbit.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DRBD's genetlink interface was defined using a custom multi-include macro system, genl_magic_{func,struct}.h. This system generated struct definitions, netlink policies, serialization functions and more from a single "magic" header. It never really caught on; DRBD is its only user, its internal macro jungle is next to impossible to understand, and even harder to debug. This series replaces it with the standard solution, YNL. First, shuffle some headers around because the YNL generator expects to generate UAPI headers. Then, add some optional extensions to the YNL generator to support a minimal set of old genl_magic features required for backward compatibility. Then create a "genetlink-legacy" based spec for DRBD and switch to it. Note: this family primarily aims for compatiblity with existing userspace. The next planned step is a new (also YNL-based) family, "drbd2", which will implement all the actual modern recommendations for new netlink families. Christoph Böhmwalder (4): drbd: move UAPI headers to include/uapi/linux/ tools: ynl-gen-c: optionally emit structs and helpers drbd: add YNL genetlink specification drbd: switch from genl_magic macros to YNL-generated code Documentation/netlink/genetlink-legacy.yaml | 23 + Documentation/netlink/specs/drbd.yaml | 1109 +++++++ drivers/block/drbd/Makefile | 1 + drivers/block/drbd/drbd_buildtag.c | 2 +- .../block/drbd}/drbd_config.h | 0 drivers/block/drbd/drbd_debugfs.c | 2 +- drivers/block/drbd/drbd_int.h | 6 +- drivers/block/drbd/drbd_main.c | 6 +- drivers/block/drbd/drbd_nl.c | 416 +-- drivers/block/drbd/drbd_nl_gen.c | 2610 +++++++++++++++++ drivers/block/drbd/drbd_nl_gen.h | 399 +++ drivers/block/drbd/drbd_proc.c | 2 +- include/linux/drbd_genl.h | 536 ---- include/linux/drbd_genl_api.h | 56 - include/linux/genl_magic_func.h | 413 --- include/linux/genl_magic_struct.h | 272 -- include/{ => uapi}/linux/drbd.h | 45 +- include/uapi/linux/drbd_genl.h | 363 +++ include/{ => uapi}/linux/drbd_limits.h | 2 +- tools/net/ynl/pyynl/ynl_gen_c.py | 293 +- 20 files changed, 5087 insertions(+), 1469 deletions(-) create mode 100644 Documentation/netlink/specs/drbd.yaml rename {include/linux => drivers/block/drbd}/drbd_config.h (100%) create mode 100644 drivers/block/drbd/drbd_nl_gen.c create mode 100644 drivers/block/drbd/drbd_nl_gen.h delete mode 100644 include/linux/drbd_genl.h delete mode 100644 include/linux/drbd_genl_api.h delete mode 100644 include/linux/genl_magic_func.h delete mode 100644 include/linux/genl_magic_struct.h rename include/{ => uapi}/linux/drbd.h (86%) create mode 100644 include/uapi/linux/drbd_genl.h rename include/{ => uapi}/linux/drbd_limits.h (99%) base-commit: a9c4b1d37622ed01b75f94a4f68cf55f33153a31 -- 2.53.0