* [PATCH] cifs: on send failure, readjust server sequence number downward
@ 2013-04-03 18:07 Jeff Layton
[not found] ` <1365012430-6795-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Jeff Layton @ 2013-04-03 18:07 UTC (permalink / raw)
To: smfrench-Re5JQEeQqe8AvxtiuMwx3w
Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA, mikemol-Re5JQEeQqe8AvxtiuMwx3w
If sending a call to the server fails for some reason (for instance, the
sending thread caught a signal), then we must readjust the sequence
number downward again or the next send will have it too high.
Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
fs/cifs/smb1ops.c | 3 +++
fs/cifs/transport.c | 13 +++++++++++++
2 files changed, 16 insertions(+)
diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
index 23bcd11..3efdb9d 100644
--- a/fs/cifs/smb1ops.c
+++ b/fs/cifs/smb1ops.c
@@ -61,6 +61,9 @@ send_nt_cancel(struct TCP_Server_Info *server, void *buf,
*/
--server->sequence_number;
rc = smb_send(server, in_buf, be32_to_cpu(in_buf->smb_buf_length));
+ if (rc < 0)
+ server->sequence_number--;
+
mutex_unlock(&server->srv_mutex);
cifs_dbg(FYI, "issued NT_CANCEL for mid %u, rc = %d\n",
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index 653bf26..293d2c8 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -522,6 +522,9 @@ cifs_call_async(struct TCP_Server_Info *server, struct smb_rqst *rqst,
rc = smb_send_rqst(server, rqst);
cifs_in_send_dec(server);
cifs_save_when_sent(mid);
+
+ if (rc < 0)
+ server->sequence_number -= 2;
mutex_unlock(&server->srv_mutex);
if (rc == 0)
@@ -711,6 +714,8 @@ SendReceive2(const unsigned int xid, struct cifs_ses *ses,
cifs_in_send_dec(ses->server);
cifs_save_when_sent(midQ);
+ if (rc < 0)
+ ses->server->sequence_number -= 2;
mutex_unlock(&ses->server->srv_mutex);
if (rc < 0) {
@@ -835,6 +840,10 @@ SendReceive(const unsigned int xid, struct cifs_ses *ses,
rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length));
cifs_in_send_dec(ses->server);
cifs_save_when_sent(midQ);
+
+ if (rc < 0)
+ ses->server->sequence_number -= 2;
+
mutex_unlock(&ses->server->srv_mutex);
if (rc < 0)
@@ -968,6 +977,10 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifs_tcon *tcon,
rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length));
cifs_in_send_dec(ses->server);
cifs_save_when_sent(midQ);
+
+ if (rc < 0)
+ ses->server->sequence_number -= 2;
+
mutex_unlock(&ses->server->srv_mutex);
if (rc < 0) {
--
1.7.11.7
^ permalink raw reply related [flat|nested] 4+ messages in thread[parent not found: <1365012430-6795-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH] cifs: on send failure, readjust server sequence number downward [not found] ` <1365012430-6795-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2013-04-03 18:54 ` Michael Mol [not found] ` <515C7AF2.3090902-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Michael Mol @ 2013-04-03 18:54 UTC (permalink / raw) To: Jeff Layton Cc: smfrench-Re5JQEeQqe8AvxtiuMwx3w, linux-cifs-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 2648 bytes --] On 04/03/2013 02:07 PM, Jeff Layton wrote: > If sending a call to the server fails for some reason (for instance, the > sending thread caught a signal), then we must readjust the sequence > number downward again or the next send will have it too high. > > Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > --- > fs/cifs/smb1ops.c | 3 +++ > fs/cifs/transport.c | 13 +++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c > index 23bcd11..3efdb9d 100644 > --- a/fs/cifs/smb1ops.c > +++ b/fs/cifs/smb1ops.c > @@ -61,6 +61,9 @@ send_nt_cancel(struct TCP_Server_Info *server, void *buf, > */ > --server->sequence_number; > rc = smb_send(server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); > + if (rc < 0) > + server->sequence_number--; > + > mutex_unlock(&server->srv_mutex); > > cifs_dbg(FYI, "issued NT_CANCEL for mid %u, rc = %d\n", > diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c > index 653bf26..293d2c8 100644 > --- a/fs/cifs/transport.c > +++ b/fs/cifs/transport.c > @@ -522,6 +522,9 @@ cifs_call_async(struct TCP_Server_Info *server, struct smb_rqst *rqst, > rc = smb_send_rqst(server, rqst); > cifs_in_send_dec(server); > cifs_save_when_sent(mid); > + > + if (rc < 0) > + server->sequence_number -= 2; > mutex_unlock(&server->srv_mutex); > > if (rc == 0) > @@ -711,6 +714,8 @@ SendReceive2(const unsigned int xid, struct cifs_ses *ses, > cifs_in_send_dec(ses->server); > cifs_save_when_sent(midQ); > > + if (rc < 0) > + ses->server->sequence_number -= 2; > mutex_unlock(&ses->server->srv_mutex); > > if (rc < 0) { > @@ -835,6 +840,10 @@ SendReceive(const unsigned int xid, struct cifs_ses *ses, > rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); > cifs_in_send_dec(ses->server); > cifs_save_when_sent(midQ); > + > + if (rc < 0) > + ses->server->sequence_number -= 2; > + > mutex_unlock(&ses->server->srv_mutex); > > if (rc < 0) > @@ -968,6 +977,10 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifs_tcon *tcon, > rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); > cifs_in_send_dec(ses->server); > cifs_save_when_sent(midQ); > + > + if (rc < 0) > + ses->server->sequence_number -= 2; > + > mutex_unlock(&ses->server->srv_mutex); > > if (rc < 0) { > I was re-prioritized...I'll test the patches you'd like me to test just as soon as I can. At that point, I'll prod the list and ask for an up-to-date list of the patchset you'd like me to try. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 555 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <515C7AF2.3090902-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH] cifs: on send failure, readjust server sequence number downward [not found] ` <515C7AF2.3090902-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2013-04-03 19:02 ` Jeff Layton [not found] ` <20130403150227.25f37cce-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Jeff Layton @ 2013-04-03 19:02 UTC (permalink / raw) To: Michael Mol Cc: smfrench-Re5JQEeQqe8AvxtiuMwx3w, linux-cifs-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 3244 bytes --] On Wed, 03 Apr 2013 14:54:42 -0400 Michael Mol <mikemol-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > On 04/03/2013 02:07 PM, Jeff Layton wrote: > > If sending a call to the server fails for some reason (for instance, the > > sending thread caught a signal), then we must readjust the sequence > > number downward again or the next send will have it too high. > > > > Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > > --- > > fs/cifs/smb1ops.c | 3 +++ > > fs/cifs/transport.c | 13 +++++++++++++ > > 2 files changed, 16 insertions(+) > > > > diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c > > index 23bcd11..3efdb9d 100644 > > --- a/fs/cifs/smb1ops.c > > +++ b/fs/cifs/smb1ops.c > > @@ -61,6 +61,9 @@ send_nt_cancel(struct TCP_Server_Info *server, void *buf, > > */ > > --server->sequence_number; > > rc = smb_send(server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); > > + if (rc < 0) > > + server->sequence_number--; > > + > > mutex_unlock(&server->srv_mutex); > > > > cifs_dbg(FYI, "issued NT_CANCEL for mid %u, rc = %d\n", > > diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c > > index 653bf26..293d2c8 100644 > > --- a/fs/cifs/transport.c > > +++ b/fs/cifs/transport.c > > @@ -522,6 +522,9 @@ cifs_call_async(struct TCP_Server_Info *server, struct smb_rqst *rqst, > > rc = smb_send_rqst(server, rqst); > > cifs_in_send_dec(server); > > cifs_save_when_sent(mid); > > + > > + if (rc < 0) > > + server->sequence_number -= 2; > > mutex_unlock(&server->srv_mutex); > > > > if (rc == 0) > > @@ -711,6 +714,8 @@ SendReceive2(const unsigned int xid, struct cifs_ses *ses, > > cifs_in_send_dec(ses->server); > > cifs_save_when_sent(midQ); > > > > + if (rc < 0) > > + ses->server->sequence_number -= 2; > > mutex_unlock(&ses->server->srv_mutex); > > > > if (rc < 0) { > > @@ -835,6 +840,10 @@ SendReceive(const unsigned int xid, struct cifs_ses *ses, > > rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); > > cifs_in_send_dec(ses->server); > > cifs_save_when_sent(midQ); > > + > > + if (rc < 0) > > + ses->server->sequence_number -= 2; > > + > > mutex_unlock(&ses->server->srv_mutex); > > > > if (rc < 0) > > @@ -968,6 +977,10 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifs_tcon *tcon, > > rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); > > cifs_in_send_dec(ses->server); > > cifs_save_when_sent(midQ); > > + > > + if (rc < 0) > > + ses->server->sequence_number -= 2; > > + > > mutex_unlock(&ses->server->srv_mutex); > > > > if (rc < 0) { > > > > I was re-prioritized...I'll test the patches you'd like me to test just > as soon as I can. At that point, I'll prod the list and ask for an > up-to-date list of the patchset you'd like me to try. > This one is current vs. mainline as of today. It'll probably need to be backported to RHEL6 though. The other one you'll want to test is commit 31efee60f489c75 in the mainline tree. It too will need to be backported to rhel6, but that shouldn't be too hard... -- Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <20130403150227.25f37cce-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>]
* Re: [PATCH] cifs: on send failure, readjust server sequence number downward [not found] ` <20130403150227.25f37cce-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> @ 2013-04-22 21:17 ` Michael Mol 0 siblings, 0 replies; 4+ messages in thread From: Michael Mol @ 2013-04-22 21:17 UTC (permalink / raw) To: Jeff Layton Cc: smfrench-Re5JQEeQqe8AvxtiuMwx3w, linux-cifs-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 3660 bytes --] On 04/03/2013 03:02 PM, Jeff Layton wrote: > On Wed, 03 Apr 2013 14:54:42 -0400 > Michael Mol <mikemol-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > >> On 04/03/2013 02:07 PM, Jeff Layton wrote: >>> If sending a call to the server fails for some reason (for instance, the >>> sending thread caught a signal), then we must readjust the sequence >>> number downward again or the next send will have it too high. >>> >>> Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> >>> --- >>> fs/cifs/smb1ops.c | 3 +++ >>> fs/cifs/transport.c | 13 +++++++++++++ >>> 2 files changed, 16 insertions(+) >>> >>> diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c >>> index 23bcd11..3efdb9d 100644 >>> --- a/fs/cifs/smb1ops.c >>> +++ b/fs/cifs/smb1ops.c >>> @@ -61,6 +61,9 @@ send_nt_cancel(struct TCP_Server_Info *server, void *buf, >>> */ >>> --server->sequence_number; >>> rc = smb_send(server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); >>> + if (rc < 0) >>> + server->sequence_number--; >>> + >>> mutex_unlock(&server->srv_mutex); >>> >>> cifs_dbg(FYI, "issued NT_CANCEL for mid %u, rc = %d\n", >>> diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c >>> index 653bf26..293d2c8 100644 >>> --- a/fs/cifs/transport.c >>> +++ b/fs/cifs/transport.c >>> @@ -522,6 +522,9 @@ cifs_call_async(struct TCP_Server_Info *server, struct smb_rqst *rqst, >>> rc = smb_send_rqst(server, rqst); >>> cifs_in_send_dec(server); >>> cifs_save_when_sent(mid); >>> + >>> + if (rc < 0) >>> + server->sequence_number -= 2; >>> mutex_unlock(&server->srv_mutex); >>> >>> if (rc == 0) >>> @@ -711,6 +714,8 @@ SendReceive2(const unsigned int xid, struct cifs_ses *ses, >>> cifs_in_send_dec(ses->server); >>> cifs_save_when_sent(midQ); >>> >>> + if (rc < 0) >>> + ses->server->sequence_number -= 2; >>> mutex_unlock(&ses->server->srv_mutex); >>> >>> if (rc < 0) { >>> @@ -835,6 +840,10 @@ SendReceive(const unsigned int xid, struct cifs_ses *ses, >>> rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); >>> cifs_in_send_dec(ses->server); >>> cifs_save_when_sent(midQ); >>> + >>> + if (rc < 0) >>> + ses->server->sequence_number -= 2; >>> + >>> mutex_unlock(&ses->server->srv_mutex); >>> >>> if (rc < 0) >>> @@ -968,6 +977,10 @@ SendReceiveBlockingLock(const unsigned int xid, struct cifs_tcon *tcon, >>> rc = smb_send(ses->server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); >>> cifs_in_send_dec(ses->server); >>> cifs_save_when_sent(midQ); >>> + >>> + if (rc < 0) >>> + ses->server->sequence_number -= 2; >>> + >>> mutex_unlock(&ses->server->srv_mutex); >>> >>> if (rc < 0) { >>> >> >> I was re-prioritized...I'll test the patches you'd like me to test just >> as soon as I can. At that point, I'll prod the list and ask for an >> up-to-date list of the patchset you'd like me to try. >> > > This one is current vs. mainline as of today. It'll probably need to be > backported to RHEL6 though. The other one you'll want to test is commit > 31efee60f489c75 in the mainline tree. It too will need to be backported > to rhel6, but that shouldn't be too hard... > Backporting to RHEL6 is going to be "fun". The patched version of 2.6.32 looks only vaguely similar to the context in the patch. It looks like transport.c in 2.6.32 used cifs_sign_smb{2,} in the places where these changes are likely to apply. Unless I'm completely forgetting something I knew a month ago. Ah well. I'm sure I'll get it figured out; should only require a jaunt through that file's history. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 555 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-04-22 21:17 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-03 18:07 [PATCH] cifs: on send failure, readjust server sequence number downward Jeff Layton
[not found] ` <1365012430-6795-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-03 18:54 ` Michael Mol
[not found] ` <515C7AF2.3090902-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-03 19:02 ` Jeff Layton
[not found] ` <20130403150227.25f37cce-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2013-04-22 21:17 ` Michael Mol
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.