Re: [PATCH] cifs/cifs_debug: convert to list_for_each_entry()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on cifs/for-next]
[also build test ERROR on v5.6-rc2 next-20200221]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/qiwuchen55-gmail-com/cifs-cifs_debug-convert-to-list_for_each_entry/20200223-121120
base:   git://git.samba.org/sfrench/cifs-2.6.git for-next
config: x86_64-randconfig-s2-20200223 (attached as .config)
compiler: gcc-6 (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

   fs/cifs/cifs_debug.c: In function 'cifs_debug_data_proc_show':
   fs/cifs/cifs_debug.c:403:50: error: macro "list_for_each" passed 3 arguments, but takes just 2
       list_for_each(tcon, &ses->tcon_list, tcon_list) {
                                                     ^
>> fs/cifs/cifs_debug.c:403:4: error: 'list_for_each' undeclared (first use in this function)
       list_for_each(tcon, &ses->tcon_list, tcon_list) {
       ^~~~~~~~~~~~~
   fs/cifs/cifs_debug.c:403:4: note: each undeclared identifier is reported only once for each function it appears in
   fs/cifs/cifs_debug.c:403:52: error: expected ';' before '{' token
       list_for_each(tcon, &ses->tcon_list, tcon_list) {
                                                       ^
   fs/cifs/cifs_debug.c:213:20: warning: unused variable 'tcon' [-Wunused-variable]
     struct cifs_tcon *tcon;
                       ^~~~

vim +/list_for_each +403 fs/cifs/cifs_debug.c

   207	
   208	static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
   209	{
   210		struct mid_q_entry *mid_entry;
   211		struct TCP_Server_Info *server;
   212		struct cifs_ses *ses;
   213		struct cifs_tcon *tcon;
   214		int i, j;
   215	
   216		seq_puts(m,
   217			    "Display Internal CIFS Data Structures for Debugging\n"
   218			    "---------------------------------------------------\n");
   219		seq_printf(m, "CIFS Version %s\n", CIFS_VERSION);
   220		seq_printf(m, "Features:");
   221	#ifdef CONFIG_CIFS_DFS_UPCALL
   222		seq_printf(m, " DFS");
   223	#endif
   224	#ifdef CONFIG_CIFS_FSCACHE
   225		seq_printf(m, ",FSCACHE");
   226	#endif
   227	#ifdef CONFIG_CIFS_SMB_DIRECT
   228		seq_printf(m, ",SMB_DIRECT");
   229	#endif
   230	#ifdef CONFIG_CIFS_STATS2
   231		seq_printf(m, ",STATS2");
   232	#else
   233		seq_printf(m, ",STATS");
   234	#endif
   235	#ifdef CONFIG_CIFS_DEBUG2
   236		seq_printf(m, ",DEBUG2");
   237	#elif defined(CONFIG_CIFS_DEBUG)
   238		seq_printf(m, ",DEBUG");
   239	#endif
   240	#ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY
   241		seq_printf(m, ",ALLOW_INSECURE_LEGACY");
   242	#endif
   243	#ifdef CONFIG_CIFS_WEAK_PW_HASH
   244		seq_printf(m, ",WEAK_PW_HASH");
   245	#endif
   246	#ifdef CONFIG_CIFS_POSIX
   247		seq_printf(m, ",CIFS_POSIX");
   248	#endif
   249	#ifdef CONFIG_CIFS_UPCALL
   250		seq_printf(m, ",UPCALL(SPNEGO)");
   251	#endif
   252	#ifdef CONFIG_CIFS_XATTR
   253		seq_printf(m, ",XATTR");
   254	#endif
   255		seq_printf(m, ",ACL");
   256		seq_putc(m, '\n');
   257		seq_printf(m, "CIFSMaxBufSize: %d\n", CIFSMaxBufSize);
   258		seq_printf(m, "Active VFS Requests: %d\n", GlobalTotalActiveXid);
   259		seq_printf(m, "Servers:");
   260	
   261		i = 0;
   262		spin_lock(&cifs_tcp_ses_lock);
   263		list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
   264	
   265	#ifdef CONFIG_CIFS_SMB_DIRECT
   266			if (!server->rdma)
   267				goto skip_rdma;
   268	
   269			if (!server->smbd_conn) {
   270				seq_printf(m, "\nSMBDirect transport not available");
   271				goto skip_rdma;
   272			}
   273	
   274			seq_printf(m, "\nSMBDirect (in hex) protocol version: %x "
   275				"transport status: %x",
   276				server->smbd_conn->protocol,
   277				server->smbd_conn->transport_status);
   278			seq_printf(m, "\nConn receive_credit_max: %x "
   279				"send_credit_target: %x max_send_size: %x",
   280				server->smbd_conn->receive_credit_max,
   281				server->smbd_conn->send_credit_target,
   282				server->smbd_conn->max_send_size);
   283			seq_printf(m, "\nConn max_fragmented_recv_size: %x "
   284				"max_fragmented_send_size: %x max_receive_size:%x",
   285				server->smbd_conn->max_fragmented_recv_size,
   286				server->smbd_conn->max_fragmented_send_size,
   287				server->smbd_conn->max_receive_size);
   288			seq_printf(m, "\nConn keep_alive_interval: %x "
   289				"max_readwrite_size: %x rdma_readwrite_threshold: %x",
   290				server->smbd_conn->keep_alive_interval,
   291				server->smbd_conn->max_readwrite_size,
   292				server->smbd_conn->rdma_readwrite_threshold);
   293			seq_printf(m, "\nDebug count_get_receive_buffer: %x "
   294				"count_put_receive_buffer: %x count_send_empty: %x",
   295				server->smbd_conn->count_get_receive_buffer,
   296				server->smbd_conn->count_put_receive_buffer,
   297				server->smbd_conn->count_send_empty);
   298			seq_printf(m, "\nRead Queue count_reassembly_queue: %x "
   299				"count_enqueue_reassembly_queue: %x "
   300				"count_dequeue_reassembly_queue: %x "
   301				"fragment_reassembly_remaining: %x "
   302				"reassembly_data_length: %x "
   303				"reassembly_queue_length: %x",
   304				server->smbd_conn->count_reassembly_queue,
   305				server->smbd_conn->count_enqueue_reassembly_queue,
   306				server->smbd_conn->count_dequeue_reassembly_queue,
   307				server->smbd_conn->fragment_reassembly_remaining,
   308				server->smbd_conn->reassembly_data_length,
   309				server->smbd_conn->reassembly_queue_length);
   310			seq_printf(m, "\nCurrent Credits send_credits: %x "
   311				"receive_credits: %x receive_credit_target: %x",
   312				atomic_read(&server->smbd_conn->send_credits),
   313				atomic_read(&server->smbd_conn->receive_credits),
   314				server->smbd_conn->receive_credit_target);
   315			seq_printf(m, "\nPending send_pending: %x "
   316				"send_payload_pending: %x",
   317				atomic_read(&server->smbd_conn->send_pending),
   318				atomic_read(&server->smbd_conn->send_payload_pending));
   319			seq_printf(m, "\nReceive buffers count_receive_queue: %x "
   320				"count_empty_packet_queue: %x",
   321				server->smbd_conn->count_receive_queue,
   322				server->smbd_conn->count_empty_packet_queue);
   323			seq_printf(m, "\nMR responder_resources: %x "
   324				"max_frmr_depth: %x mr_type: %x",
   325				server->smbd_conn->responder_resources,
   326				server->smbd_conn->max_frmr_depth,
   327				server->smbd_conn->mr_type);
   328			seq_printf(m, "\nMR mr_ready_count: %x mr_used_count: %x",
   329				atomic_read(&server->smbd_conn->mr_ready_count),
   330				atomic_read(&server->smbd_conn->mr_used_count));
   331	skip_rdma:
   332	#endif
   333			seq_printf(m, "\nNumber of credits: %d Dialect 0x%x",
   334				server->credits,  server->dialect);
   335			if (server->compress_algorithm == SMB3_COMPRESS_LZNT1)
   336				seq_printf(m, " COMPRESS_LZNT1");
   337			else if (server->compress_algorithm == SMB3_COMPRESS_LZ77)
   338				seq_printf(m, " COMPRESS_LZ77");
   339			else if (server->compress_algorithm == SMB3_COMPRESS_LZ77_HUFF)
   340				seq_printf(m, " COMPRESS_LZ77_HUFF");
   341			if (server->sign)
   342				seq_printf(m, " signed");
   343			if (server->posix_ext_supported)
   344				seq_printf(m, " posix");
   345	
   346			i++;
   347			list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
   348				if ((ses->serverDomain == NULL) ||
   349					(ses->serverOS == NULL) ||
   350					(ses->serverNOS == NULL)) {
   351					seq_printf(m, "\n%d) Name: %s Uses: %d Capability: 0x%x\tSession Status: %d ",
   352						i, ses->serverName, ses->ses_count,
   353						ses->capabilities, ses->status);
   354					if (ses->session_flags & SMB2_SESSION_FLAG_IS_GUEST)
   355						seq_printf(m, "Guest\t");
   356					else if (ses->session_flags & SMB2_SESSION_FLAG_IS_NULL)
   357						seq_printf(m, "Anonymous\t");
   358				} else {
   359					seq_printf(m,
   360					    "\n%d) Name: %s  Domain: %s Uses: %d OS:"
   361					    " %s\n\tNOS: %s\tCapability: 0x%x\n\tSMB"
   362					    " session status: %d ",
   363					i, ses->serverName, ses->serverDomain,
   364					ses->ses_count, ses->serverOS, ses->serverNOS,
   365					ses->capabilities, ses->status);
   366				}
   367				if (server->rdma)
   368					seq_printf(m, "RDMA\n\t");
   369				seq_printf(m, "TCP status: %d Instance: %d\n\tLocal Users To "
   370					   "Server: %d SecMode: 0x%x Req On Wire: %d",
   371					   server->tcpStatus,
   372					   server->reconnect_instance,
   373					   server->srv_count,
   374					   server->sec_mode, in_flight(server));
   375	
   376				seq_printf(m, " In Send: %d In MaxReq Wait: %d",
   377					atomic_read(&server->in_send),
   378					atomic_read(&server->num_waiters));
   379	
   380				/* dump session id helpful for use with network trace */
   381				seq_printf(m, " SessionId: 0x%llx", ses->Suid);
   382				if (ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA)
   383					seq_puts(m, " encrypted");
   384				if (ses->sign)
   385					seq_puts(m, " signed");
   386	
   387				if (ses->chan_count > 1) {
   388					seq_printf(m, "\n\n\tExtra Channels: %zu\n",
   389						   ses->chan_count-1);
   390					for (j = 1; j < ses->chan_count; j++)
   391						cifs_dump_channel(m, j, &ses->chans[j]);
   392				}
   393	
   394				seq_puts(m, "\n\tShares:");
   395				j = 0;
   396	
   397				seq_printf(m, "\n\t%d) IPC: ", j);
   398				if (ses->tcon_ipc)
   399					cifs_debug_tcon(m, ses->tcon_ipc);
   400				else
   401					seq_puts(m, "none\n");
   402	
 > 403				list_for_each(tcon, &ses->tcon_list, tcon_list) {
   404					++j;
   405					seq_printf(m, "\n\t%d) ", j);
   406					cifs_debug_tcon(m, tcon);
   407				}
   408	
   409				seq_puts(m, "\n\tMIDs:\n");
   410	
   411				spin_lock(&GlobalMid_Lock);
   412				list_for_each_entry(mid_entry, &server->pending_mid_q,
   413						    qhead) {
   414					seq_printf(m, "\tState: %d com: %d pid:"
   415						      " %d cbdata: %p mid %llu\n",
   416						      mid_entry->mid_state,
   417						      le16_to_cpu(mid_entry->command),
   418						      mid_entry->pid,
   419						      mid_entry->callback_data,
   420						      mid_entry->mid);
   421				}
   422				spin_unlock(&GlobalMid_Lock);
   423	
   424				spin_lock(&ses->iface_lock);
   425				if (ses->iface_count)
   426					seq_printf(m, "\n\tServer interfaces: %zu\n",
   427						   ses->iface_count);
   428				for (j = 0; j < ses->iface_count; j++) {
   429					struct cifs_server_iface *iface;
   430	
   431					iface = &ses->iface_list[j];
   432					seq_printf(m, "\t%d)", j);
   433					cifs_dump_iface(m, iface);
   434					if (is_ses_using_iface(ses, iface))
   435						seq_puts(m, "\t\t[CONNECTED]\n");
   436				}
   437				spin_unlock(&ses->iface_lock);
   438			}
   439		}
   440		spin_unlock(&cifs_tcp_ses_lock);
   441		seq_putc(m, '\n');
   442	
   443		/* BB add code to dump additional info such as TCP session info now */
   444		return 0;
   445	}
   446	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux