From patchwork Mon Feb 13 16:56:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever III X-Patchwork-Id: 9570285 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 209D260442 for ; Mon, 13 Feb 2017 16:56:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0F9B12711E for ; Mon, 13 Feb 2017 16:56:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 02E9E2793A; Mon, 13 Feb 2017 16:56:49 +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 7A5552711E for ; Mon, 13 Feb 2017 16:56:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753008AbdBMQ4s (ORCPT ); Mon, 13 Feb 2017 11:56:48 -0500 Received: from mail-it0-f65.google.com ([209.85.214.65]:36308 "EHLO mail-it0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752219AbdBMQ4r (ORCPT ); Mon, 13 Feb 2017 11:56:47 -0500 Received: by mail-it0-f65.google.com with SMTP id f200so14517377itf.3; Mon, 13 Feb 2017 08:56:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:from:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=DCddKqzAonMGN+H4i7KoOlP2odkQV3g0xh7JaT2MYpk=; b=j9sMS8dyj1LlOOAR6ErqPFi1yLoPtK1ZIPH+4591yExb6Jcc2tkpsme64FiUAngsHL WV+VfMSkG+j8A8pJNdAyHmg3tMTUCOVIz5h0Xa0/Se7dNQRMoIYZ/1cEjj9sjfuBkVQ0 gmcPh+w1Z7jzIROMDvXa/FcNlufZq9YNhQ1PBKzp7ii7lXhzmDxKEMfsDqlq1wyENN5f HscUa4cbx4sspmIT+qzqpypEG3apOZZ1CDJ1rdVN9qF4eeKFZp7itaUvmP9fKjjtZG6W LKsJ81BhguGS8Xh121LlsMlJqPj4VY1sBZrWWUs/NuCoDtgNZGfI96X3Xd0fnA+VyVXo UEnA== 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 :in-reply-to:references:user-agent:mime-version :content-transfer-encoding; bh=DCddKqzAonMGN+H4i7KoOlP2odkQV3g0xh7JaT2MYpk=; b=TW4V/yp27uJPttBgOrv3rHNtRTffmLqZ4sDr40ShWvXtIFBwvTWoOflfOXANMCam+p fOyiU/YhsELdEO5O2iyKuPdn6KhmPgUu9lDU+OFZqudMUfAwZe8PZyG3v/9c9dwYH7F2 CgP+iJ6K9PB+eSISMzDHh19rhZfOVvIPH6B8CWLnt0zrbDF7RlmPrCUKP93hqEKhKc05 ldbc0IC2fHwKa0gioL/1zHrEpneY0uTVYGQYvZSjUFqgeKcCBDl6RynzoROHuCovmP6X 8J4p84HvljZhw1s6NddceH4oFYAHq9JBiGE1JM7fIo6OC419zGQFxgBu5NQ4WqmS/Vt9 HQig== X-Gm-Message-State: AMke39kIR0CXe/L7AWqXKDrQ1NHImrLHMFyAevautC3YNhDqy8+iGknZXkIlqVJDNJXcdA== X-Received: by 10.107.16.156 with SMTP id 28mr22087662ioq.228.1487005006371; Mon, 13 Feb 2017 08:56:46 -0800 (PST) Received: from manet.1015granger.net ([2604:8800:100:81fc:ec4:7aff:fe6c:1dce]) by smtp.gmail.com with ESMTPSA id m202sm4105007ioe.62.2017.02.13.08.56.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Feb 2017 08:56:45 -0800 (PST) Subject: [PATCH v4 3/9] xprtrdma: Disable pad optimization by default From: Chuck Lever To: anna.schumaker@netapp.com Cc: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org Date: Mon, 13 Feb 2017 11:56:44 -0500 Message-ID: <20170213165644.15801.8847.stgit@manet.1015granger.net> In-Reply-To: <20170213163936.15801.31225.stgit@manet.1015granger.net> References: <20170213163936.15801.31225.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 Commit d5440e27d3e5 ("xprtrdma: Enable pad optimization") made the Linux client omit XDR round-up padding in normal Read and Write chunks so that the client doesn't have to register and invalidate 3-byte memory regions that contain no real data. Unfortunately, my cheery 2014 assessment that this optimization "is supported now by both Linux and Solaris servers" was premature. We've found bugs in Solaris in this area since commit d5440e27d3e5 ("xprtrdma: Enable pad optimization") was merged (SYMLINK is the main offender). So for maximum interoperability, I'm disabling this optimization again. If a CM private message is exchanged when connecting, the client recognizes that the server is Linux, and enables the optimization for that connection. Until now the Solaris server bugs did not impact common operations, and were thus largely benign. Soon, less capable devices on Linux NFS/RDMA clients will make use of Read chunks more often, and these Solaris bugs will prevent interoperation in more cases. Fixes: 677eb17e94ed ("xprtrdma: Fix XDR tail buffer marshalling") Signed-off-by: Chuck Lever --- net/sunrpc/xprtrdma/transport.c | 2 +- net/sunrpc/xprtrdma/verbs.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -- 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 534c178..6990581 100644 --- a/net/sunrpc/xprtrdma/transport.c +++ b/net/sunrpc/xprtrdma/transport.c @@ -67,7 +67,7 @@ static unsigned int xprt_rdma_max_inline_write = RPCRDMA_DEF_INLINE; static unsigned int xprt_rdma_inline_write_padding; static unsigned int xprt_rdma_memreg_strategy = RPCRDMA_FRMR; - int xprt_rdma_pad_optimize = 1; + int xprt_rdma_pad_optimize = 0; #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index 2a6a367..23f4da4 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c @@ -216,6 +216,7 @@ pmsg->cp_magic == rpcrdma_cmp_magic && pmsg->cp_version == RPCRDMA_CMP_VERSION) { r_xprt->rx_ia.ri_reminv_expected = true; + r_xprt->rx_ia.ri_implicit_roundup = true; rsize = rpcrdma_decode_buffer_size(pmsg->cp_send_size); wsize = rpcrdma_decode_buffer_size(pmsg->cp_recv_size); }