From: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Pavel Shilovsky <piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v2 05/11] CIFS: Prepare credits code for a slot reservation
Date: Mon, 19 Mar 2012 15:27:02 -0400 [thread overview]
Message-ID: <20120319152702.3eee1608@redhat.com> (raw)
In-Reply-To: <1331910574-998-6-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
On Fri, 16 Mar 2012 18:09:28 +0300
Pavel Shilovsky <piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org> wrote:
> that is essential for CIFS/SMB/SMB2 oplock breaks and SMB2 echos.
>
> Signed-off-by: Pavel Shilovsky <piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
> ---
> fs/cifs/cifsglob.h | 14 ++++++++++++--
> fs/cifs/transport.c | 22 ++++++++++++++--------
> 2 files changed, 26 insertions(+), 10 deletions(-)
>
> diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
> index d55de96..2309a67 100644
> --- a/fs/cifs/cifsglob.h
> +++ b/fs/cifs/cifsglob.h
> @@ -315,12 +315,22 @@ in_flight(struct TCP_Server_Info *server)
> return num;
> }
>
> +static inline int*
> +get_credits_field(struct TCP_Server_Info *server)
> +{
> + /*
> + * This will change to switch statement when we reserve slots for echos
> + * and oplock breaks.
> + */
> + return &server->credits;
> +}
> +
> static inline bool
> -has_credits(struct TCP_Server_Info *server)
> +has_credits(struct TCP_Server_Info *server, int *credits)
Why are you passing "credits" by reference here? Might as well pass by
value...
> {
> int num;
> spin_lock(&server->req_lock);
> - num = server->credits;
> + num = *credits;
> spin_unlock(&server->req_lock);
> return num > 0;
> }
> diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
> index 11787cc..20dc7ba 100644
> --- a/fs/cifs/transport.c
> +++ b/fs/cifs/transport.c
> @@ -255,26 +255,26 @@ smb_send(struct TCP_Server_Info *server, struct smb_hdr *smb_buffer,
> }
>
> static int
> -wait_for_free_request(struct TCP_Server_Info *server, const int long_op)
> +wait_for_free_credits(struct TCP_Server_Info *server, const int optype,
> + int *credits)
> {
> int rc;
>
> spin_lock(&server->req_lock);
> -
> - if (long_op == CIFS_ASYNC_OP) {
> + if (optype == CIFS_ASYNC_OP) {
> /* oplock breaks must not be held up */
> server->in_flight++;
> - server->credits--;
> + *credits -= 1;
> spin_unlock(&server->req_lock);
> return 0;
> }
>
> while (1) {
> - if (server->credits <= 0) {
> + if (*credits <= 0) {
> spin_unlock(&server->req_lock);
> cifs_num_waiters_inc(server);
> rc = wait_event_killable(server->request_q,
> - has_credits(server));
> + has_credits(server, credits));
> cifs_num_waiters_dec(server);
> if (rc)
> return rc;
> @@ -291,8 +291,8 @@ wait_for_free_request(struct TCP_Server_Info *server, const int long_op)
> */
>
> /* update # of requests on the wire to server */
> - if (long_op != CIFS_BLOCKING_OP) {
> - server->credits--;
> + if (optype != CIFS_BLOCKING_OP) {
> + *credits -= 1;
> server->in_flight++;
> }
> spin_unlock(&server->req_lock);
> @@ -302,6 +302,12 @@ wait_for_free_request(struct TCP_Server_Info *server, const int long_op)
> return 0;
> }
>
> +static int
> +wait_for_free_request(struct TCP_Server_Info *server, const int optype)
> +{
> + return wait_for_free_credits(server, optype, get_credits_field(server));
> +}
> +
> static int allocate_mid(struct cifs_ses *ses, struct smb_hdr *in_buf,
> struct mid_q_entry **ppmidQ)
> {
Other than that nit, this looks fine...
Reviewed-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
next prev parent reply other threads:[~2012-03-19 19:27 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-16 15:09 [PATCH v2 00/11] Prepare transport code for future SMB2 usage Pavel Shilovsky
[not found] ` <1331910574-998-1-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-16 15:09 ` [PATCH v2 01/11] CIFS: Respect negotiated MaxMpxCount Pavel Shilovsky
[not found] ` <1331910574-998-2-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-17 11:12 ` Jeff Layton
[not found] ` <20120317071201.7f28683b-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2012-03-17 14:53 ` Pavel Shilovsky
[not found] ` <CAKywueTDsGhcHiGM_uX6V0dnY3m_W4kD2qcb+JWRq=UVnBnvPw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-17 15:20 ` Steve French
[not found] ` <CAH2r5msMKiEyS2-ak2+tQoRFommSHRcCNwp-J+XtgovmSae7-A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-18 10:33 ` Jeff Layton
2012-03-18 10:50 ` Jeff Layton
[not found] ` <20120318065059.62592afb-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2012-03-18 18:23 ` Pavel Shilovsky
[not found] ` <CAKywueSrGVvwqHbTK3sNLsHDx3vR6U0Ca712ZXKNTnjnOgPGDA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-19 15:04 ` Jeff Layton
[not found] ` <20120319110437.635ea546-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2012-03-19 19:04 ` Pavel Shilovsky
[not found] ` <CAKywueR2mWNKxNDhhj_0i0TfiPz3nmvVBXbxGMZ+Lrbgts3cDQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-19 19:32 ` Steve French
[not found] ` <CAH2r5mvhTYPxvDRFCpQ0ULmDn2TNQ80ODbnvTmgFurptYukR1Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-19 19:39 ` Jeff Layton
2012-03-16 15:09 ` [PATCH v2 02/11] CIFS: Simplify inFlight logic Pavel Shilovsky
[not found] ` <1331910574-998-3-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-17 11:07 ` Jeff Layton
2012-03-16 15:09 ` [PATCH v2 03/11] CIFS: Introduce credit-based flow control Pavel Shilovsky
[not found] ` <1331910574-998-4-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-17 10:32 ` Jeff Layton
[not found] ` <20120317063258.77618c0e-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2012-03-17 14:56 ` Pavel Shilovsky
2012-03-16 15:09 ` [PATCH v2 04/11] CIFS: Make wait_for_free_request killable Pavel Shilovsky
[not found] ` <1331910574-998-5-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-17 11:13 ` Jeff Layton
2012-03-16 15:09 ` [PATCH v2 05/11] CIFS: Prepare credits code for a slot reservation Pavel Shilovsky
[not found] ` <1331910574-998-6-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-19 19:27 ` Jeff Layton [this message]
[not found] ` <20120319152702.3eee1608-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-03-20 7:03 ` Pavel Shilovsky
2012-03-16 15:09 ` [PATCH v2 06/11] CIFS: Delete echo_retries module parm Pavel Shilovsky
[not found] ` <1331910574-998-7-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-18 10:30 ` Jeff Layton
2012-03-16 15:09 ` [PATCH v2 07/11] CIFS: Separate protocol-specific code from transport routines Pavel Shilovsky
[not found] ` <1331910574-998-8-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-19 19:31 ` Jeff Layton
2012-03-16 15:09 ` [PATCH v2 08/11] CIFS: Separate protocol-specific code from demultiplex code Pavel Shilovsky
[not found] ` <1331910574-998-9-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-19 19:41 ` Jeff Layton
[not found] ` <20120319154150.03713caf-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-03-20 7:29 ` Pavel Shilovsky
[not found] ` <CAKywueTxicF658ys1yBzC_95qw0v8R+6pxuhZ_zc+aRKyRLFdw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-20 10:22 ` Jeff Layton
2012-03-16 15:09 ` [PATCH v2 09/11] CIFS: Separate protocol-specific code from cifs_readv_receive code Pavel Shilovsky
[not found] ` <1331910574-998-10-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-19 20:17 ` Jeff Layton
[not found] ` <20120319161728.1f8cec40-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-03-20 7:33 ` Pavel Shilovsky
[not found] ` <CAKywueSvsb+BP7ktb0QEgL3WmrO8j42bicvd-WjWNro6qGRc7w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-20 10:24 ` Jeff Layton
[not found] ` <20120320062414.554a033c-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2012-03-20 10:54 ` Pavel Shilovsky
2012-03-16 15:09 ` [PATCH v2 10/11] CIFS: Expand CurrentMid field Pavel Shilovsky
[not found] ` <1331910574-998-11-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-19 20:24 ` Jeff Layton
[not found] ` <20120319162410.42b95f13-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-03-19 20:48 ` Steve French
[not found] ` <CAH2r5mujZook3O2Ojvu+vjx5Y5uYuormbtbDW69iOLEf1XVQgg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-20 7:37 ` Pavel Shilovsky
[not found] ` <CAKywueTpa6Hmz7oQ=8S1ViRU9ky7wqhKN+f=eaWrJY1457X86w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-20 10:28 ` Jeff Layton
[not found] ` <20120320062843.1cd218ed-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2012-03-20 22:21 ` Steve French
2012-03-16 15:09 ` [PATCH v2 11/11] CIFS: Change mid_q_entry structure fields Pavel Shilovsky
[not found] ` <1331910574-998-12-git-send-email-piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org>
2012-03-19 20:28 ` Jeff Layton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120319152702.3eee1608@redhat.com \
--to=jlayton-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=piastry-7qunaywFIewox3rIn2DAYQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox