Hi Christoph, I love your patch! Perhaps something to improve: [auto build test WARNING on axboe-block/for-next] [also build test WARNING on linus/master v6.1-rc1 next-20221017] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Christoph-B-hmwalder/drbd-Store-op-in-drbd_peer_request/20221017-170252 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next patch link: https://lore.kernel.org/r/20221017090154.15696-1-christoph.boehmwalder%40linbit.com patch subject: [PATCH] drbd: Store op in drbd_peer_request config: x86_64-randconfig-s023-20221017 compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://github.com/intel-lab-lkp/linux/commit/56bd9760957a27a5899aba7d1f75d650c1ac7a15 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Christoph-B-hmwalder/drbd-Store-op-in-drbd_peer_request/20221017-170252 git checkout 56bd9760957a27a5899aba7d1f75d650c1ac7a15 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/block/drbd/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) drivers/block/drbd/drbd_worker.c:616:39: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:616:39: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:616:39: sparse: struct disk_conf * >> drivers/block/drbd/drbd_worker.c:403:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int opf @@ got restricted blk_opf_t @@ drivers/block/drbd/drbd_worker.c:403:23: sparse: expected unsigned int opf drivers/block/drbd/drbd_worker.c:403:23: sparse: got restricted blk_opf_t drivers/block/drbd/drbd_worker.c:508:14: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:508:14: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:508:14: sparse: struct disk_conf * drivers/block/drbd/drbd_worker.c:509:16: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:509:16: sparse: struct fifo_buffer [noderef] __rcu * drivers/block/drbd/drbd_worker.c:509:16: sparse: struct fifo_buffer * drivers/block/drbd/drbd_worker.c:558:13: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:558:13: sparse: struct fifo_buffer [noderef] __rcu * drivers/block/drbd/drbd_worker.c:558:13: sparse: struct fifo_buffer * drivers/block/drbd/drbd_worker.c:562:39: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:562:39: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:562:39: sparse: struct disk_conf * drivers/block/drbd/drbd_worker.c:995:22: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:995:22: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:995:22: sparse: struct disk_conf * drivers/block/drbd/drbd_worker.c:1540:32: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:1540:32: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:1540:32: sparse: struct disk_conf * drivers/block/drbd/drbd_worker.c:1649:32: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:1649:32: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:1649:32: sparse: struct disk_conf * drivers/block/drbd/drbd_worker.c:1687:16: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:1687:16: sparse: struct fifo_buffer [noderef] __rcu * drivers/block/drbd/drbd_worker.c:1687:16: sparse: struct fifo_buffer * drivers/block/drbd/drbd_worker.c:1716:34: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:1716:34: sparse: struct net_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:1716:34: sparse: struct net_conf * drivers/block/drbd/drbd_worker.c:1889:38: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:1889:38: sparse: struct net_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:1889:38: sparse: struct net_conf * drivers/block/drbd/drbd_worker.c:2094:14: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:2094:14: sparse: struct net_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:2094:14: sparse: struct net_conf * drivers/block/drbd/drbd_worker.c:2149:14: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_worker.c:2149:14: sparse: struct net_conf [noderef] __rcu * drivers/block/drbd/drbd_worker.c:2149:14: sparse: struct net_conf * drivers/block/drbd/drbd_worker.c:59:25: sparse: sparse: context imbalance in 'drbd_md_endio' - unexpected unlock drivers/block/drbd/drbd_worker.c: note: in included file: drivers/block/drbd/drbd_int.h:1720:14: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_int.h:1720:14: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_int.h:1720:14: sparse: struct disk_conf * drivers/block/drbd/drbd_int.h:1720:14: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_int.h:1720:14: sparse: struct disk_conf [noderef] __rcu * drivers/block/drbd/drbd_int.h:1720:14: sparse: struct disk_conf * drivers/block/drbd/drbd_int.h:2138:14: sparse: sparse: incompatible types in comparison expression (different address spaces): drivers/block/drbd/drbd_int.h:2138:14: sparse: struct net_conf [noderef] __rcu * drivers/block/drbd/drbd_int.h:2138:14: sparse: struct net_conf * vim +403 drivers/block/drbd/drbd_worker.c 386 387 static int read_for_csum(struct drbd_peer_device *peer_device, sector_t sector, int size) 388 { 389 struct drbd_device *device = peer_device->device; 390 struct drbd_peer_request *peer_req; 391 392 if (!get_ldev(device)) 393 return -EIO; 394 395 /* GFP_TRY, because if there is no memory available right now, this may 396 * be rescheduled for later. It is "only" background resync, after all. */ 397 peer_req = drbd_alloc_peer_req(peer_device, ID_SYNCER /* unused */, sector, 398 size, size, GFP_TRY); 399 if (!peer_req) 400 goto defer; 401 402 peer_req->w.cb = w_e_send_csum; > 403 peer_req->opf = REQ_OP_READ; 404 spin_lock_irq(&device->resource->req_lock); 405 list_add_tail(&peer_req->w.list, &device->read_ee); 406 spin_unlock_irq(&device->resource->req_lock); 407 408 atomic_add(size >> 9, &device->rs_sect_ev); 409 if (drbd_submit_peer_request(peer_req) == 0) 410 return 0; 411 412 /* If it failed because of ENOMEM, retry should help. If it failed 413 * because bio_add_page failed (probably broken lower level driver), 414 * retry may or may not help. 415 * If it does not, you may need to force disconnect. */ 416 spin_lock_irq(&device->resource->req_lock); 417 list_del(&peer_req->w.list); 418 spin_unlock_irq(&device->resource->req_lock); 419 420 drbd_free_peer_req(device, peer_req); 421 defer: 422 put_ldev(device); 423 return -EAGAIN; 424 } 425 -- 0-DAY CI Kernel Test Service https://01.org/lkp