Linux-CIFS Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH] cifs/cifs_debug: convert to list_for_each_entry()
@ 2020-02-23  4:10 qiwuchen55
  2020-02-23  6:51 ` kbuild test robot
  0 siblings, 1 reply; 2+ messages in thread
From: qiwuchen55 @ 2020-02-23  4:10 UTC (permalink / raw)
  To: sfrench; +Cc: linux-cifs, samba-technical, chenqiwu

From: chenqiwu <chenqiwu@xiaomi.com>

Use list_for_each() instead of list_for_each_entry()
to simplify code.

Signed-off-by: chenqiwu <chenqiwu@xiaomi.com>
---
 fs/cifs/cifs_debug.c | 69 +++++++++++++++-------------------------------------
 1 file changed, 19 insertions(+), 50 deletions(-)

diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 276e4b5..0ab6e53 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -48,7 +48,6 @@ void cifs_dump_detail(void *buf, struct TCP_Server_Info *server)
 void cifs_dump_mids(struct TCP_Server_Info *server)
 {
 #ifdef CONFIG_CIFS_DEBUG2
-	struct list_head *tmp;
 	struct mid_q_entry *mid_entry;
 
 	if (server == NULL)
@@ -56,8 +55,7 @@ void cifs_dump_mids(struct TCP_Server_Info *server)
 
 	cifs_dbg(VFS, "Dump pending requests:\n");
 	spin_lock(&GlobalMid_Lock);
-	list_for_each(tmp, &server->pending_mid_q) {
-		mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
+	list_for_each_entry(mid_entry, &server->pending_mid_q, qhead) {
 		cifs_dbg(VFS, "State: %d Cmd: %d Pid: %d Cbdata: %p Mid %llu\n",
 			 mid_entry->mid_state,
 			 le16_to_cpu(mid_entry->command),
@@ -163,7 +161,6 @@ static void cifs_debug_tcon(struct seq_file *m, struct cifs_tcon *tcon)
 
 static int cifs_debug_files_proc_show(struct seq_file *m, void *v)
 {
-	struct list_head *stmp, *tmp, *tmp1, *tmp2;
 	struct TCP_Server_Info *server;
 	struct cifs_ses *ses;
 	struct cifs_tcon *tcon;
@@ -178,17 +175,12 @@ static int cifs_debug_files_proc_show(struct seq_file *m, void *v)
 	seq_printf(m, " <filename>\n");
 #endif /* CIFS_DEBUG2 */
 	spin_lock(&cifs_tcp_ses_lock);
-	list_for_each(stmp, &cifs_tcp_ses_list) {
-		server = list_entry(stmp, struct TCP_Server_Info,
-				    tcp_ses_list);
-		list_for_each(tmp, &server->smb_ses_list) {
-			ses = list_entry(tmp, struct cifs_ses, smb_ses_list);
-			list_for_each(tmp1, &ses->tcon_list) {
-				tcon = list_entry(tmp1, struct cifs_tcon, tcon_list);
+	list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
+		list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
+			list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
 				spin_lock(&tcon->open_file_lock);
-				list_for_each(tmp2, &tcon->openFileList) {
-					cfile = list_entry(tmp2, struct cifsFileInfo,
-						     tlist);
+				list_for_each_entry(cfile, &tcon->openFileList,
+						    tlist) {
 					seq_printf(m,
 						"0x%x 0x%llx 0x%x %d %d %d %s",
 						tcon->tid,
@@ -215,7 +207,6 @@ static int cifs_debug_files_proc_show(struct seq_file *m, void *v)
 
 static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
 {
-	struct list_head *tmp1, *tmp2, *tmp3;
 	struct mid_q_entry *mid_entry;
 	struct TCP_Server_Info *server;
 	struct cifs_ses *ses;
@@ -269,9 +260,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
 
 	i = 0;
 	spin_lock(&cifs_tcp_ses_lock);
-	list_for_each(tmp1, &cifs_tcp_ses_list) {
-		server = list_entry(tmp1, struct TCP_Server_Info,
-				    tcp_ses_list);
+	list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
 
 #ifdef CONFIG_CIFS_SMB_DIRECT
 		if (!server->rdma)
@@ -355,9 +344,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
 			seq_printf(m, " posix");
 
 		i++;
-		list_for_each(tmp2, &server->smb_ses_list) {
-			ses = list_entry(tmp2, struct cifs_ses,
-					 smb_ses_list);
+		list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
 			if ((ses->serverDomain == NULL) ||
 				(ses->serverOS == NULL) ||
 				(ses->serverNOS == NULL)) {
@@ -413,9 +400,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
 			else
 				seq_puts(m, "none\n");
 
-			list_for_each(tmp3, &ses->tcon_list) {
-				tcon = list_entry(tmp3, struct cifs_tcon,
-						  tcon_list);
+			list_for_each(tcon, &ses->tcon_list, tcon_list) {
 				++j;
 				seq_printf(m, "\n\t%d) ", j);
 				cifs_debug_tcon(m, tcon);
@@ -424,9 +409,8 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
 			seq_puts(m, "\n\tMIDs:\n");
 
 			spin_lock(&GlobalMid_Lock);
-			list_for_each(tmp3, &server->pending_mid_q) {
-				mid_entry = list_entry(tmp3, struct mid_q_entry,
-					qhead);
+			list_for_each_entry(mid_entry, &server->pending_mid_q,
+					    qhead) {
 				seq_printf(m, "\tState: %d com: %d pid:"
 					      " %d cbdata: %p mid %llu\n",
 					      mid_entry->mid_state,
@@ -465,7 +449,6 @@ static ssize_t cifs_stats_proc_write(struct file *file,
 {
 	bool bv;
 	int rc;
-	struct list_head *tmp1, *tmp2, *tmp3;
 	struct TCP_Server_Info *server;
 	struct cifs_ses *ses;
 	struct cifs_tcon *tcon;
@@ -486,9 +469,7 @@ static ssize_t cifs_stats_proc_write(struct file *file,
 		GlobalCurrentXid = 0;
 		spin_unlock(&GlobalMid_Lock);
 		spin_lock(&cifs_tcp_ses_lock);
-		list_for_each(tmp1, &cifs_tcp_ses_list) {
-			server = list_entry(tmp1, struct TCP_Server_Info,
-					    tcp_ses_list);
+		list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
 			server->max_in_flight = 0;
 #ifdef CONFIG_CIFS_STATS2
 			for (i = 0; i < NUMBER_OF_SMB2_COMMANDS; i++) {
@@ -499,13 +480,10 @@ static ssize_t cifs_stats_proc_write(struct file *file,
 				server->fastest_cmd[0] = 0;
 			}
 #endif /* CONFIG_CIFS_STATS2 */
-			list_for_each(tmp2, &server->smb_ses_list) {
-				ses = list_entry(tmp2, struct cifs_ses,
-						 smb_ses_list);
-				list_for_each(tmp3, &ses->tcon_list) {
-					tcon = list_entry(tmp3,
-							  struct cifs_tcon,
-							  tcon_list);
+			list_for_each_entry(ses, &server->smb_ses_list,
+					    smb_ses_list) {
+				list_for_each_entry(tcon, &ses->tcon_list,
+						    tcon_list) {
 					atomic_set(&tcon->num_smbs_sent, 0);
 					spin_lock(&tcon->stat_lock);
 					tcon->bytes_read = 0;
@@ -530,7 +508,6 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v)
 #ifdef CONFIG_CIFS_STATS2
 	int j;
 #endif /* STATS2 */
-	struct list_head *tmp1, *tmp2, *tmp3;
 	struct TCP_Server_Info *server;
 	struct cifs_ses *ses;
 	struct cifs_tcon *tcon;
@@ -561,9 +538,7 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v)
 
 	i = 0;
 	spin_lock(&cifs_tcp_ses_lock);
-	list_for_each(tmp1, &cifs_tcp_ses_list) {
-		server = list_entry(tmp1, struct TCP_Server_Info,
-				    tcp_ses_list);
+	list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
 		seq_printf(m, "\nMax requests in flight: %d", server->max_in_flight);
 #ifdef CONFIG_CIFS_STATS2
 		seq_puts(m, "\nTotal time spent processing by command. Time ");
@@ -582,15 +557,9 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v)
 					atomic_read(&server->smb2slowcmd[j]),
 					server->hostname, j);
 #endif /* STATS2 */
-		list_for_each(tmp2, &server->smb_ses_list) {
-			ses = list_entry(tmp2, struct cifs_ses,
-					 smb_ses_list);
-			list_for_each(tmp3, &ses->tcon_list) {
-				tcon = list_entry(tmp3,
-						  struct cifs_tcon,
-						  tcon_list);
+		list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
+			list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
 				i++;
-				seq_printf(m, "\n%d) %s", i, tcon->treeName);
 				if (tcon->need_reconnect)
 					seq_puts(m, "\tDISCONNECTED ");
 				seq_printf(m, "\nSMBs: %d",
-- 
1.9.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] cifs/cifs_debug: convert to list_for_each_entry()
  2020-02-23  4:10 [PATCH] cifs/cifs_debug: convert to list_for_each_entry() qiwuchen55
@ 2020-02-23  6:51 ` kbuild test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2020-02-23  6:51 UTC (permalink / raw)
  To: qiwuchen55; +Cc: kbuild-all, sfrench, linux-cifs, samba-technical, chenqiwu

[-- Attachment #1: Type: text/plain, Size: 11500 bytes --]

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@intel.com>

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@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37365 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, back to index

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-23  4:10 [PATCH] cifs/cifs_debug: convert to list_for_each_entry() qiwuchen55
2020-02-23  6:51 ` kbuild test robot

Linux-CIFS Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-cifs/0 linux-cifs/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-cifs linux-cifs/ https://lore.kernel.org/linux-cifs \
		linux-cifs@vger.kernel.org
	public-inbox-index linux-cifs

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-cifs


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git