[nfsv4] [PATCH 1/3] Allow the client to inform the MDS of statistics

Thomas Haynes <thomas.haynes@primarydata.com> Fri, 16 May 2014 00:56 UTC

Return-Path: <thomas.haynes@primarydata.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0D32E1A06D3 for <nfsv4@ietfa.amsl.com>; Thu, 15 May 2014 17:56:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fM1u07e-iJ_I for <nfsv4@ietfa.amsl.com>; Thu, 15 May 2014 17:56:30 -0700 (PDT)
Received: from mail-pa0-f45.google.com (mail-pa0-f45.google.com [209.85.220.45]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CE15D1A06C9 for <nfsv4@ietf.org>; Thu, 15 May 2014 17:56:30 -0700 (PDT)
Received: by mail-pa0-f45.google.com with SMTP id ey11so1782868pad.4 for <nfsv4@ietf.org>; Thu, 15 May 2014 17:56:23 -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=wr0Ac7qwdZnFeabKzwZNMDhjfhNVHdp8xGHACXQTPEA=; b=dXYeaJdRq1kjdQNQMnsNu/a6uZLVVjRw0EvTWolS9pbrXpzyFg29He7iOU/WBV5lpD IrzMB7D6bhj9jkShWstTPICoT0mRcSaJu9XCiPtaZJfxFHi3EEk4v1hqV2yLKB0nwfnN /6YVXdwxadrslKS721hDcjWS2nQl8XyymVcLgZhADORlBF6KC7+urmlQLe3e9jWrZ5PB eeFJbvfzT/+UAQ+dLLzc8siFVFdp64vGrQKBF427pvrPfpSwNHKsSoBfw+4i9K0IbZLS XyVeiz300Q/QOj7IKEk2UF4K0izr/cGKXXB3ZRWPb+aDj67BXBeCrATVzwgjSUpjFBct p4LQ==
X-Gm-Message-State: ALoCoQmDITZ+yM925A0uIdEe2wS+O6pzU2gX2FFLojl2epnSdKbh24cRTN9x/md05OsUsJrw9Kmx
X-Received: by 10.68.178.131 with SMTP id cy3mr16575309pbc.146.1400201783639; Thu, 15 May 2014 17:56:23 -0700 (PDT)
Received: from kitty.kitty (ip98-184-165-70.tu.ok.cox.net. [98.184.165.70]) by mx.google.com with ESMTPSA id ys7sm20497376pac.25.2014.05.15.17.56.22 for <multiple recipients> (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 May 2014 17:56:23 -0700 (PDT)
X-Google-Original-From: Thomas Haynes <Thomas.Haynes@primarydata.com>
From: Thomas Haynes <thomas.haynes@primarydata.com>
To: nfsv4@ietf.org
Date: Thu, 15 May 2014 17:56:07 -0700
Message-Id: <1400201769-40352-2-git-send-email-Thomas.Haynes@primarydata.com>
X-Mailer: git-send-email 1.9.0
In-Reply-To: <1400201769-40352-1-git-send-email-Thomas.Haynes@primarydata.com>
References: <1400201769-40352-1-git-send-email-Thomas.Haynes@primarydata.com>
Archived-At: http://mailarchive.ietf.org/arch/msg/nfsv4/T8Sj4_7rYFT2YofxB3sdVurrs6w
Subject: [nfsv4] [PATCH 1/3] Allow the client to inform the MDS of statistics
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 16 May 2014 00:56:33 -0000

From: Tom Haynes <Thomas.Haynes@primarydata.com>

Signed-off-by: Tom Haynes <Thomas.Haynes@primarydata.com>
---
 Makefile                         |  4 ++++
 dotx.d/Makefile                  | 23 +++++++++++++----------
 dotx.d/layoutstats_args.x        | 10 ++++++++++
 dotx.d/layoutstats_res.x         |  5 +++++
 dotx.d/type_io_info.x            |  4 ++++
 nfsv42_middle_errors.xml         | 31 +++++++++++++++++++++++++++++++
 nfsv42_middle_new_errors.xml     | 31 +++++++++++++++++++++++++++++++
 nfsv42_middle_op_layoutstats.xml | 38 ++++++++++++++++++++++++++++++++++++++
 nfsv42_middle_op_mandlist.xml    |  1 +
 9 files changed, 137 insertions(+), 10 deletions(-)
 create mode 100644 dotx.d/layoutstats_args.x
 create mode 100644 dotx.d/layoutstats_res.x
 create mode 100644 dotx.d/type_io_info.x
 create mode 100644 nfsv42_middle_op_layoutstats.xml

diff --git a/Makefile b/Makefile
index 6b65a00..3a81c8f 100755
--- a/Makefile
+++ b/Makefile
@@ -355,6 +355,9 @@ AUTOGEN =	\
 		autogen/layoutget_res.xml \
 		autogen/layoutreturn_args.xml \
 		autogen/layoutreturn_res.xml \
+		autogen/type_io_info.xml \
+		autogen/layoutstats_args.xml \
+		autogen/layoutstats_res.xml \
 		autogen/link_args.xml \
 		autogen/link_res.xml \
 		autogen/lock_args.xml \
@@ -448,6 +451,7 @@ IDXMLSRC_BASE = \
 	${DOC_PREFIX}_middle_op_deallocate.xml \
 	${DOC_PREFIX}_middle_op_io_advise.xml \
 	${DOC_PREFIX}_middle_op_layoutreturn.xml \
+	${DOC_PREFIX}_middle_op_layoutstats.xml \
 	${DOC_PREFIX}_middle_op_offload_cancel.xml \
 	${DOC_PREFIX}_middle_op_offload_status.xml \
 	${DOC_PREFIX}_middle_op_read_plus.xml \
diff --git a/dotx.d/Makefile b/dotx.d/Makefile
index 928bd5b..555b9ee 100755
--- a/dotx.d/Makefile
+++ b/dotx.d/Makefile
@@ -106,16 +106,16 @@ FORE_OPS_AS_IS2 = \
 		want_delegation_res.x \
 		destroy_clientid_args.x \
 		destroy_clientid_res.x \
-                reclaim_complete_args.x \
-                reclaim_complete_res.x \
-                copy_args.x \
-                copy_res.x \
-                copy_notify_args.x \
-                copy_notify_res.x \
-                offload_cancel_args.x \
-                offload_cancel_res.x \
-                offload_status_args.x \
-                offload_status_res.x \
+		reclaim_complete_args.x \
+		reclaim_complete_res.x \
+		copy_args.x \
+		copy_res.x \
+		copy_notify_args.x \
+		copy_notify_res.x \
+		offload_cancel_args.x \
+		offload_cancel_res.x \
+		offload_status_args.x \
+		offload_status_res.x \
 		allocate_args.x \
 		allocate_res.x \
 		deallocate_args.x \
@@ -123,6 +123,9 @@ FORE_OPS_AS_IS2 = \
 		type_io_advise.x \
 		io_advise_args.x \
 		io_advise_res.x \
+		type_io_info.x \
+		layoutstats_args.x \
+		layoutstats_res.x \
 		read_plus_args.x \
 		read_plus_content.x \
 		read_plus_res_pre.x \
diff --git a/dotx.d/layoutstats_args.x b/dotx.d/layoutstats_args.x
new file mode 100644
index 0000000..61e8eee
--- /dev/null
+++ b/dotx.d/layoutstats_args.x
@@ -0,0 +1,10 @@
+
+struct LAYOUTSTATS4args {
+        /* CURRENT_FH: file */
+        offset4                 lsa_offset;
+        length4                 lsa_length;
+        stateid4                lsa_stateid;
+	io_info4		lsa_read;
+	io_info4		lsa_write;
+        layoutupdate4           lsa_layoutupdate;
+};
diff --git a/dotx.d/layoutstats_res.x b/dotx.d/layoutstats_res.x
new file mode 100644
index 0000000..6928863
--- /dev/null
+++ b/dotx.d/layoutstats_res.x
@@ -0,0 +1,5 @@
+
+struct LAYOUTSTATS4res {
+	nfsstat4	lsr_status;
+};
+
diff --git a/dotx.d/type_io_info.x b/dotx.d/type_io_info.x
new file mode 100644
index 0000000..fa1a22a
--- /dev/null
+++ b/dotx.d/type_io_info.x
@@ -0,0 +1,4 @@
+struct io_info4 {
+	uint32_t	ii_count;
+	uint64_t	ii_bytes;
+};
diff --git a/nfsv42_middle_errors.xml b/nfsv42_middle_errors.xml
index c8ecd2d..73f255c 100644
--- a/nfsv42_middle_errors.xml
+++ b/nfsv42_middle_errors.xml
@@ -1955,6 +1955,37 @@
         NFS4ERR_WRONG_TYPE
       </c>
 
+      <c>LAYOUTSTATS</c>
+      <c>
+        NFS4ERR_ADMIN_REVOKED,
+        NFS4ERR_BADXDR,
+        NFS4ERR_BAD_STATEID,
+        NFS4ERR_DEADSESSION,
+        NFS4ERR_DELAY,
+        NFS4ERR_DELEG_REVOKED,
+        NFS4ERR_EXPIRED,
+        NFS4ERR_FHEXPIRED,
+        NFS4ERR_GRACE,
+        NFS4ERR_INVAL,
+        NFS4ERR_ISDIR,
+        NFS4ERR_MOVED,
+        NFS4ERR_NOFILEHANDLE,
+        NFS4ERR_NOTSUPP,
+        NFS4ERR_NO_GRACE,
+        NFS4ERR_OLD_STATEID,
+        NFS4ERR_OP_NOT_IN_SESSION,
+        NFS4ERR_REP_TOO_BIG,
+        NFS4ERR_REP_TOO_BIG_TO_CACHE,
+        NFS4ERR_REQ_TOO_BIG,
+        NFS4ERR_RETRY_UNCACHED_REP,
+        NFS4ERR_SERVERFAULT,
+        NFS4ERR_STALE,
+        NFS4ERR_TOO_MANY_OPS,
+        NFS4ERR_UNKNOWN_LAYOUTTYPE,
+        NFS4ERR_WRONG_CRED,
+        NFS4ERR_WRONG_TYPE
+      </c>
+
       <c>LINK</c>
       <c>
         NFS4ERR_ACCESS,
diff --git a/nfsv42_middle_new_errors.xml b/nfsv42_middle_new_errors.xml
index 053a629..cc18168 100644
--- a/nfsv42_middle_new_errors.xml
+++ b/nfsv42_middle_new_errors.xml
@@ -269,6 +269,37 @@
         NFS4ERR_WRONG_TYPE
       </c>
 
+      <c>LAYOUTSTATS</c>
+      <c>
+        NFS4ERR_ADMIN_REVOKED,
+        NFS4ERR_BADXDR,
+        NFS4ERR_BAD_STATEID,
+        NFS4ERR_DEADSESSION,
+        NFS4ERR_DELAY,
+        NFS4ERR_DELEG_REVOKED,
+        NFS4ERR_EXPIRED,
+        NFS4ERR_FHEXPIRED,
+        NFS4ERR_GRACE,
+        NFS4ERR_INVAL,
+        NFS4ERR_ISDIR,
+        NFS4ERR_MOVED,
+        NFS4ERR_NOFILEHANDLE,
+        NFS4ERR_NOTSUPP,
+        NFS4ERR_NO_GRACE,
+        NFS4ERR_OLD_STATEID,
+        NFS4ERR_OP_NOT_IN_SESSION,
+        NFS4ERR_REP_TOO_BIG,
+        NFS4ERR_REP_TOO_BIG_TO_CACHE,
+        NFS4ERR_REQ_TOO_BIG,
+        NFS4ERR_RETRY_UNCACHED_REP,
+        NFS4ERR_SERVERFAULT,
+        NFS4ERR_STALE,
+        NFS4ERR_TOO_MANY_OPS,
+        NFS4ERR_UNKNOWN_LAYOUTTYPE,
+        NFS4ERR_WRONG_CRED,
+        NFS4ERR_WRONG_TYPE
+      </c>
+
       <c>OFFLOAD_CANCEL</c>
       <c>
         NFS4ERR_ADMIN_REVOKED,
diff --git a/nfsv42_middle_op_layoutstats.xml b/nfsv42_middle_op_layoutstats.xml
new file mode 100644
index 0000000..4784b13
--- /dev/null
+++ b/nfsv42_middle_op_layoutstats.xml
@@ -0,0 +1,38 @@
+<!-- Copyright (C) The IETF Trust (2014) -->
+<!-- Copyright (C) The Internet Society (2014) -->
+
+<section anchor='op:layout_event' title='Operation 70: LAYOUTSTATS - Provide Statistics for the Layout'>
+  <section toc='exclude' title="ARGUMENT">
+    <?rfc include='autogen/type_layoutupdate4.xml'?>
+    <?rfc include='autogen/type_io_info.xml'?>
+    <?rfc include='autogen/layoutstats_args.xml'?>
+  </section>
+
+  <section toc='exclude' title="RESULT">
+    <?rfc include='autogen/layoutstats_res.xml'?>
+  </section>
+
+  <section toc='exclude' title="DESCRIPTION">
+    <t>
+      The client can use LAYOUTSTATS to inform the metadata server
+      about its interaction with the layout represented by the
+      current filehandle, client ID (derived from the session ID
+      in the preceding SEQUENCE operation), byte-range (lea_offset
+      + lea_length), and lea_stateid. lsa_read and lsa_write allow
+      for non-Layout Type specific statistices to be reported.  The
+      remaining information the client is presenting is specific
+      to the Layout Type and presented in the lea_layoutupdate
+      field. Each Layout Type MUST define the contents of
+      lea_layoutupdate in their respective specifications.
+    </t>
+
+    <t>
+      LAYOUTSTATS can be combined with IO_ADVISE (see
+      <xref target='op:io_advise' />) to augment the decision making
+      process of how the metadata server handles a file.  I.e.,
+      IO_ADVISE lets the server know that a byte range has a certain
+      characteristic, but not necessarily the intensity of that
+      characteristic.
+    </t>
+  </section>
+</section>
diff --git a/nfsv42_middle_op_mandlist.xml b/nfsv42_middle_op_mandlist.xml
index 4ebd0bb..b590a6e 100644
--- a/nfsv42_middle_op_mandlist.xml
+++ b/nfsv42_middle_op_mandlist.xml
@@ -141,6 +141,7 @@
       <c>LAYOUTCOMMIT         </c> <c> OPT </c> <c> pNFS (REQ)   </c>
       <c>LAYOUTGET            </c> <c> OPT </c> <c> pNFS (REQ)   </c>
       <c>LAYOUTRETURN         </c> <c> OPT </c> <c> pNFS (REQ)   </c>
+      <c>LAYOUTSTATS          </c> <c> OPT </c> <c> pNFS (REQ)   </c>
       <c>LINK                 </c> <c> OPT </c> <c>              </c>
       <c>LOCK                 </c> <c> REQ </c> <c>              </c>
       <c>LOCKT                </c> <c> REQ </c> <c>              </c>
-- 
1.9.0