From: kernel test robot <lkp@intel.com>
To: "Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>,
"Jens Axboe" <axboe@kernel.dk>
Cc: oe-kbuild-all@lists.linux.dev, drbd-dev@lists.linux.dev,
linux-kernel@vger.kernel.org,
"Lars Ellenberg" <lars.ellenberg@linbit.com>,
"Philipp Reisner" <philipp.reisner@linbit.com>,
linux-block@vger.kernel.org,
"Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>
Subject: Re: [PATCH v3 20/20] drbd: remove BROKEN for DRBD
Date: Wed, 11 Nov 2026 14:34:47 +0800 [thread overview]
Message-ID: <202611111410.3QaA5yy6-lkp@intel.com> (raw)
In-Reply-To: <20261110162646.3028472-21-christoph.boehmwalder@linbit.com>
Hi Christoph,
kernel test robot noticed the following build warnings:
[auto build test WARNING on aa7014f8d7565cfea117eac36a5de0a05eba65a4]
url: https://github.com/intel-lab-lkp/linux/commits/Christoph-B-hmwalder/drbd-mark-as-BROKEN-during-DRBD-9-rework/20261110-172626
base: aa7014f8d7565cfea117eac36a5de0a05eba65a4
patch link: https://lore.kernel.org/r/20261110162646.3028472-21-christoph.boehmwalder%40linbit.com
patch subject: [PATCH v3 20/20] drbd: remove BROKEN for DRBD
config: xtensa-allyesconfig (https://download.01.org/0day-ci/archive/20261111/202611111410.3QaA5yy6-lkp@intel.com/config)
compiler: xtensa-linux-gcc (GCC) 16.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261111/202611111410.3QaA5yy6-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202611111410.3QaA5yy6-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/block/drbd/drbd_nl_84.c: In function 'compat84_overlay':
>> drivers/block/drbd/drbd_nl_84.c:1125:1: warning: the frame size of 1856 bytes is larger than 1536 bytes [-Wframe-larger-than=]
1125 | }
| ^
vim +1125 drivers/block/drbd/drbd_nl_84.c
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 693
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 694 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 695 * The generated *_from_attrs() parsers fill the vendored v1 wire
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 696 * structs (struct disk_conf, struct net_conf, ...), whose field sets
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 697 * differ from the core's neutral structs, so every set below parses into
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 698 * a local v1 struct and translates field by field into dst.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 699 *
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 700 * For the persistent config sets (disk_conf, net_conf, res_opts), dst
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 701 * already holds the object's current values. The parser only writes a
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 702 * field whose attribute is present, so the local struct is pre-seeded
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 703 * from dst and copied back whole: an absent attribute round-trips its
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 704 * old value, preserving drbd_nl.h's "absent attributes leave dst
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 705 * untouched" contract. Most one-shot action parms start from a zeroed
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 706 * dst, so a zeroed local struct already matches; resize_parms and
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 707 * start_ov_parms do not, and are pre-seeded the same way.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 708 *
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 709 * The v1 disk_conf treats backing_dev/meta_dev/meta_dev_idx as required, so
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 710 * a plain disk-options call parses with err == -ENOMSG while every other
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 711 * field is still filled in. drbd_nl.c tolerates -ENOMSG as non-fatal, so
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 712 * each case copies back (and stashes) before returning err, never on an
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 713 * early return.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 714 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 715 static int compat84_overlay(struct drbd_adm_ctx *ctx, enum drbd_nl_attr_set set, void *dst)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 716 {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 717 struct genl_info *info = compat84_req(ctx)->info;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 718 struct compat84_req *req = compat84_req(ctx);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 719
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 720 switch (set) {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 721 case DRBD_NL_SET_DISK_CONF: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 722 struct drbd_disk_conf *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 723 struct disk_conf c = {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 724 .meta_dev_idx = d->meta_dev_idx,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 725 .disk_size = d->disk_size,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 726 .on_io_error = d->on_io_error,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 727 .resync_after = d->resync_after,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 728 .al_extents = d->al_extents,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 729 .disk_barrier = d->disk_barrier,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 730 .disk_flushes = d->disk_flushes,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 731 .disk_drain = d->disk_drain,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 732 .md_flushes = d->md_flushes,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 733 .disk_timeout = d->disk_timeout,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 734 .read_balancing = d->read_balancing,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 735 .al_updates = d->al_updates,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 736 .discard_zeroes_if_aligned = d->discard_zeroes_if_aligned,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 737 .rs_discard_granularity = d->rs_discard_granularity,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 738 .disable_write_same = d->disable_write_same,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 739 };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 740 struct nlattr **ntb;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 741 int err, ntb_err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 742
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 743 memcpy(c.backing_dev, d->backing_dev, sizeof(c.backing_dev));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 744 c.backing_dev_len = d->backing_dev_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 745 memcpy(c.meta_dev, d->meta_dev, sizeof(c.meta_dev));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 746 c.meta_dev_len = d->meta_dev_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 747
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 748 err = disk_conf_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 749
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 750 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 751 * Copy back and stash before returning err: -ENOMSG from a
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 752 * plain disk-options call (see above) must not discard the
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 753 * fields it did send. Any other error leaves c at its
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 754 * pre-seeded values, so copying back is a no-op.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 755 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 756 memcpy(d->backing_dev, c.backing_dev, sizeof(d->backing_dev));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 757 d->backing_dev_len = c.backing_dev_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 758 memcpy(d->meta_dev, c.meta_dev, sizeof(d->meta_dev));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 759 d->meta_dev_len = c.meta_dev_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 760 d->meta_dev_idx = c.meta_dev_idx;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 761 d->disk_size = c.disk_size;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 762 d->on_io_error = c.on_io_error;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 763 d->resync_after = c.resync_after;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 764 d->al_extents = c.al_extents;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 765 d->disk_barrier = c.disk_barrier;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 766 d->disk_flushes = c.disk_flushes;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 767 d->disk_drain = c.disk_drain;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 768 d->md_flushes = c.md_flushes;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 769 d->disk_timeout = c.disk_timeout;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 770 d->read_balancing = c.read_balancing;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 771 d->al_updates = c.al_updates;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 772 d->discard_zeroes_if_aligned = c.discard_zeroes_if_aligned;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 773 d->rs_discard_granularity = c.rs_discard_granularity;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 774 d->disable_write_same = c.disable_write_same;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 775 /* max_bio_bvecs: no DRBD 9 equivalent, dropped. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 776
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 777 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 778 * The resync-tuning fields belong to struct drbd_peer_device_conf,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 779 * fencing to net_conf.fencing_policy; neither is reachable
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 780 * through this dst. Re-parse the nested table for per-field
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 781 * presence and stash them for the attach/disk-options
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 782 * handlers.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 783 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 784 ntb_err = disk_conf_ntb_from_attrs(&ntb, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 785 if ((!ntb_err || ntb_err == -ENOMSG) && ntb) {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 786 req->peer_device_conf_84.resync_rate = c.resync_rate;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 787 req->peer_device_conf_84.has_resync_rate =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 788 ntb[DRBD_A_DISK_CONF_RESYNC_RATE] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 789 req->peer_device_conf_84.c_plan_ahead = c.c_plan_ahead;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 790 req->peer_device_conf_84.has_c_plan_ahead =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 791 ntb[DRBD_A_DISK_CONF_C_PLAN_AHEAD] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 792 req->peer_device_conf_84.c_delay_target = c.c_delay_target;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 793 req->peer_device_conf_84.has_c_delay_target =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 794 ntb[DRBD_A_DISK_CONF_C_DELAY_TARGET] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 795 req->peer_device_conf_84.c_fill_target = c.c_fill_target;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 796 req->peer_device_conf_84.has_c_fill_target =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 797 ntb[DRBD_A_DISK_CONF_C_FILL_TARGET] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 798 req->peer_device_conf_84.c_max_rate = c.c_max_rate;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 799 req->peer_device_conf_84.has_c_max_rate =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 800 ntb[DRBD_A_DISK_CONF_C_MAX_RATE] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 801 req->peer_device_conf_84.c_min_rate = c.c_min_rate;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 802 req->peer_device_conf_84.has_c_min_rate =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 803 ntb[DRBD_A_DISK_CONF_C_MIN_RATE] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 804
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 805 req->fencing_policy_84 = c.fencing;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 806 req->has_fencing_policy_84 =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 807 ntb[DRBD_A_DISK_CONF_FENCING] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 808 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 809 kfree(ntb);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 810
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 811 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 812 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 813 case DRBD_NL_SET_NET_CONF: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 814 struct drbd_net_conf *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 815 struct net_conf c = {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 816 .wire_protocol = d->wire_protocol,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 817 .connect_int = d->connect_int,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 818 .timeout = d->timeout,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 819 .ping_int = d->ping_int,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 820 .ping_timeo = d->ping_timeo,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 821 .sndbuf_size = d->sndbuf_size,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 822 .rcvbuf_size = d->rcvbuf_size,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 823 .ko_count = d->ko_count,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 824 .max_buffers = d->max_buffers,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 825 .max_epoch_size = d->max_epoch_size,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 826 .after_sb_0p = d->after_sb_0p,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 827 .after_sb_1p = d->after_sb_1p,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 828 .after_sb_2p = d->after_sb_2p,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 829 .rr_conflict = d->rr_conflict,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 830 .on_congestion = d->on_congestion,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 831 .cong_fill = d->cong_fill,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 832 .cong_extents = d->cong_extents,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 833 .two_primaries = d->two_primaries,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 834 .tcp_cork = d->tcp_cork,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 835 .always_asbp = d->always_asbp,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 836 .use_rle = d->use_rle,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 837 .csums_after_crash_only = d->csums_after_crash_only,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 838 .sock_check_timeo = d->sock_check_timeo,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 839 };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 840 struct nlattr **ntb;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 841 int err, ntb_err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 842
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 843 memcpy(c.shared_secret, d->shared_secret, sizeof(c.shared_secret));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 844 c.shared_secret_len = d->shared_secret_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 845 memcpy(c.cram_hmac_alg, d->cram_hmac_alg, sizeof(c.cram_hmac_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 846 c.cram_hmac_alg_len = d->cram_hmac_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 847 memcpy(c.integrity_alg, d->integrity_alg, sizeof(c.integrity_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 848 c.integrity_alg_len = d->integrity_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 849 memcpy(c.verify_alg, d->verify_alg, sizeof(c.verify_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 850 c.verify_alg_len = d->verify_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 851 memcpy(c.csums_alg, d->csums_alg, sizeof(c.csums_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 852 c.csums_alg_len = d->csums_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 853
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 854 err = net_conf_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 855
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 856 /* Copy back and stash before returning err, as for DISK_CONF. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 857 memcpy(d->shared_secret, c.shared_secret, sizeof(d->shared_secret));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 858 d->shared_secret_len = c.shared_secret_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 859 memcpy(d->cram_hmac_alg, c.cram_hmac_alg, sizeof(d->cram_hmac_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 860 d->cram_hmac_alg_len = c.cram_hmac_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 861 memcpy(d->integrity_alg, c.integrity_alg, sizeof(d->integrity_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 862 d->integrity_alg_len = c.integrity_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 863 memcpy(d->verify_alg, c.verify_alg, sizeof(d->verify_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 864 d->verify_alg_len = c.verify_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 865 memcpy(d->csums_alg, c.csums_alg, sizeof(d->csums_alg));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 866 d->csums_alg_len = c.csums_alg_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 867 d->wire_protocol = c.wire_protocol;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 868 d->connect_int = c.connect_int;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 869 d->timeout = c.timeout;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 870 d->ping_int = c.ping_int;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 871 d->ping_timeo = c.ping_timeo;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 872 d->sndbuf_size = c.sndbuf_size;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 873 d->rcvbuf_size = c.rcvbuf_size;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 874 d->ko_count = c.ko_count;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 875 d->max_buffers = c.max_buffers;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 876 d->max_epoch_size = c.max_epoch_size;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 877 d->after_sb_0p = c.after_sb_0p;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 878 d->after_sb_1p = c.after_sb_1p;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 879 d->after_sb_2p = c.after_sb_2p;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 880 d->rr_conflict = c.rr_conflict;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 881 d->on_congestion = c.on_congestion;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 882 d->cong_fill = c.cong_fill;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 883 d->cong_extents = c.cong_extents;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 884 d->two_primaries = c.two_primaries;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 885 d->tcp_cork = c.tcp_cork;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 886 d->always_asbp = c.always_asbp;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 887 d->use_rle = c.use_rle;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 888 d->csums_after_crash_only = c.csums_after_crash_only;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 889 d->sock_check_timeo = c.sock_check_timeo;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 890
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 891 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 892 * fencing is a disk option in 8.4, so "net-options
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 893 * --set-defaults" must not reset it: keep the live value.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 894 * drbd_adm_net_opts() holds conf_update.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 895 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 896 if (ctx->set_defaults && ctx->connection) {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 897 struct drbd_net_conf *old;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 898
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 899 rcu_read_lock();
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 900 old = rcu_dereference(ctx->connection->transport.net_conf);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 901 if (old)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 902 d->fencing_policy = old->fencing_policy;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 903 rcu_read_unlock();
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 904 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 905
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 906 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 907 * unplug_watermark is dropped: no DRBD 9 code reads it, and
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 908 * net_conf is connection-scoped while disk_conf, its DRBD 9
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 909 * home, is per device. discard_my_data/tentative belong to
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 910 * struct drbd_connect_parms; stash them for the connect handler.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 911 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 912 ntb_err = net_conf_ntb_from_attrs(&ntb, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 913 if ((!ntb_err || ntb_err == -ENOMSG) && ntb) {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 914 req->connect_parms_84.discard_my_data = c.discard_my_data;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 915 req->connect_parms_84.has_discard_my_data =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 916 ntb[DRBD_A_NET_CONF_DISCARD_MY_DATA] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 917 req->connect_parms_84.tentative = c.tentative;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 918 req->connect_parms_84.has_tentative =
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 919 ntb[DRBD_A_NET_CONF_TENTATIVE] != NULL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 920 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 921 kfree(ntb);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 922
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 923 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 924 * fencing lives in the v1 disk_conf on the wire but in
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 925 * drbd_net_conf.fencing_policy on DRBD 9. The attach/disk-options
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 926 * handler stashed it while parsing disk_conf and re-enters
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 927 * this overlay for NET_CONF once it has the connection. A
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 928 * real NET_CONF request never has this flag set.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 929 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 930 if (req->has_fencing_policy_84)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 931 d->fencing_policy = req->fencing_policy_84;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 932
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 933 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 934 * DRBD 9 requires a connection name; v1 has no such concept.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 935 * Default it only for a freshly created connection (name_len
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 936 * == 0), matching the name drbd9 drbdsetup's own compat84 shim
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 937 * passes (--_name=remote).
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 938 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 939 if (!d->name_len) {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 940 static const char v1_conn_name[] = "remote";
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 941
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 942 strscpy(d->name, v1_conn_name, sizeof(d->name));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 943 d->name_len = strlen(v1_conn_name);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 944 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 945
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 946 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 947 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 948 case DRBD_NL_SET_RES_OPTS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 949 struct drbd_res_opts *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 950 struct res_opts c = {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 951 .on_no_data = d->on_no_data,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 952 };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 953 int err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 954
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 955 memcpy(c.cpu_mask, d->cpu_mask, sizeof(c.cpu_mask));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 956 c.cpu_mask_len = d->cpu_mask_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 957
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 958 err = res_opts_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 959
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 960 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 961 * The other fourteen DRBD 9 res_opts fields have no v1
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 962 * attribute, so v1's --set-defaults must not reset them
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 963 * either: that would drop drbd8_compat_mode and
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 964 * explicit_drbd8_compat and turn auto_promote back on.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 965 * drbd_adm_resource_opts() holds adm_mutex, so the live
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 966 * res_opts are stable here.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 967 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 968 if (ctx->set_defaults && ctx->resource)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 969 *d = ctx->resource->res_opts;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 970
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 971 /* Copy back before returning err, as for DISK_CONF. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 972 memcpy(d->cpu_mask, c.cpu_mask, sizeof(d->cpu_mask));
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 973 d->cpu_mask_len = c.cpu_mask_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 974 d->on_no_data = c.on_no_data;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 975 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 976 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 977 case DRBD_NL_SET_SET_ROLE_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 978 struct drbd_set_role_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 979 struct set_role_parms c = { };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 980 int err = set_role_parms_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 981
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 982 if (err)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 983 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 984 /* v1's assume_uptodate is drbd-utils 8.9.x's wire name for --force. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 985 d->force = c.assume_uptodate;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 986 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 987 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 988 case DRBD_NL_SET_RESIZE_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 989 struct drbd_resize_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 990 /* drbd_adm_resize() pre-fills the current AL layout. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 991 struct resize_parms c = {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 992 .resize_size = d->resize_size,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 993 .resize_force = d->resize_force,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 994 .no_resync = d->no_resync,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 995 .al_stripes = d->al_stripes,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 996 .al_stripe_size = d->al_stripe_size,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 997 };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 998 int err = resize_parms_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 999
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1000 if (err)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1001 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1002 d->resize_size = c.resize_size;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1003 d->resize_force = c.resize_force;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1004 d->no_resync = c.no_resync;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1005 d->al_stripes = c.al_stripes;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1006 d->al_stripe_size = c.al_stripe_size;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1007 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1008 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1009 case DRBD_NL_SET_START_OV_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1010 struct drbd_start_ov_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1011 /* drbd_adm_start_ov() pre-fills the resume position. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1012 struct start_ov_parms c = {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1013 .ov_start_sector = d->ov_start_sector,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1014 .ov_stop_sector = d->ov_stop_sector,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1015 };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1016 int err = start_ov_parms_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1017
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1018 if (err)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1019 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1020 d->ov_start_sector = c.ov_start_sector;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1021 d->ov_stop_sector = c.ov_stop_sector;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1022 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1023 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1024 case DRBD_NL_SET_NEW_C_UUID_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1025 struct drbd_new_c_uuid_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1026 struct new_c_uuid_parms c = { };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1027 int err = new_c_uuid_parms_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1028
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1029 if (err)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1030 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1031 d->clear_bm = c.clear_bm;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1032 /* force_resync: DRBD 9 only, no v1 attribute; leave untouched. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1033 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1034 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1035 case DRBD_NL_SET_DISCONNECT_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1036 struct drbd_disconnect_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1037 struct disconnect_parms c = { };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1038 int err = disconnect_parms_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1039
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1040 if (err)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1041 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1042 d->force_disconnect = c.force_disconnect;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1043 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1044 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1045 case DRBD_NL_SET_DETACH_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1046 struct drbd_detach_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1047 struct detach_parms c = { };
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1048 int err = detach_parms_from_attrs(&c, info);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1049
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1050 if (err)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1051 return err;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1052 d->force_detach = c.force_detach;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1053 /* intentional_diskless_detach: DRBD 9 only; leave untouched. */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1054 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1055 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1056 case DRBD_NL_SET_PEER_DEVICE_CONF: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1057 struct drbd_peer_device_conf *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1058
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1059 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1060 * Not parsed from the wire: the DISK_CONF case stashed these
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1061 * while parsing the disk_conf that carried them. The
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1062 * attach/disk-options handler re-enters overlay() for
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1063 * PEER_DEVICE_CONF once it has the peer device.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1064 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1065 if (req->peer_device_conf_84.has_resync_rate)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1066 d->resync_rate = req->peer_device_conf_84.resync_rate;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1067 if (req->peer_device_conf_84.has_c_plan_ahead)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1068 d->c_plan_ahead = req->peer_device_conf_84.c_plan_ahead;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1069 if (req->peer_device_conf_84.has_c_delay_target)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1070 d->c_delay_target = req->peer_device_conf_84.c_delay_target;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1071 if (req->peer_device_conf_84.has_c_fill_target)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1072 d->c_fill_target = req->peer_device_conf_84.c_fill_target;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1073 if (req->peer_device_conf_84.has_c_max_rate)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1074 d->c_max_rate = req->peer_device_conf_84.c_max_rate;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1075 if (req->peer_device_conf_84.has_c_min_rate)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1076 d->c_min_rate = req->peer_device_conf_84.c_min_rate;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1077
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1078 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1079 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1080 case DRBD_NL_SET_PATH_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1081 struct drbd_path_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1082
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1083 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1084 * v1 carries the endpoint addresses in DRBD_NLA_CFG_CONTEXT,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1085 * parsed once per request into req; drbd_adm_new_path()
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1086 * calls here once per path.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1087 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1088 if (!req->ctx_my_addr_len || !req->ctx_peer_addr_len)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1089 return -ENOMSG;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1090
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1091 memcpy(d->my_addr, req->ctx_my_addr, req->ctx_my_addr_len);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1092 d->my_addr_len = req->ctx_my_addr_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1093 memcpy(d->peer_addr, req->ctx_peer_addr, req->ctx_peer_addr_len);
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1094 d->peer_addr_len = req->ctx_peer_addr_len;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1095 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1096 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1097 case DRBD_NL_SET_CONNECT_PARMS: {
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1098 struct drbd_connect_parms *d = dst;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1099
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1100 /*
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1101 * Stashed by the NET_CONF case; dst is a fresh zeroed struct,
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1102 * so an unsent field already defaults to false.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1103 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1104 if (req->connect_parms_84.has_discard_my_data)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1105 d->discard_my_data = req->connect_parms_84.discard_my_data;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1106 if (req->connect_parms_84.has_tentative)
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1107 d->tentative = req->connect_parms_84.tentative;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1108 return 0;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1109 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1110 case DRBD_NL_SET_DEVICE_CONF:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1111 case DRBD_NL_SET_INVALIDATE_PARMS:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1112 case DRBD_NL_SET_INVALIDATE_PEER_PARMS:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1113 case DRBD_NL_SET_FORGET_PEER_PARMS:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1114 case DRBD_NL_SET_RENAME_RESOURCE_PARMS:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1115 case DRBD_NL_SET_SUSPEND_IO_PARMS:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1116 case DRBD_NL_SET_CBT_START_PARMS:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1117 /* No v1 counterpart: report a missing required attribute
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1118 * rather than silently proceeding with defaults.
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1119 */
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1120 return -ENOMSG;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1121 case __DRBD_NL_SET_MAX:
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1122 break;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1123 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1124 return -EINVAL;
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 @1125 }
4f5fcbdce4b889 Christoph Böhmwalder 2026-11-10 1126
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
prev parent reply other threads:[~2026-11-11 6:35 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 16:26 [PATCH v3 00/20] drbd: DRBD 9 rework Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 01/20] drbd: mark as BROKEN during " Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 02/20] drbd: extend wire protocol definitions for DRBD 9 Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 03/20] drbd: introduce DRBD 9 on-disk metadata format Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 04/20] drbd: add transport layer abstraction Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 05/20] drbd: add TCP transport implementation Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 06/20] drbd: add DAX/PMEM support for metadata access Christoph Böhmwalder
2026-11-10 16:55 ` sashiko-bot
2026-11-10 16:26 ` [PATCH v3 07/20] drbd: add optional compatibility layer for DRBD 8.4 Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 08/20] drbd: add application/resync IO synchronization documentation Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 09/20] drbd: rework sender for DRBD 9 multi-peer Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 10/20] drbd: replace per-device state model with multi-peer data structures Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 11/20] drbd: rewrite state machine for DRBD 9 multi-peer clusters Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 12/20] drbd: rework activity log and bitmap for multi-peer replication Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 13/20] drbd: rework request processing for DRBD 9 multi-peer IO Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 14/20] drbd: rework module core for DRBD 9 transport and multi-peer Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 15/20] drbd: rework receiver for DRBD 9 transport and multi-peer protocol Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 16/20] drbd: rework the netlink core for DRBD 9 Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 17/20] drbd: serve the "drbd" genl family at version 1 for existing userspace Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 18/20] drbd: add the "drbd2" genl family Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 19/20] drbd: update monitoring interfaces for multi-peer topology Christoph Böhmwalder
2026-11-10 16:26 ` [PATCH v3 20/20] drbd: remove BROKEN for DRBD Christoph Böhmwalder
2026-11-11 0:34 ` kernel test robot
2026-11-11 6:34 ` kernel test robot [this message]
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=202611111410.3QaA5yy6-lkp@intel.com \
--to=lkp@intel.com \
--cc=axboe@kernel.dk \
--cc=christoph.boehmwalder@linbit.com \
--cc=drbd-dev@lists.linux.dev \
--cc=lars.ellenberg@linbit.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.