2017-04-07 4:29 GMT-07:00 Germano Percossi <germano.percossi@xxxxxxxxxx>: > In case of error, smb2_reconnect_server reschedule itself > with a delay, to avoid being too aggressive. > > Signed-off-by: Germano Percossi <germano.percossi@xxxxxxxxxx> > --- > fs/cifs/smb2pdu.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c > index efe167c..17af75a 100644 > --- a/fs/cifs/smb2pdu.c > +++ b/fs/cifs/smb2pdu.c > @@ -2177,6 +2177,9 @@ void smb2_reconnect_server(struct work_struct *work) > struct cifs_tcon *tcon, *tcon2; > struct list_head tmp_list; > int tcon_exist = false; > + int rc; > + int resched = false; > + > > /* Prevent simultaneous reconnects that can corrupt tcon->rlist list */ > mutex_lock(&server->reconnect_mutex); > @@ -2204,13 +2207,18 @@ void smb2_reconnect_server(struct work_struct *work) > spin_unlock(&cifs_tcp_ses_lock); > > list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) { > - if (!smb2_reconnect(SMB2_INTERNAL_CMD, tcon)) > + rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon); > + if (!rc) > cifs_reopen_persistent_handles(tcon); > + else > + resched = true; > list_del_init(&tcon->rlist); > cifs_put_tcon(tcon); > } > > cifs_dbg(FYI, "Reconnecting tcons finished\n"); > + if (resched) > + queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ); > mutex_unlock(&server->reconnect_mutex); > > /* now we can safely release srv struct */ > -- > git-series 0.9.1 > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html Reviewed-by: Pavel Shilovsky <pshilov@xxxxxxxxxxxxx> -- Best regards, Pavel Shilovsky -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html