From patchwork Sat Dec 3 20:57:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 9459795 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 53EDE60459 for ; Sat, 3 Dec 2016 20:58:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 470B2283E8 for ; Sat, 3 Dec 2016 20:58:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3BC16283F1; Sat, 3 Dec 2016 20:58:13 +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 D6473283E8 for ; Sat, 3 Dec 2016 20:58:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751234AbcLCU6L (ORCPT ); Sat, 3 Dec 2016 15:58:11 -0500 Received: from mail-io0-f194.google.com ([209.85.223.194]:35186 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751207AbcLCU6I (ORCPT ); Sat, 3 Dec 2016 15:58:08 -0500 Received: by mail-io0-f194.google.com with SMTP id h133so6821785ioe.2 for ; Sat, 03 Dec 2016 12:57:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=KqotTpSpM/SQZfcbg01LL6/YzjDan3sS3n9JMnd2SnM=; b=cPGUH50iErhIjo9SHBVS11dNkOOzSGxDiPbyKmHROI6NnJ9n3SKVgSWGzQMFb2oMCP uVljcMDe+3F0yCDXau69ygsZj0ivq+He/oHlRBItcy1BN/pQbLeoQpS0RZwjKR0wiJdx DbSjS88A95wn7cSx/8BmS6kTDBzDOoNTNmMK53BOb0mhtk728rVYW/zA0vNM1DVoUy+I LCnCihRJykN6wWOid9CDLwOLMnDbuE86v1cIAgWqEiWZI9J4g9wbHezASPh5qRHxEu94 e1gykgvBUaaB5/9eEAmU28lqIGcwDFnwYKU8INCz/l9+kY+UuG6XpQj6cEN6LyCXRdwU /a+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=KqotTpSpM/SQZfcbg01LL6/YzjDan3sS3n9JMnd2SnM=; b=booJ4rzG2ZC5WWaXrr+wzFqp1ggu/OqowS5CF5LAqVKhRunqyX5CZqM4Bv3YAG3B8n yYBLmWwgNwdJEzLDncNwG5w7d1tw9PfbV4+2WBX+sOHbZCm9fhVBZUmw7zp1qeEE6rq0 OLL/iDDIoyYEGV/LmyRQ/+COgkvpHj7hzd0jg6q7Au0pR9LO/nkYanUUA/JZT747EIm2 Dj64uYO0wUsMto24602U175hpvceao4Qqf/POvi430Q/pXzl2Bs2Dgrt86fuaA8JfiZY 8cZLHmPk7QdXvPT2iIQIs5JquyfZndOioTMd9iBlXX7BxeeUgr0cpQ4rsRYMJCmckKOi amFw== X-Gm-Message-State: AKaTC01/hXTksk9w05x//d+7jIAt3+Gv72UnDIbHLK+Cz2UPaZryzBNWTRYbGfrxdwfyRw== X-Received: by 10.107.41.15 with SMTP id p15mr5826761iop.234.1480798650316; Sat, 03 Dec 2016 12:57:30 -0800 (PST) Received: from localhost.localdomain (c-68-49-162-121.hsd1.mi.comcast.net. [68.49.162.121]) by smtp.gmail.com with ESMTPSA id x63sm4355061iod.5.2016.12.03.12.57.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 03 Dec 2016 12:57:29 -0800 (PST) From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH 02/10] pNFS/flexfiles: Only send layoutstats updates for mirrors that were updated Date: Sat, 3 Dec 2016 15:57:17 -0500 Message-Id: <20161203205725.12961-3-trond.myklebust@primarydata.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20161203205725.12961-2-trond.myklebust@primarydata.com> References: <20161203205725.12961-1-trond.myklebust@primarydata.com> <20161203205725.12961-2-trond.myklebust@primarydata.com> 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 If there have been no reads or writes to a given mirror since the last layoutstats update, then don't resend the same data. Signed-off-by: Trond Myklebust --- fs/nfs/flexfilelayout/flexfilelayout.c | 6 ++++++ fs/nfs/flexfilelayout/flexfilelayout.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c index a6264d6836dc..540813c30b00 100644 --- a/fs/nfs/flexfilelayout/flexfilelayout.c +++ b/fs/nfs/flexfilelayout/flexfilelayout.c @@ -705,6 +705,7 @@ nfs4_ff_layout_stat_io_start_read(struct inode *inode, spin_lock(&mirror->lock); report = nfs4_ff_layoutstat_start_io(mirror, &mirror->read_stat, now); nfs4_ff_layout_stat_io_update_requested(&mirror->read_stat, requested); + set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); spin_unlock(&mirror->lock); if (report) @@ -721,6 +722,7 @@ nfs4_ff_layout_stat_io_end_read(struct rpc_task *task, nfs4_ff_layout_stat_io_update_completed(&mirror->read_stat, requested, completed, ktime_get(), task->tk_start); + set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); spin_unlock(&mirror->lock); } @@ -734,6 +736,7 @@ nfs4_ff_layout_stat_io_start_write(struct inode *inode, spin_lock(&mirror->lock); report = nfs4_ff_layoutstat_start_io(mirror , &mirror->write_stat, now); nfs4_ff_layout_stat_io_update_requested(&mirror->write_stat, requested); + set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); spin_unlock(&mirror->lock); if (report) @@ -753,6 +756,7 @@ nfs4_ff_layout_stat_io_end_write(struct rpc_task *task, spin_lock(&mirror->lock); nfs4_ff_layout_stat_io_update_completed(&mirror->write_stat, requested, completed, ktime_get(), task->tk_start); + set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); spin_unlock(&mirror->lock); } @@ -2201,6 +2205,8 @@ ff_layout_mirror_prepare_stats(struct nfs42_layoutstat_args *args, break; if (!mirror->mirror_ds) continue; + if (!test_and_clear_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags)) + continue; /* mirror refcount put in cleanup_layoutstats */ if (!atomic_inc_not_zero(&mirror->ref)) continue; diff --git a/fs/nfs/flexfilelayout/flexfilelayout.h b/fs/nfs/flexfilelayout/flexfilelayout.h index 3ee0c9fcea76..09f292e3a4ad 100644 --- a/fs/nfs/flexfilelayout/flexfilelayout.h +++ b/fs/nfs/flexfilelayout/flexfilelayout.h @@ -81,12 +81,15 @@ struct nfs4_ff_layout_mirror { struct rpc_cred __rcu *rw_cred; atomic_t ref; spinlock_t lock; + unsigned long flags; struct nfs4_ff_layoutstat read_stat; struct nfs4_ff_layoutstat write_stat; ktime_t start_time; u32 report_interval; }; +#define NFS4_FF_MIRROR_STAT_AVAIL (0) + struct nfs4_ff_layout_segment { struct pnfs_layout_segment generic_hdr; u64 stripe_unit;