tree:   
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git 
for-next
head:   2c243153d1d4be4e23735cd10984ac17c7a54531
commit: 2c243153d1d4be4e23735cd10984ac17c7a54531 [20/20] dm: Forbid requeue of 
writes to zones
config: riscv-randconfig-r011-20210602 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
d41cb6bb2607fa5c7a9df2b3dab361353657d225)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?id=2c243153d1d4be4e23735cd10984ac17c7a54531
        git remote add dm 
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git
        git fetch --no-tags dm for-next
        git checkout 2c243153d1d4be4e23735cd10984ac17c7a54531
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

>> drivers/md/dm.c:850:43: warning: variable 'bio' is uninitialized when used 
>> here [-Wuninitialized]
                               !WARN_ON_ONCE(dm_is_zone_write(md, bio)))
                                                                  ^~~
   include/asm-generic/bug.h:102:25: note: expanded from macro 'WARN_ON_ONCE'
           int __ret_warn_on = !!(condition);                      \
                                  ^~~~~~~~~
   drivers/md/dm.c:832:17: note: initialize the variable 'bio' to silence this 
warning
           struct bio *bio;
                          ^
                           = NULL
   1 warning generated.


vim +/bio +850 drivers/md/dm.c

   823  
   824  /*
   825   * Decrements the number of outstanding ios that a bio has been
   826   * cloned into, completing the original io if necc.
   827   */
   828  static void dec_pending(struct dm_io *io, blk_status_t error)
   829  {
   830          unsigned long flags;
   831          blk_status_t io_error;
   832          struct bio *bio;
   833          struct mapped_device *md = io->md;
   834  
   835          /* Push-back supersedes any I/O errors */
   836          if (unlikely(error)) {
   837                  spin_lock_irqsave(&io->endio_lock, flags);
   838                  if (!(io->status == BLK_STS_DM_REQUEUE && 
__noflush_suspending(md)))
   839                          io->status = error;
   840                  spin_unlock_irqrestore(&io->endio_lock, flags);
   841          }
   842  
   843          if (atomic_dec_and_test(&io->io_count)) {
   844                  if (io->status == BLK_STS_DM_REQUEUE) {
   845                          /*
   846                           * Target requested pushing back the I/O.
   847                           */
   848                          spin_lock_irqsave(&md->deferred_lock, flags);
   849                          if (__noflush_suspending(md) &&
 > 850                              !WARN_ON_ONCE(dm_is_zone_write(md, bio)))
   851                                  /* NOTE early return due to 
BLK_STS_DM_REQUEUE below */
   852                                  bio_list_add_head(&md->deferred, 
io->orig_bio);
   853                          else
   854                                  /*
   855                                   * noflush suspend was interrupted or 
this is
   856                                   * a write to a zoned target.
   857                                   */
   858                                  io->status = BLK_STS_IOERR;
   859                          spin_unlock_irqrestore(&md->deferred_lock, 
flags);
   860                  }
   861  
   862                  io_error = io->status;
   863                  bio = io->orig_bio;
   864                  end_io_acct(io);
   865                  free_io(md, io);
   866  
   867                  if (io_error == BLK_STS_DM_REQUEUE)
   868                          return;
   869  
   870                  if ((bio->bi_opf & REQ_PREFLUSH) && 
bio->bi_iter.bi_size) {
   871                          /*
   872                           * Preflush done for flush with data, reissue
   873                           * without REQ_PREFLUSH.
   874                           */
   875                          bio->bi_opf &= ~REQ_PREFLUSH;
   876                          queue_io(md, bio);
   877                  } else {
   878                          /* done with normal IO or empty flush */
   879                          if (io_error)
   880                                  bio->bi_status = io_error;
   881                          bio_endio(bio);
   882                  }
   883          }
   884  }
   885  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

--
dm-devel mailing list
[email protected]
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to