From patchwork Mon Sep 15 18:14:41 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 4907201 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 23F9FBEEA5 for ; Mon, 15 Sep 2014 18:15:35 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2258220149 for ; Mon, 15 Sep 2014 18:15:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 09F622014A for ; Mon, 15 Sep 2014 18:15:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754405AbaIOSPE (ORCPT ); Mon, 15 Sep 2014 14:15:04 -0400 Received: from mail-ig0-f175.google.com ([209.85.213.175]:47201 "EHLO mail-ig0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754414AbaIOSPB (ORCPT ); Mon, 15 Sep 2014 14:15:01 -0400 Received: by mail-ig0-f175.google.com with SMTP id h15so4410591igd.8 for ; Mon, 15 Sep 2014 11:15:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ri0lxtJqUN0Hz8L/vGMBebI4te0tYuQdDifv7TEX2fI=; b=fTd1+DXXnxUbtlow1HUrNt0DMlvkSYrUg7ju+u02BCsDxKUYwkAgVbWhaZjFqPkPad 2oxEVVwaHSu3hCJTofuXYYGwr7HdDc8dIyPFy7wAxUSlRKDi+NBrgtvpv5ovg0a8yq2n r8Yw823/zKrvstmK3WBrO1usoOUhiRqenlEsCAL1SXqpC1sdqkirwqdxXGb++hXo69y3 jv82MQ9LIdE8HXmZXfBlLc7OCFhr3lFOa1JSXlxQnGp8Norjsx8OlTe8pwuz9UmFLYfm hXvOASGTznA+O3cG/0UbbLiElCgA/qGo+o+sPMCIzjGWJjY9GaRSizFPg7Ra1jTF8/3J 3Xjw== X-Gm-Message-State: ALoCoQn8yhSmMmCqn1abXe35jy1QAEkoaqQyrEjyAbB3xOy+z+0wK7Jk7SXWN6qIRfjJDoKz5r6q X-Received: by 10.50.43.138 with SMTP id w10mr23782970igl.33.1410804900674; Mon, 15 Sep 2014 11:15:00 -0700 (PDT) Received: from leira.trondhjem.org.localdomain (50-108-114-100.adr01.mskg.mi.frontiernet.net. [50.108.114.100]) by mx.google.com with ESMTPSA id ro6sm10736835igb.3.2014.09.15.11.14.59 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 15 Sep 2014 11:15:00 -0700 (PDT) From: Trond Myklebust To: stable@vger.kernel.org Cc: Weston Andros Adamson , linux-nfs@vger.kernel.org Subject: [PATCH 10/14] nfs: use blocking page_group_lock in add_request Date: Mon, 15 Sep 2014 14:14:41 -0400 Message-Id: <1410804885-17228-11-git-send-email-trond.myklebust@primarydata.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1410804885-17228-10-git-send-email-trond.myklebust@primarydata.com> References: <1410804885-17228-1-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-2-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-3-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-4-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-5-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-6-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-7-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-8-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-9-git-send-email-trond.myklebust@primarydata.com> <1410804885-17228-10-git-send-email-trond.myklebust@primarydata.com> Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Weston Andros Adamson commit bfd484a5606d6a0379a0a2f04251b1e5c1f8995c upstream. __nfs_pageio_add_request was calling nfs_page_group_lock nonblocking, but this can return -EAGAIN which would end up passing -EIO to the application. There is no reason not to block in this path, so change the two calls to do so. Also, there is no need to check the return value of nfs_page_group_lock when nonblock=false, so remove the error handling code. Signed-off-by: Weston Andros Adamson Reviewed-by: Peng Tao Signed-off-by: Trond Myklebust --- fs/nfs/pagelist.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index c27a05c27c11..ab96711d518f 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c @@ -873,13 +873,8 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, struct nfs_page *subreq; unsigned int bytes_left = 0; unsigned int offset, pgbase; - int ret; - ret = nfs_page_group_lock(req, true); - if (ret < 0) { - desc->pg_error = ret; - return 0; - } + nfs_page_group_lock(req, false); subreq = req; bytes_left = subreq->wb_bytes; @@ -901,11 +896,7 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, if (desc->pg_recoalesce) return 0; /* retry add_request for this subreq */ - ret = nfs_page_group_lock(req, true); - if (ret < 0) { - desc->pg_error = ret; - return 0; - } + nfs_page_group_lock(req, false); continue; }