From patchwork Fri Oct 13 21:47:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 10006031 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1223660360 for ; Fri, 13 Oct 2017 21:48:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EA69629166 for ; Fri, 13 Oct 2017 21:48:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DF1EF29175; Fri, 13 Oct 2017 21:48:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6655F29166 for ; Fri, 13 Oct 2017 21:48:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752031AbdJMVsC (ORCPT ); Fri, 13 Oct 2017 17:48:02 -0400 Received: from mail-io0-f193.google.com ([209.85.223.193]:55046 "EHLO mail-io0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751617AbdJMVsB (ORCPT ); Fri, 13 Oct 2017 17:48:01 -0400 Received: by mail-io0-f193.google.com with SMTP id e89so2674353ioi.11; Fri, 13 Oct 2017 14:48:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:from:to:cc:date:message-id:user-agent:mime-version :content-transfer-encoding; bh=/zh9w0u8mkbYfxrbuVmdRSLEmDGwSH2IJLoltGfr7G0=; b=HgVQ2M6DieVe95jQ9zRRKC5wUg5nIPCShWYeCBPSk+ecjrYCbtkvpOPrgCnecSIUs9 so3k7OHwYW/K+mmeMgcV70xGVkMQgrHk0ZkgDxPWg0y8rG+UOd/2kn9pnh/80lEieBGj gzaGKHiEYabN5CSPVa4K4ek5Ztqe0UWmYHtWFBWggYdlsiPbXvwMX7Z77bLx4e9PbsUA /QQsfk5+yXJQiWjFEgsmIZJSP/TRH3a2BykOhUJNdzXTOS8L669Bh2yL9bSGsXkw4I23 PfIfsVaLVQXw/dLdPFBB7cfQ/suUFJ2ouGPijvTQqluItt1ZZYGrXvhfqUDO31q9MnfC JlFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:from:to:cc:date:message-id :user-agent:mime-version:content-transfer-encoding; bh=/zh9w0u8mkbYfxrbuVmdRSLEmDGwSH2IJLoltGfr7G0=; b=UvA/kIGaBHNGfE4lr8YXfeTKUK2ggRqaohqg4hhnbbCBX1zYX4e3brwO54ZX0BtpvV VjfZ2mPlYX21RFEkovLVvkyr7J7vx7/oSqXHDcf7+n1dGGBwTmG1HD3T2WH2ivkubPzR +zTydbCCTkpSNmnGrgS7OHuyP6JcF5/IiQaJ6/62do5hqToV7LEYnSwjltC165fNRG9R TwxKcoB0KC+NAfqwt8nw0sdyJCy8sEpFJKi8Znwc+5LJtGR3oITYZdjCkDRsM8c8WwYN 3wQ5jdFDAN9MR7qN+SB7EV8uCRl5Nro/sbWo/v4Zr5NVdo77n0krWK0kotzATIE5+h6e zdfA== X-Gm-Message-State: AMCzsaUldvNFkY8/CS2r9SYKJM49HgohB70miomuHNm0NpbbJ5jF99xf SGH9Sp4er6/kVcijGG5QTS28yg== X-Google-Smtp-Source: AOwi7QAWWrOJKvqUp9foFUL37WOM5cE7aoaYOujCM3oGh1eIyYVMbgdio7KzW93k5lkBq9TU2e1svQ== X-Received: by 10.107.204.1 with SMTP id c1mr3592602iog.72.1507931280156; Fri, 13 Oct 2017 14:48:00 -0700 (PDT) Received: from manet.1015granger.net (c-68-46-169-226.hsd1.mi.comcast.net. [68.46.169.226]) by smtp.gmail.com with ESMTPSA id g6sm966128ioc.11.2017.10.13.14.47.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Oct 2017 14:47:59 -0700 (PDT) Subject: [PATCH] xprtrdma: Use generic asynchronous MR disposal in send_request From: Chuck Lever To: anna.schumaker@netapp.com Cc: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org Date: Fri, 13 Oct 2017 17:47:58 -0400 Message-ID: <20171013214509.14446.81979.stgit@manet.1015granger.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Clean up: The asynchronous path of ro_unmap_safe is the same for all registration modes, so just move it into the only function that calls it. "Safe" disposal is done because attempting to invalidate an MR with a memory key from the previous connection epoch can result in a memory management operation error for some registration modes, and that will kill the current connection. Signed-off-by: Chuck Lever --- net/sunrpc/xprtrdma/transport.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) Hi Anna- This patch replaces 2/3 in the for-4.15 series I sent a few days ago. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c index 8cf5ccf..aa5cab2 100644 --- a/net/sunrpc/xprtrdma/transport.c +++ b/net/sunrpc/xprtrdma/transport.c @@ -727,8 +727,12 @@ goto drop_connection; /* On retransmit, remove any previously registered chunks */ - if (unlikely(!list_empty(&req->rl_registered))) - r_xprt->rx_ia.ri_ops->ro_unmap_safe(r_xprt, req, false); + while (unlikely(!list_empty(&req->rl_registered))) { + struct rpcrdma_mw *mw; + + mw = rpcrdma_pop_mw(&req->rl_registered); + rpcrdma_defer_mr_recovery(mw); + } rc = rpcrdma_marshal_req(r_xprt, rqst); if (rc < 0)