Once we undo the add_credits removal, I think it is good to go to stable. -- Best regards, Pavel Shilovsky пт, 21 дек. 2018 г. в 00:53, Ronnie Sahlberg <lsahlber@xxxxxxxxxx>: > > > > > > ----- Original Message ----- > > From: "Steve French" <smfrench@xxxxxxxxx> > > To: "Ronnie Sahlberg" <lsahlber@xxxxxxxxxx> > > Cc: "Linux CIFS mailing list" <linux-cifs@xxxxxxxxxxxxxxx> > > Sent: Friday, 21 December, 2018 1:19:01 PM > > Subject: Re: [PATCH] cifs: cancel all remaining requests if one failed in a compound > > > > shouldn't this be cc:stable > > Probably. > I would like Pavel to bless it first. > > > > > > On Thu, Dec 20, 2018 at 9:18 PM Ronnie Sahlberg <lsahlber@xxxxxxxxxx> wrote: > > > > > > If we failed to get a reply to a request in a compound we should cancel > > > the current request and also all further requests in the chain. > > > > > > Reported-by: Pavel Shilovsky <piastryyy@xxxxxxxxx> > > > Signed-off-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx> > > > --- > > > fs/cifs/transport.c | 11 +++++------ > > > 1 file changed, 5 insertions(+), 6 deletions(-) > > > > > > diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c > > > index 83ff0c25710d..ed6cd5066396 100644 > > > --- a/fs/cifs/transport.c > > > +++ b/fs/cifs/transport.c > > > @@ -873,7 +873,11 @@ compound_send_recv(const unsigned int xid, struct > > > cifs_ses *ses, > > > > > > for (i = 0; i < num_rqst; i++) { > > > rc = wait_for_response(ses->server, midQ[i]); > > > - if (rc != 0) { > > > + if (rc != 0) > > > + break; > > > + } > > > + if (rc != 0) { > > > + for (; i < num_rqst; i++) { > > > cifs_dbg(VFS, "Cancelling wait for mid %llu cmd: > > > %d\n", > > > midQ[i]->mid, > > > le16_to_cpu(midQ[i]->command)); > > > send_cancel(ses->server, &rqst[i], midQ[i]); > > > @@ -881,9 +885,6 @@ compound_send_recv(const unsigned int xid, struct > > > cifs_ses *ses, > > > if (midQ[i]->mid_state == MID_REQUEST_SUBMITTED) { > > > midQ[i]->mid_flags |= MID_WAIT_CANCELLED; > > > midQ[i]->callback = DeleteMidQEntry; > > > - spin_unlock(&GlobalMid_Lock); > > > - add_credits(ses->server, 1, optype); > > > - return rc; > > > } > > > spin_unlock(&GlobalMid_Lock); > > > } > > > @@ -892,8 +893,6 @@ compound_send_recv(const unsigned int xid, struct > > > cifs_ses *ses, > > > for (i = 0; i < num_rqst; i++) > > > if (midQ[i]->resp_buf) > > > credits += ses->server->ops->get_credits(midQ[i]); > > > - if (!credits) > > > - credits = 1; > > > > > > for (i = 0; i < num_rqst; i++) { > > > if (rc < 0) > > > -- > > > 2.13.6 > > > > > > > > > -- > > Thanks, > > > > Steve > >