Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

cifs: call helper functions for marking channels for reconnect

cifs_mark_tcp_ses_conns_for_reconnect helper function is now
meant to be used by any of the threads to mark a channel
(or all the channels) for reconnect.

Replace all such manual changes to tcpStatus to use this
helper function, which takes care that the right channels,
smb sessions and tcons are marked for reconnect.

Also includes one line minor change
Reported-by: kernel test robot <lkp@intel.com>

Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>

authored by

Shyam Prasad N and committed by
Steve French
52492ff5 a81da65f

+6 -11
+3 -3
fs/cifs/cifs_swn.c
··· 396 396 switch (state) { 397 397 case CIFS_SWN_RESOURCE_STATE_UNAVAILABLE: 398 398 cifs_dbg(FYI, "%s: resource name '%s' become unavailable\n", __func__, name); 399 - cifs_reconnect(swnreg->tcon->ses->server, true); 399 + cifs_mark_tcp_ses_conns_for_reconnect(swnreg->tcon->ses->server, true); 400 400 break; 401 401 case CIFS_SWN_RESOURCE_STATE_AVAILABLE: 402 402 cifs_dbg(FYI, "%s: resource name '%s' become available\n", __func__, name); 403 - cifs_reconnect(swnreg->tcon->ses->server, true); 403 + cifs_mark_tcp_ses_conns_for_reconnect(swnreg->tcon->ses->server, true); 404 404 break; 405 405 case CIFS_SWN_RESOURCE_STATE_UNKNOWN: 406 406 cifs_dbg(FYI, "%s: resource name '%s' changed to unknown state\n", __func__, name); ··· 498 498 goto unlock; 499 499 } 500 500 501 - cifs_reconnect(tcon->ses->server, false); 501 + cifs_mark_tcp_ses_conns_for_reconnect(tcon->ses->server, false); 502 502 503 503 unlock: 504 504 mutex_unlock(&tcon->ses->server->srv_mutex);
+1 -1
fs/cifs/dfs_cache.c
··· 1355 1355 } 1356 1356 1357 1357 cifs_dbg(FYI, "%s: no cached or matched targets. mark dfs share for reconnect.\n", __func__); 1358 - cifs_reconnect(tcon->ses->server, true); 1358 + cifs_mark_tcp_ses_conns_for_reconnect(tcon->ses->server, true); 1359 1359 } 1360 1360 1361 1361 /* Refresh dfs referral of tcon and mark it for reconnect if needed */
+1 -3
fs/cifs/smb1ops.c
··· 228 228 spin_unlock(&GlobalMid_Lock); 229 229 230 230 if (reconnect) { 231 - spin_lock(&cifs_tcp_ses_lock); 232 - server->tcpStatus = CifsNeedReconnect; 233 - spin_unlock(&cifs_tcp_ses_lock); 231 + cifs_mark_tcp_ses_conns_for_reconnect(server, false); 234 232 } 235 233 236 234 return mid;
+1 -4
fs/cifs/transport.c
··· 430 430 * be taken as the remainder of this one. We need to kill the 431 431 * socket so the server throws away the partial SMB 432 432 */ 433 - spin_lock(&cifs_tcp_ses_lock); 434 - if (server->tcpStatus != CifsExiting) 435 - server->tcpStatus = CifsNeedReconnect; 436 - spin_unlock(&cifs_tcp_ses_lock); 433 + cifs_mark_tcp_ses_conns_for_reconnect(server, false); 437 434 trace_smb3_partial_send_reconnect(server->CurrentMid, 438 435 server->conn_id, server->hostname); 439 436 }