mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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

      parent reply	other threads:[~2026-11-11  6:35 UTC|newest]

Thread overview: 23+ 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: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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®