tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git misc
head:   16a628faa63c8149d9a8f433e5c6548f6cff98e4
commit: 2439bec3bf084ab6cbc69a66797a4612042be6ca [327/330] scsi: storvsc: 
Spread interrupts when picking a channel for I/O requests
config: x86_64-randconfig-s1-02071932 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
        git checkout 2439bec3bf084ab6cbc69a66797a4612042be6ca
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers//scsi/storvsc_drv.c: In function 'storvsc_do_io':
>> drivers//scsi/storvsc_drv.c:1313:4: error: implicit declaration of function 
>> 'for_each_cpu_wrap' [-Werror=implicit-function-declaration]
       for_each_cpu_wrap(tgt_cpu, &alloced_mask,
       ^~~~~~~~~~~~~~~~~
   drivers//scsi/storvsc_drv.c:1314:40: error: expected ';' before '{' token
         outgoing_channel->target_cpu + 1) {
                                           ^
   cc1: some warnings being treated as errors

vim +/for_each_cpu_wrap +1313 drivers//scsi/storvsc_drv.c

  1280  
  1281  
  1282  static int storvsc_do_io(struct hv_device *device,
  1283                           struct storvsc_cmd_request *request, u16 q_num)
  1284  {
  1285          struct storvsc_device *stor_device;
  1286          struct vstor_packet *vstor_packet;
  1287          struct vmbus_channel *outgoing_channel;
  1288          int ret = 0;
  1289          struct cpumask alloced_mask;
  1290          int tgt_cpu;
  1291  
  1292          vstor_packet = &request->vstor_packet;
  1293          stor_device = get_out_stor_device(device);
  1294  
  1295          if (!stor_device)
  1296                  return -ENODEV;
  1297  
  1298  
  1299          request->device  = device;
  1300          /*
  1301           * Select an an appropriate channel to send the request out.
  1302           */
  1303  
  1304          if (stor_device->stor_chns[q_num] != NULL) {
  1305                  outgoing_channel = stor_device->stor_chns[q_num];
  1306                  if (outgoing_channel->target_cpu == smp_processor_id()) 
{
  1307                          /*
  1308                           * Ideally, we want to pick a different channel 
if
  1309                           * available on the same NUMA node.
  1310                           */
  1311                          cpumask_and(&alloced_mask, 
&stor_device->alloced_cpus,
  1312                                      
cpumask_of_node(cpu_to_node(q_num)));
> 1313                          for_each_cpu_wrap(tgt_cpu, &alloced_mask,
  1314                                          outgoing_channel->target_cpu + 
1) {
  1315                                  if (tgt_cpu != 
outgoing_channel->target_cpu) {
  1316                                          outgoing_channel =
  1317                                          stor_device->stor_chns[tgt_cpu];
  1318                                          break;
  1319                                  }
  1320                          }
  1321                  }
  1322          } else {
  1323                  outgoing_channel = get_og_chn(stor_device, q_num);
  1324          }
  1325  
  1326  
  1327          vstor_packet->flags |= REQUEST_COMPLETION_FLAG;
  1328  
  1329          vstor_packet->vm_srb.length = (sizeof(struct vmscsi_request) -
  1330                                          vmscsi_size_delta);
  1331  
  1332  
  1333          vstor_packet->vm_srb.sense_info_length = sense_buffer_size;
  1334  
  1335  
  1336          vstor_packet->vm_srb.data_transfer_length =
  1337          request->payload->range.len;
  1338  
  1339          vstor_packet->operation = VSTOR_OPERATION_EXECUTE_SRB;
  1340  
  1341          if (request->payload->range.len) {
  1342  
  1343                  ret = vmbus_sendpacket_mpb_desc(outgoing_channel,
  1344                                  request->payload, request->payload_sz,
  1345                                  vstor_packet,
  1346                                  (sizeof(struct vstor_packet) -
  1347                                  vmscsi_size_delta),
  1348                                  (unsigned long)request);
  1349          } else {
  1350                  ret = vmbus_sendpacket(outgoing_channel, vstor_packet,
  1351                                 (sizeof(struct vstor_packet) -
  1352                                  vmscsi_size_delta),
  1353                                 (unsigned long)request,
  1354                                 VM_PKT_DATA_INBAND,
  1355                                 
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
  1356          }
  1357  
  1358          if (ret != 0)
  1359                  return ret;
  1360  
  1361          atomic_inc(&stor_device->num_outstanding_req);
  1362  
  1363          return ret;
  1364  }
  1365  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to