All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Farrell <paf@cray.com>
To: NeilBrown <neilb@suse.com>, Oleg Drokin <oleg.drokin@intel.com>,
	Andreas Dilger <andreas.dilger@intel.com>,
	James Simmons <jsimmons@infradead.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	lustre <lustre-devel@lists.lustre.org>
Subject: [lustre-devel] [PATCH 15/16] staging: lustre: use explicit poll loop in ptlrpc_unregister_reply
Date: Mon, 18 Dec 2017 21:09:18 +0000	[thread overview]
Message-ID: <D65D8A40.C5E44%paf@cray.com> (raw)
In-Reply-To: <151358148034.5099.17386685003288433122.stgit@noble>

This should not contribute to load, since it?s called out of the ptlrpcd
daemons.

On 12/18/17, 1:18 AM, "lustre-devel on behalf of NeilBrown"
<lustre-devel-bounces at lists.lustre.org on behalf of neilb@suse.com> wrote:

>replace l_wait_event() with wait_event_timeout() and explicit
>loop.  This approach is easier to understand.
>
>Signed-off-by: NeilBrown <neilb@suse.com>
>---
> drivers/staging/lustre/lustre/ptlrpc/client.c |   14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
>diff --git a/drivers/staging/lustre/lustre/ptlrpc/client.c
>b/drivers/staging/lustre/lustre/ptlrpc/client.c
>index 3e6d22beb9f5..bb8c9ab68f5f 100644
>--- a/drivers/staging/lustre/lustre/ptlrpc/client.c
>+++ b/drivers/staging/lustre/lustre/ptlrpc/client.c
>@@ -2500,7 +2500,6 @@ static int ptlrpc_unregister_reply(struct
>ptlrpc_request *request, int async)
> {
> 	int rc;
> 	wait_queue_head_t *wq;
>-	struct l_wait_info lwi;
> 
> 	/* Might sleep. */
> 	LASSERT(!in_interrupt());
>@@ -2543,16 +2542,17 @@ static int ptlrpc_unregister_reply(struct
>ptlrpc_request *request, int async)
> 		 * Network access will complete in finite time but the HUGE
> 		 * timeout lets us CWARN for visibility of sluggish NALs
> 		 */
>-		lwi = LWI_TIMEOUT_INTERVAL(LONG_UNLINK * HZ,
>-					   HZ, NULL, NULL);
>-		rc = l_wait_event(*wq, !ptlrpc_client_recv_or_unlink(request),
>-				  &lwi);
>-		if (rc == 0) {
>+		int cnt = 0;
>+		while (cnt < LONG_UNLINK &&
>+		       (rc = wait_event_timeout(*wq,
>+						!ptlrpc_client_recv_or_unlink(request),
>+						HZ)) == 0)
>+			cnt += 1;
>+		if (rc > 0) {
> 			ptlrpc_rqphase_move(request, request->rq_next_phase);
> 			return 1;
> 		}
> 
>-		LASSERT(rc == -ETIMEDOUT);
> 		DEBUG_REQ(D_WARNING, request,
> 			  "Unexpectedly long timeout receiving_reply=%d req_ulinked=%d
>reply_unlinked=%d",
> 			  request->rq_receiving_reply,
>
>
>_______________________________________________
>lustre-devel mailing list
>lustre-devel at lists.lustre.org
>http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org

WARNING: multiple messages have this Message-ID (diff)
From: Patrick Farrell <paf@cray.com>
To: NeilBrown <neilb@suse.com>, Oleg Drokin <oleg.drokin@intel.com>,
	"Andreas Dilger" <andreas.dilger@intel.com>,
	James Simmons <jsimmons@infradead.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	lustre <lustre-devel@lists.lustre.org>
Subject: Re: [lustre-devel] [PATCH 15/16] staging: lustre: use explicit poll loop in ptlrpc_unregister_reply
Date: Mon, 18 Dec 2017 21:09:18 +0000	[thread overview]
Message-ID: <D65D8A40.C5E44%paf@cray.com> (raw)
In-Reply-To: <151358148034.5099.17386685003288433122.stgit@noble>

This should not contribute to load, since it¹s called out of the ptlrpcd
daemons.

On 12/18/17, 1:18 AM, "lustre-devel on behalf of NeilBrown"
<lustre-devel-bounces@lists.lustre.org on behalf of neilb@suse.com> wrote:

>replace l_wait_event() with wait_event_timeout() and explicit
>loop.  This approach is easier to understand.
>
>Signed-off-by: NeilBrown <neilb@suse.com>
>---
> drivers/staging/lustre/lustre/ptlrpc/client.c |   14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
>diff --git a/drivers/staging/lustre/lustre/ptlrpc/client.c
>b/drivers/staging/lustre/lustre/ptlrpc/client.c
>index 3e6d22beb9f5..bb8c9ab68f5f 100644
>--- a/drivers/staging/lustre/lustre/ptlrpc/client.c
>+++ b/drivers/staging/lustre/lustre/ptlrpc/client.c
>@@ -2500,7 +2500,6 @@ static int ptlrpc_unregister_reply(struct
>ptlrpc_request *request, int async)
> {
> 	int rc;
> 	wait_queue_head_t *wq;
>-	struct l_wait_info lwi;
> 
> 	/* Might sleep. */
> 	LASSERT(!in_interrupt());
>@@ -2543,16 +2542,17 @@ static int ptlrpc_unregister_reply(struct
>ptlrpc_request *request, int async)
> 		 * Network access will complete in finite time but the HUGE
> 		 * timeout lets us CWARN for visibility of sluggish NALs
> 		 */
>-		lwi = LWI_TIMEOUT_INTERVAL(LONG_UNLINK * HZ,
>-					   HZ, NULL, NULL);
>-		rc = l_wait_event(*wq, !ptlrpc_client_recv_or_unlink(request),
>-				  &lwi);
>-		if (rc == 0) {
>+		int cnt = 0;
>+		while (cnt < LONG_UNLINK &&
>+		       (rc = wait_event_timeout(*wq,
>+						!ptlrpc_client_recv_or_unlink(request),
>+						HZ)) == 0)
>+			cnt += 1;
>+		if (rc > 0) {
> 			ptlrpc_rqphase_move(request, request->rq_next_phase);
> 			return 1;
> 		}
> 
>-		LASSERT(rc == -ETIMEDOUT);
> 		DEBUG_REQ(D_WARNING, request,
> 			  "Unexpectedly long timeout receiving_reply=%d req_ulinked=%d
>reply_unlinked=%d",
> 			  request->rq_receiving_reply,
>
>
>_______________________________________________
>lustre-devel mailing list
>lustre-devel@lists.lustre.org
>http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org

  reply	other threads:[~2017-12-18 21:09 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-18  7:17 [lustre-devel] [PATCH SERIES 5: 00/16] staging: lustre: use standard wait_event macros NeilBrown
2017-12-18  7:17 ` NeilBrown
2017-12-18  7:17 ` [lustre-devel] [PATCH 01/16] staging: lustre: discard SVC_SIGNAL and related functions NeilBrown
2017-12-18  7:17   ` NeilBrown
2017-12-18  7:17 ` [lustre-devel] [PATCH 04/16] staging: lustre: use wait_event_timeout() where appropriate NeilBrown
2017-12-18  7:17   ` NeilBrown
2017-12-18 20:23   ` [lustre-devel] " Patrick Farrell
2017-12-18 20:23     ` Patrick Farrell
2017-12-18  7:17 ` [lustre-devel] [PATCH 02/16] staging: lustre: replace simple cases of l_wait_event() with wait_event() NeilBrown
2017-12-18  7:17   ` NeilBrown
2017-12-18 17:48   ` [lustre-devel] " Patrick Farrell
2017-12-18 17:48     ` Patrick Farrell
2017-12-18 21:37     ` NeilBrown
2017-12-18 21:37       ` NeilBrown
2017-12-18 18:03   ` Patrick Farrell
2017-12-18 18:03     ` Patrick Farrell
2017-12-19 10:37     ` Dilger, Andreas
2017-12-19 10:37       ` Dilger, Andreas
2017-12-19 20:49       ` NeilBrown
2017-12-19 20:49         ` NeilBrown
2017-12-18  7:17 ` [lustre-devel] [PATCH 03/16] staging: lustre: discard cfs_time_seconds() NeilBrown
2017-12-18  7:17   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 15/16] staging: lustre: use explicit poll loop in ptlrpc_unregister_reply NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18 21:09   ` Patrick Farrell [this message]
2017-12-18 21:09     ` [lustre-devel] " Patrick Farrell
2017-12-18  7:18 ` [lustre-devel] [PATCH 09/16] staging: lustre: simplify waiting in ptlrpc_invalidate_import() NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 13/16] staging: lustre: improve waiting in sptlrpc_req_refresh_ctx NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 06/16] staging: lustre: simplify l_wait_event when intr handler but no timeout NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 10/16] staging: lustre: remove back_to_sleep() and use loops NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 16/16] staging: lustre: remove l_wait_event from ptlrpc_set_wait NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 12/16] staging: lustre: use wait_event_timeout in ptlrpcd() NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 07/16] staging: lustre: simplify waiting in ldlm_completion_ast() NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 11/16] staging: lustre: make polling loop in ptlrpc_unregister_bulk more obvious NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18 21:03   ` [lustre-devel] " Patrick Farrell
2017-12-18 21:03     ` Patrick Farrell
2017-12-18  7:18 ` [lustre-devel] [PATCH 05/16] staging: lustre: introduce and use l_wait_event_abortable() NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18  7:18 ` [lustre-devel] [PATCH 08/16] staging: lustre: open code polling loop instead of using l_wait_event() NeilBrown
2017-12-18  7:18   ` NeilBrown
2017-12-18 20:55   ` [lustre-devel] " Patrick Farrell
2017-12-18 20:55     ` Patrick Farrell
2017-12-18  7:18 ` [lustre-devel] [PATCH 14/16] staging: lustre: use explicit poll loop in ptlrpc_service_unlink_rqbd NeilBrown
2017-12-18  7:18   ` NeilBrown

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=D65D8A40.C5E44%paf@cray.com \
    --to=paf@cray.com \
    --cc=andreas.dilger@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jsimmons@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lustre-devel@lists.lustre.org \
    --cc=neilb@suse.com \
    --cc=oleg.drokin@intel.com \
    /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 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.