On 12/20/20 6:37 PM, Mike Christie wrote: > If we lose the session then relogin, but the new cmdsn window has > shrunk (due to something like an admin changing a setting) we will > have the old exp/max_cmdsn values and will never be able to update > them. For example, max_cmdsn would be 64, but if on the target the > user set the window to be smaller then the target could try to return > the max_cmdsn as 32. We will see that new max_cmdsn in the rsp but > because it's lower than the old max_cmdsn when the window was larger > we will not update it. > > So this patch has us reset the windown values during session > cleanup so they can be updated after a new login. > > Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx> > --- > drivers/scsi/libiscsi.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c > index f1ade91..ff6ba78 100644 > --- a/drivers/scsi/libiscsi.c > +++ b/drivers/scsi/libiscsi.c > @@ -3268,6 +3268,13 @@ int iscsi_conn_bind(struct iscsi_cls_session *cls_session, > spin_unlock_bh(&session->frwd_lock); > > /* > + * The target could have reduced it's window size between logins, so > + * we have to reset max/exp cmdsn so we can see the new values. > + */ > + spin_lock_bh(&session->back_lock); > + session->max_cmdsn = session->exp_cmdsn = session->cmdsn + 1; > + spin_unlock_bh(&session->back_lock); > + /* > * Unblock xmitworker(), Login Phase will pass through. > */ > clear_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx); > Reviewed-by: Lee Duncan <lduncan@xxxxxxxx>