tree:   
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git 
for-next
head:   e820ba87f9d15399fa565ceba4a92b902c879d29
commit: fdac9de80c2e66d6df999ac810382c66b0cb2830 [9/10] dm: update target 
status functions to support IMA measurement
config: x86_64-randconfig-a011-20210720 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
c781eb153bfbd1b52b03efe34f56bbeccbb8aba6)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?id=fdac9de80c2e66d6df999ac810382c66b0cb2830
        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 fdac9de80c2e66d6df999ac810382c66b0cb2830
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

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-raid.c:3686:39: warning: variable 'recovery' is uninitialized 
>> when used here [-Wuninitialized]
                   state = decipher_sync_action(mddev, recovery);
                                                       ^~~~~~~~
   drivers/md/dm-raid.c:3517:24: note: initialize the variable 'recovery' to 
silence this warning
           unsigned long recovery;
                                 ^
                                  = 0
   1 warning generated.


vim +/recovery +3686 drivers/md/dm-raid.c

  3509  
  3510  static void raid_status(struct dm_target *ti, status_type_t type,
  3511                          unsigned int status_flags, char *result, 
unsigned int maxlen)
  3512  {
  3513          struct raid_set *rs = ti->private;
  3514          struct mddev *mddev = &rs->md;
  3515          struct r5conf *conf = mddev->private;
  3516          int i, max_nr_stripes = conf ? conf->max_nr_stripes : 0;
  3517          unsigned long recovery;
  3518          unsigned int raid_param_cnt = 1; /* at least 1 for chunksize */
  3519          unsigned int sz = 0;
  3520          unsigned int rebuild_writemostly_count = 0;
  3521          sector_t progress, resync_max_sectors, resync_mismatches;
  3522          enum sync_state state;
  3523          struct raid_type *rt;
  3524  
  3525          switch (type) {
  3526          case STATUSTYPE_INFO:
  3527                  /* *Should* always succeed */
  3528                  rt = get_raid_type_by_ll(mddev->new_level, 
mddev->new_layout);
  3529                  if (!rt)
  3530                          return;
  3531  
  3532                  DMEMIT("%s %d ", rt->name, mddev->raid_disks);
  3533  
  3534                  /* Access most recent mddev properties for status 
output */
  3535                  smp_rmb();
  3536                  /* Get sensible max sectors even if raid set not yet 
started */
  3537                  resync_max_sectors = test_bit(RT_FLAG_RS_PRERESUMED, 
&rs->runtime_flags) ?
  3538                                        mddev->resync_max_sectors : 
mddev->dev_sectors;
  3539                  recovery = rs->md.recovery;
  3540                  state = decipher_sync_action(mddev, recovery);
  3541                  progress = rs_get_progress(rs, recovery, state, 
resync_max_sectors);
  3542                  resync_mismatches = (mddev->last_sync_action && 
!strcasecmp(mddev->last_sync_action, "check")) ?
  3543                                      
atomic64_read(&mddev->resync_mismatches) : 0;
  3544  
  3545                  /* HM FIXME: do we want another state char for raid0? 
It shows 'D'/'A'/'-' now */
  3546                  for (i = 0; i < rs->raid_disks; i++)
  3547                          DMEMIT(__raid_dev_status(rs, &rs->dev[i].rdev));
  3548  
  3549                  /*
  3550                   * In-sync/Reshape ratio:
  3551                   *  The in-sync ratio shows the progress of:
  3552                   *   - Initializing the raid set
  3553                   *   - Rebuilding a subset of devices of the raid set
  3554                   *  The user can distinguish between the two by 
referring
  3555                   *  to the status characters.
  3556                   *
  3557                   *  The reshape ratio shows the progress of
  3558                   *  changing the raid layout or the number of
  3559                   *  disks of a raid set
  3560                   */
  3561                  DMEMIT(" %llu/%llu", (unsigned long long) progress,
  3562                                       (unsigned long long) 
resync_max_sectors);
  3563  
  3564                  /*
  3565                   * v1.5.0+:
  3566                   *
  3567                   * Sync action:
  3568                   *   See 
Documentation/admin-guide/device-mapper/dm-raid.rst for
  3569                   *   information on each of these states.
  3570                   */
  3571                  DMEMIT(" %s", sync_str(state));
  3572  
  3573                  /*
  3574                   * v1.5.0+:
  3575                   *
  3576                   * resync_mismatches/mismatch_cnt
  3577                   *   This field shows the number of discrepancies found 
when
  3578                   *   performing a "check" of the raid set.
  3579                   */
  3580                  DMEMIT(" %llu", (unsigned long long) resync_mismatches);
  3581  
  3582                  /*
  3583                   * v1.9.0+:
  3584                   *
  3585                   * data_offset (needed for out of space reshaping)
  3586                   *   This field shows the data offset into the data
  3587                   *   image LV where the first stripes data starts.
  3588                   *
  3589                   * We keep data_offset equal on all raid disks of the 
set,
  3590                   * so retrieving it from the first raid disk is 
sufficient.
  3591                   */
  3592                  DMEMIT(" %llu", (unsigned long long) 
rs->dev[0].rdev.data_offset);
  3593  
  3594                  /*
  3595                   * v1.10.0+:
  3596                   */
  3597                  DMEMIT(" %s", test_bit(__CTR_FLAG_JOURNAL_DEV, 
&rs->ctr_flags) ?
  3598                                __raid_dev_status(rs, 
&rs->journal_dev.rdev) : "-");
  3599                  break;
  3600  
  3601          case STATUSTYPE_TABLE:
  3602                  /* Report the table line string you would use to 
construct this raid set */
  3603  
  3604                  /*
  3605                   * Count any rebuild or writemostly argument pairs and 
subtract the
  3606                   * hweight count being added below of any rebuild and 
writemostly ctr flags.
  3607                   */
  3608                  for (i = 0; i < rs->raid_disks; i++) {
  3609                          rebuild_writemostly_count += (test_bit(i, (void 
*) rs->rebuild_disks) ? 2 : 0) +
  3610                                                       
(test_bit(WriteMostly, &rs->dev[i].rdev.flags) ? 2 : 0);
  3611                  }
  3612                  rebuild_writemostly_count -= 
(test_bit(__CTR_FLAG_REBUILD, &rs->ctr_flags) ? 2 : 0) +
  3613                                               
(test_bit(__CTR_FLAG_WRITE_MOSTLY, &rs->ctr_flags) ? 2 : 0);
  3614                  /* Calculate raid parameter count based on ^ 
rebuild/writemostly argument counts and ctr flags set. */
  3615                  raid_param_cnt += rebuild_writemostly_count +
  3616                                    hweight32(rs->ctr_flags & 
CTR_FLAG_OPTIONS_NO_ARGS) +
  3617                                    hweight32(rs->ctr_flags & 
CTR_FLAG_OPTIONS_ONE_ARG) * 2;
  3618                  /* Emit table line */
  3619                  /* This has to be in the documented order for 
userspace! */
  3620                  DMEMIT("%s %u %u", rs->raid_type->name, raid_param_cnt, 
mddev->new_chunk_sectors);
  3621                  if (test_bit(__CTR_FLAG_SYNC, &rs->ctr_flags))
  3622                          DMEMIT(" %s", 
dm_raid_arg_name_by_flag(CTR_FLAG_SYNC));
  3623                  if (test_bit(__CTR_FLAG_NOSYNC, &rs->ctr_flags))
  3624                          DMEMIT(" %s", 
dm_raid_arg_name_by_flag(CTR_FLAG_NOSYNC));
  3625                  if (test_bit(__CTR_FLAG_REBUILD, &rs->ctr_flags))
  3626                          for (i = 0; i < rs->raid_disks; i++)
  3627                                  if (test_bit(i, (void *) 
rs->rebuild_disks))
  3628                                          DMEMIT(" %s %u", 
dm_raid_arg_name_by_flag(CTR_FLAG_REBUILD), i);
  3629                  if (test_bit(__CTR_FLAG_DAEMON_SLEEP, &rs->ctr_flags))
  3630                          DMEMIT(" %s %lu", 
dm_raid_arg_name_by_flag(CTR_FLAG_DAEMON_SLEEP),
  3631                                            
mddev->bitmap_info.daemon_sleep);
  3632                  if (test_bit(__CTR_FLAG_MIN_RECOVERY_RATE, 
&rs->ctr_flags))
  3633                          DMEMIT(" %s %d", 
dm_raid_arg_name_by_flag(CTR_FLAG_MIN_RECOVERY_RATE),
  3634                                           mddev->sync_speed_min);
  3635                  if (test_bit(__CTR_FLAG_MAX_RECOVERY_RATE, 
&rs->ctr_flags))
  3636                          DMEMIT(" %s %d", 
dm_raid_arg_name_by_flag(CTR_FLAG_MAX_RECOVERY_RATE),
  3637                                           mddev->sync_speed_max);
  3638                  if (test_bit(__CTR_FLAG_WRITE_MOSTLY, &rs->ctr_flags))
  3639                          for (i = 0; i < rs->raid_disks; i++)
  3640                                  if (test_bit(WriteMostly, 
&rs->dev[i].rdev.flags))
  3641                                          DMEMIT(" %s %d", 
dm_raid_arg_name_by_flag(CTR_FLAG_WRITE_MOSTLY),
  3642                                                 
rs->dev[i].rdev.raid_disk);
  3643                  if (test_bit(__CTR_FLAG_MAX_WRITE_BEHIND, 
&rs->ctr_flags))
  3644                          DMEMIT(" %s %lu", 
dm_raid_arg_name_by_flag(CTR_FLAG_MAX_WRITE_BEHIND),
  3645                                            
mddev->bitmap_info.max_write_behind);
  3646                  if (test_bit(__CTR_FLAG_STRIPE_CACHE, &rs->ctr_flags))
  3647                          DMEMIT(" %s %d", 
dm_raid_arg_name_by_flag(CTR_FLAG_STRIPE_CACHE),
  3648                                           max_nr_stripes);
  3649                  if (test_bit(__CTR_FLAG_REGION_SIZE, &rs->ctr_flags))
  3650                          DMEMIT(" %s %llu", 
dm_raid_arg_name_by_flag(CTR_FLAG_REGION_SIZE),
  3651                                             (unsigned long long) 
to_sector(mddev->bitmap_info.chunksize));
  3652                  if (test_bit(__CTR_FLAG_RAID10_COPIES, &rs->ctr_flags))
  3653                          DMEMIT(" %s %d", 
dm_raid_arg_name_by_flag(CTR_FLAG_RAID10_COPIES),
  3654                                           
raid10_md_layout_to_copies(mddev->layout));
  3655                  if (test_bit(__CTR_FLAG_RAID10_FORMAT, &rs->ctr_flags))
  3656                          DMEMIT(" %s %s", 
dm_raid_arg_name_by_flag(CTR_FLAG_RAID10_FORMAT),
  3657                                           
raid10_md_layout_to_format(mddev->layout));
  3658                  if (test_bit(__CTR_FLAG_DELTA_DISKS, &rs->ctr_flags))
  3659                          DMEMIT(" %s %d", 
dm_raid_arg_name_by_flag(CTR_FLAG_DELTA_DISKS),
  3660                                           max(rs->delta_disks, 
mddev->delta_disks));
  3661                  if (test_bit(__CTR_FLAG_DATA_OFFSET, &rs->ctr_flags))
  3662                          DMEMIT(" %s %llu", 
dm_raid_arg_name_by_flag(CTR_FLAG_DATA_OFFSET),
  3663                                             (unsigned long long) 
rs->data_offset);
  3664                  if (test_bit(__CTR_FLAG_JOURNAL_DEV, &rs->ctr_flags))
  3665                          DMEMIT(" %s %s", 
dm_raid_arg_name_by_flag(CTR_FLAG_JOURNAL_DEV),
  3666                                          
__get_dev_name(rs->journal_dev.dev));
  3667                  if (test_bit(__CTR_FLAG_JOURNAL_MODE, &rs->ctr_flags))
  3668                          DMEMIT(" %s %s", 
dm_raid_arg_name_by_flag(CTR_FLAG_JOURNAL_MODE),
  3669                                           
md_journal_mode_to_dm_raid(rs->journal_dev.mode));
  3670                  DMEMIT(" %d", rs->raid_disks);
  3671                  for (i = 0; i < rs->raid_disks; i++)
  3672                          DMEMIT(" %s %s", 
__get_dev_name(rs->dev[i].meta_dev),
  3673                                           
__get_dev_name(rs->dev[i].data_dev));
  3674                  break;
  3675  
  3676          case STATUSTYPE_IMA:
  3677                  rt = get_raid_type_by_ll(mddev->new_level, 
mddev->new_layout);
  3678                  if (!rt)
  3679                          return;
  3680  
  3681                  DMEMIT_TARGET_NAME_VERSION(ti->type);
  3682                  DMEMIT(",raid_type=%s,raid_disks=%d", rt->name, 
mddev->raid_disks);
  3683  
  3684                  /* Access most recent mddev properties for status 
output */
  3685                  smp_rmb();
> 3686                  state = decipher_sync_action(mddev, recovery);
  3687                  DMEMIT(",raid_state=%s", sync_str(state));
  3688  
  3689                  for (i = 0; i < rs->raid_disks; i++) {
  3690                          DMEMIT(",raid_device_%d_status=", i);
  3691                          DMEMIT(__raid_dev_status(rs, &rs->dev[i].rdev));
  3692                  }
  3693  
  3694                  if (rt_is_raid456(rt)) {
  3695                          DMEMIT(",journal_dev_mode=");
  3696                          switch (rs->journal_dev.mode) {
  3697                          case R5C_JOURNAL_MODE_WRITE_THROUGH:
  3698                                  DMEMIT("%s",
  3699                                         
_raid456_journal_mode[R5C_JOURNAL_MODE_WRITE_THROUGH].param);
  3700                                  break;
  3701                          case R5C_JOURNAL_MODE_WRITE_BACK:
  3702                                  DMEMIT("%s",
  3703                                         
_raid456_journal_mode[R5C_JOURNAL_MODE_WRITE_BACK].param);
  3704                                  break;
  3705                          default:
  3706                                  DMEMIT("invalid");
  3707                                  break;
  3708                          }
  3709                  }
  3710                  DMEMIT(";");
  3711                  break;
  3712          }
  3713  }
  3714  

---
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