All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Mikulas Patocka <mpatocka@redhat.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	John Garry <john.g.garry@oracle.com>
Subject: drivers/md/dm.c:1324:9: sparse: sparse: cast from restricted blk_opf_t
Date: Thu, 21 May 2026 23:46:23 +0800	[thread overview]
Message-ID: <202605212337.mycdFkcd-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   8bc67e4db64aa72732c474b44ea8622062c903f0
commit: de67c139b3846ece6b8bbb62abf1f010ae85c083 dm: test for REQ_ATOMIC in dm_accept_partial_bio()
date:   5 months ago
config: mips-randconfig-r134-20260521 (https://download.01.org/0day-ci/archive/20260521/202605212337.mycdFkcd-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 5bac06718f502014fade905512f1d26d578a18f3)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260521/202605212337.mycdFkcd-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
| Fixes: de67c139b384 ("dm: test for REQ_ATOMIC in dm_accept_partial_bio()")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605212337.mycdFkcd-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/md/dm.c:1324:9: sparse: sparse: cast from restricted blk_opf_t

vim +1324 drivers/md/dm.c

  1283	
  1284	/*
  1285	 * A target may call dm_accept_partial_bio only from the map routine.  It is
  1286	 * allowed for all bio types except REQ_PREFLUSH, REQ_OP_ZONE_* zone management
  1287	 * operations, zone append writes (native with REQ_OP_ZONE_APPEND or emulated
  1288	 * with write BIOs flagged with BIO_EMULATES_ZONE_APPEND) and any bio serviced
  1289	 * by __send_duplicate_bios().
  1290	 *
  1291	 * dm_accept_partial_bio informs the dm that the target only wants to process
  1292	 * additional n_sectors sectors of the bio and the rest of the data should be
  1293	 * sent in a next bio.
  1294	 *
  1295	 * A diagram that explains the arithmetics:
  1296	 * +--------------------+---------------+-------+
  1297	 * |         1          |       2       |   3   |
  1298	 * +--------------------+---------------+-------+
  1299	 *
  1300	 * <-------------- *tio->len_ptr --------------->
  1301	 *                      <----- bio_sectors ----->
  1302	 *                      <-- n_sectors -->
  1303	 *
  1304	 * Region 1 was already iterated over with bio_advance or similar function.
  1305	 *	(it may be empty if the target doesn't use bio_advance)
  1306	 * Region 2 is the remaining bio size that the target wants to process.
  1307	 *	(it may be empty if region 1 is non-empty, although there is no reason
  1308	 *	 to make it empty)
  1309	 * The target requires that region 3 is to be sent in the next bio.
  1310	 *
  1311	 * If the target wants to receive multiple copies of the bio (via num_*bios, etc),
  1312	 * the partially processed part (the sum of regions 1+2) must be the same for all
  1313	 * copies of the bio.
  1314	 */
  1315	void dm_accept_partial_bio(struct bio *bio, unsigned int n_sectors)
  1316	{
  1317		struct dm_target_io *tio = clone_to_tio(bio);
  1318		struct dm_io *io = tio->io;
  1319		unsigned int bio_sectors = bio_sectors(bio);
  1320	
  1321		BUG_ON(dm_tio_flagged(tio, DM_TIO_IS_DUPLICATE_BIO));
  1322		BUG_ON(bio_sectors > *tio->len_ptr);
  1323		BUG_ON(n_sectors > bio_sectors);
> 1324		BUG_ON(bio->bi_opf & REQ_ATOMIC);
  1325	
  1326		if (static_branch_unlikely(&zoned_enabled) &&
  1327		    unlikely(bdev_is_zoned(bio->bi_bdev))) {
  1328			enum req_op op = bio_op(bio);
  1329	
  1330			BUG_ON(op_is_zone_mgmt(op));
  1331			BUG_ON(op == REQ_OP_WRITE);
  1332			BUG_ON(op == REQ_OP_WRITE_ZEROES);
  1333			BUG_ON(op == REQ_OP_ZONE_APPEND);
  1334		}
  1335	
  1336		*tio->len_ptr -= bio_sectors - n_sectors;
  1337		bio->bi_iter.bi_size = n_sectors << SECTOR_SHIFT;
  1338	
  1339		/*
  1340		 * __split_and_process_bio() may have already saved mapped part
  1341		 * for accounting but it is being reduced so update accordingly.
  1342		 */
  1343		dm_io_set_flag(io, DM_IO_WAS_SPLIT);
  1344		io->sectors = n_sectors;
  1345		io->sector_offset = bio_sectors(io->orig_bio);
  1346	}
  1347	EXPORT_SYMBOL_GPL(dm_accept_partial_bio);
  1348	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

             reply	other threads:[~2026-05-21 15:47 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-21 15:46 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-03-18  6:49 drivers/md/dm.c:1324:9: sparse: sparse: cast from restricted blk_opf_t kernel test robot
2026-03-18 14:12 ` Mikulas Patocka
2026-03-23 14:24   ` John Garry

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=202605212337.mycdFkcd-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=john.g.garry@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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.