public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Alexey Shvetsov" <alexxy@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/sci:master commit in: sys-cluster/lustre/, sys-cluster/lustre/files/
Date: Tue, 20 May 2014 12:43:04 +0000 (UTC)	[thread overview]
Message-ID: <1400589758.ade0a4c9299533957a2316c17b082ffa06376e5d.alexxy@gentoo> (raw)

commit:     ade0a4c9299533957a2316c17b082ffa06376e5d
Author:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
AuthorDate: Tue May 20 12:42:38 2014 +0000
Commit:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
CommitDate: Tue May 20 12:42:38 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=ade0a4c9

Update patches

Package-Manager: portage-2.2.10
RepoMan-Options: --force

---
 sys-cluster/lustre/ChangeLog                       |   15 +
 ...cfs-Move-NRS-TBF-proc-handling-to-seq_fil.patch |    4 +-
 ...cfs-update-zfs-proc-handling-to-seq_files.patch |    4 +-
 ...rocfs-move-osp-proc-handling-to-seq_files.patch |    6 +-
 ...rocfs-symlinks-for-forward-compatibility.patch} |   12 +-
 ...rocfs-move-lod-proc-handling-to-seq_files.patch |  591 -------
 ...fs-move-mdd-ofd-proc-handling-to-seq_fil.patch} |    4 +-
 ...cfs-move-mdt-mds-proc-handling-to-seq_fil.patch | 1633 --------------------
 ...-Backport-shrinker-changes-from-upstream.patch} |    6 +-
 sys-cluster/lustre/lustre-9999.ebuild              |    8 +-
 10 files changed, 36 insertions(+), 2247 deletions(-)

diff --git a/sys-cluster/lustre/ChangeLog b/sys-cluster/lustre/ChangeLog
index 8ad52ac..257e94a 100644
--- a/sys-cluster/lustre/ChangeLog
+++ b/sys-cluster/lustre/ChangeLog
@@ -2,6 +2,21 @@
 # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
 # $Header: $
 
+  20 May 2014; Alexey Shvetsov <alexxy@gentoo.org>
+  +files/0004-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch,
+  +files/0005-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch,
+  +files/0006-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch,
+  -files/0004-LU-3319-procfs-move-lod-proc-handling-to-seq_files.patch,
+  -files/0005-LU-3319-procfs-move-mdt-mds-proc-handling-to-seq_fil.patch,
+  -files/0006-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch,
+  -files/0007-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch,
+  -files/0008-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch,
+  files/0001-LU-3319-procfs-Move-NRS-TBF-proc-handling-to-seq_fil.patch,
+  files/0002-LU-3319-procfs-update-zfs-proc-handling-to-seq_files.patch,
+  files/0003-LU-3319-procfs-move-osp-proc-handling-to-seq_files.patch,
+  lustre-9999.ebuild:
+  Update patches
+
   22 Apr 2014; Alexey Shvetsov <alexxy@gentoo.org>
   files/0006-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch,
   files/0007-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch:

diff --git a/sys-cluster/lustre/files/0001-LU-3319-procfs-Move-NRS-TBF-proc-handling-to-seq_fil.patch b/sys-cluster/lustre/files/0001-LU-3319-procfs-Move-NRS-TBF-proc-handling-to-seq_fil.patch
index 537f248..1b625a8 100644
--- a/sys-cluster/lustre/files/0001-LU-3319-procfs-Move-NRS-TBF-proc-handling-to-seq_fil.patch
+++ b/sys-cluster/lustre/files/0001-LU-3319-procfs-Move-NRS-TBF-proc-handling-to-seq_fil.patch
@@ -1,7 +1,7 @@
-From 0267429e006d1f7ccfe63cbb90849ba430f649a0 Mon Sep 17 00:00:00 2001
+From d6775461847a80d82de476b78fc2322702c516af Mon Sep 17 00:00:00 2001
 From: James Simmons <uja.ornl@gmail.com>
 Date: Tue, 25 Feb 2014 12:54:05 -0500
-Subject: [PATCH 1/8] LU-3319 procfs: Move NRS TBF proc handling to seq_files
+Subject: [PATCH 1/6] LU-3319 procfs: Move NRS TBF proc handling to seq_files
 
 With newer kernels moving their proc file system handling
 to seq_files this patch migrates the proc handling for NRS

diff --git a/sys-cluster/lustre/files/0002-LU-3319-procfs-update-zfs-proc-handling-to-seq_files.patch b/sys-cluster/lustre/files/0002-LU-3319-procfs-update-zfs-proc-handling-to-seq_files.patch
index 975647d..a44d310 100644
--- a/sys-cluster/lustre/files/0002-LU-3319-procfs-update-zfs-proc-handling-to-seq_files.patch
+++ b/sys-cluster/lustre/files/0002-LU-3319-procfs-update-zfs-proc-handling-to-seq_files.patch
@@ -1,7 +1,7 @@
-From 1d3e2fbd8661a770d2d64a2402076577ec920e9c Mon Sep 17 00:00:00 2001
+From c16260bdb1cd63a50d37f2161279fc71b9e03efb Mon Sep 17 00:00:00 2001
 From: James Simmons <uja.ornl@gmail.com>
 Date: Wed, 23 Apr 2014 09:31:09 -0400
-Subject: [PATCH 2/8] LU-3319 procfs: update zfs proc handling to seq_files
+Subject: [PATCH 2/6] LU-3319 procfs: update zfs proc handling to seq_files
 
 Migrate all zfs proc handling to using strictly seq_files.
 

diff --git a/sys-cluster/lustre/files/0003-LU-3319-procfs-move-osp-proc-handling-to-seq_files.patch b/sys-cluster/lustre/files/0003-LU-3319-procfs-move-osp-proc-handling-to-seq_files.patch
index d9bfa0b..5361aca 100644
--- a/sys-cluster/lustre/files/0003-LU-3319-procfs-move-osp-proc-handling-to-seq_files.patch
+++ b/sys-cluster/lustre/files/0003-LU-3319-procfs-move-osp-proc-handling-to-seq_files.patch
@@ -1,7 +1,7 @@
-From 8128e9daa5f394f97bcfcc3f1da0b8285754c5c4 Mon Sep 17 00:00:00 2001
+From 63f3f2e29c2745b3491712a4a3f7a868ec6ece8d Mon Sep 17 00:00:00 2001
 From: James Simmons <uja.ornl@gmail.com>
 Date: Thu, 24 Apr 2014 12:04:57 -0400
-Subject: [PATCH 3/8] LU-3319 procfs: move osp proc handling to seq_files
+Subject: [PATCH 3/6] LU-3319 procfs: move osp proc handling to seq_files
 
 With 3.10 linux kernel and above proc handling now only
 uses struct seq_files. This patch migrates the osp
@@ -818,7 +818,7 @@ index 0a1cafa..27e3011 100644
  	class_unregister_type(LUSTRE_OSP_NAME);
  	lu_kmem_fini(osp_caches);
 diff --git a/lustre/osp/osp_internal.h b/lustre/osp/osp_internal.h
-index e220914..d8d4a2b 100644
+index 3a5d0a6..f183955 100644
 --- a/lustre/osp/osp_internal.h
 +++ b/lustre/osp/osp_internal.h
 @@ -586,7 +586,6 @@ int osp_write_last_oid_seq_files(struct lu_env *env, struct osp_device *osp,

diff --git a/sys-cluster/lustre/files/0006-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch b/sys-cluster/lustre/files/0004-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch
similarity index 95%
rename from sys-cluster/lustre/files/0006-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch
rename to sys-cluster/lustre/files/0004-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch
index ae7ef77..b835516 100644
--- a/sys-cluster/lustre/files/0006-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch
+++ b/sys-cluster/lustre/files/0004-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch
@@ -1,7 +1,7 @@
-From c12b96a679cfc5132b68e61c38e7756b9d02a59c Mon Sep 17 00:00:00 2001
+From ae21b1ad797973ad686dfc1c0cad8d313ddaf4d7 Mon Sep 17 00:00:00 2001
 From: Andreas Dilger <andreas.dilger@intel.com>
 Date: Tue, 6 May 2014 09:51:45 -0400
-Subject: [PATCH 6/8] LU-2096 lprocfs: symlinks for forward compatibility
+Subject: [PATCH 4/6] LU-2096 lprocfs: symlinks for forward compatibility
 
 Currently, the "ofd" device is still named "obdfilter" in the Lustre
 configuration and in /proc/fs/lustre.  It would be better to name it
@@ -36,7 +36,7 @@ Signed-off-by: Alexey Shvetsov <alexxy@gentoo.org>
  6 files changed, 49 insertions(+), 7 deletions(-)
 
 diff --git a/lustre/include/obd.h b/lustre/include/obd.h
-index b161c115..78b5563 100644
+index 3abcc4d..a79c901 100644
 --- a/lustre/include/obd.h
 +++ b/lustre/include/obd.h
 @@ -516,8 +516,8 @@ struct niobuf_local {
@@ -51,10 +51,10 @@ index b161c115..78b5563 100644
  #define LUSTRE_LOV_NAME         "lov"
  #define LUSTRE_MGS_NAME         "mgs"
 diff --git a/lustre/mgs/mgs_llog.c b/lustre/mgs/mgs_llog.c
-index 55ffe90..c19ba7b4 100644
+index aca72e3..cd1174d 100644
 --- a/lustre/mgs/mgs_llog.c
 +++ b/lustre/mgs/mgs_llog.c
-@@ -2469,7 +2469,7 @@ static int mgs_write_log_ost(const struct lu_env *env,
+@@ -2450,7 +2450,7 @@ static int mgs_write_log_ost(const struct lu_env *env,
          }
  
          /*
@@ -63,7 +63,7 @@ index 55ffe90..c19ba7b4 100644
          setup /dev/loop2 ldiskfs f|n errors=remount-ro,user_xattr
          */
          if (class_find_param(ptr, PARAM_FAILMODE, &ptr) == 0)
-@@ -2485,7 +2485,7 @@ static int mgs_write_log_ost(const struct lu_env *env,
+@@ -2466,7 +2466,7 @@ static int mgs_write_log_ost(const struct lu_env *env,
                  snprintf(mti->mti_uuid, sizeof(mti->mti_uuid),
                           "%s_UUID", mti->mti_svname);
  	rc = record_attach(env, llh, mti->mti_svname,

diff --git a/sys-cluster/lustre/files/0004-LU-3319-procfs-move-lod-proc-handling-to-seq_files.patch b/sys-cluster/lustre/files/0004-LU-3319-procfs-move-lod-proc-handling-to-seq_files.patch
deleted file mode 100644
index 7ccbf0e..0000000
--- a/sys-cluster/lustre/files/0004-LU-3319-procfs-move-lod-proc-handling-to-seq_files.patch
+++ /dev/null
@@ -1,591 +0,0 @@
-From e4533607955d7358071e906746eed32e5c25a90f Mon Sep 17 00:00:00 2001
-From: James Simmons <uja.ornl@gmail.com>
-Date: Wed, 26 Mar 2014 19:57:44 -0400
-Subject: [PATCH 4/8] LU-3319 procfs: move lod proc handling to seq_files
-
-With 3.10 linux kernel and above proc handling now only
-uses struct seq_files. This patch migrates the lod
-layer proc entries over to using seq_files.
-
-Signed-off-by: James Simmons <uja.ornl@gmail.com>
-Change-Id: Iaa0f617fcd430e91f12afbc0faf6906fd275a7a5
----
- lustre/lod/lod_dev.c      |  23 ++--
- lustre/lod/lod_internal.h |   1 -
- lustre/lod/lod_pool.c     |   7 +-
- lustre/lod/lproc_lod.c    | 267 +++++++++++++++++++++++++---------------------
- 4 files changed, 157 insertions(+), 141 deletions(-)
-
-diff --git a/lustre/lod/lod_dev.c b/lustre/lod/lod_dev.c
-index 8a6743d..e63c6ed 100644
---- a/lustre/lod/lod_dev.c
-+++ b/lustre/lod/lod_dev.c
-@@ -289,12 +289,10 @@ static int lod_process_config(const struct lu_env *env,
- 	}
- 
- 	case LCFG_PARAM: {
--		struct lprocfs_static_vars  v = { 0 };
--		struct obd_device	  *obd = lod2obd(lod);
-+		struct obd_device *obd = lod2obd(lod);
- 
--		lprocfs_lod_init_vars(&v);
--
--		rc = class_process_proc_param(PARAM_LOV, v.obd_vars, lcfg, obd);
-+		rc = class_process_proc_seq_param(PARAM_LOV, obd->obd_vars,
-+						  lcfg, obd);
- 		if (rc > 0)
- 			rc = 0;
- 		GOTO(out, rc);
-@@ -891,7 +889,6 @@ static struct obd_ops lod_obd_device_ops = {
- 
- static int __init lod_mod_init(void)
- {
--	struct lprocfs_static_vars  lvars = { 0 };
- 	struct obd_type	*type;
- 	int rc;
- 
-@@ -899,11 +896,9 @@ static int __init lod_mod_init(void)
- 	if (rc)
- 		return rc;
- 
--	lprocfs_lod_init_vars(&lvars);
--
- 	rc = class_register_type(&lod_obd_device_ops, NULL, true, NULL,
- #ifndef HAVE_ONLY_PROCFS_SEQ
--				 lvars.module_vars,
-+				 NULL,
- #endif
- 				 LUSTRE_LOD_NAME, &lod_device_type);
- 	if (rc) {
-@@ -917,18 +912,18 @@ static int __init lod_mod_init(void)
- 		return rc;
- 
- 	type = class_search_type(LUSTRE_LOD_NAME);
--	type->typ_procsym = lprocfs_register("lov", proc_lustre_root,
--					     NULL, NULL);
--	if (IS_ERR(type->typ_procsym))
-+	type->typ_procsym = lprocfs_seq_register("lov", proc_lustre_root,
-+						 NULL, NULL);
-+	if (IS_ERR(type->typ_procsym)) {
- 		CERROR("lod: can't create compat entry \"lov\": %d\n",
- 		       (int)PTR_ERR(type->typ_procsym));
-+		type->typ_procsym = NULL;
-+	}
- 	return rc;
- }
- 
- static void __exit lod_mod_exit(void)
- {
--	lprocfs_try_remove_proc_entry("lov", proc_lustre_root);
--
- 	class_unregister_type(LUSTRE_LOD_NAME);
- 	lu_kmem_fini(lod_caches);
- }
-diff --git a/lustre/lod/lod_internal.h b/lustre/lod/lod_internal.h
-index 4eab8cd..d4928c7 100644
---- a/lustre/lod/lod_internal.h
-+++ b/lustre/lod/lod_internal.h
-@@ -441,7 +441,6 @@ int qos_add_tgt(struct lod_device*, struct lod_tgt_desc *);
- int qos_del_tgt(struct lod_device *, struct lod_tgt_desc *);
- 
- /* lproc_lod.c */
--void lprocfs_lod_init_vars(struct lprocfs_static_vars *lvars);
- int lod_procfs_init(struct lod_device *lod);
- void lod_procfs_fini(struct lod_device *lod);
- 
-diff --git a/lustre/lod/lod_pool.c b/lustre/lod/lod_pool.c
-index 149507f..810e1aa 100644
---- a/lustre/lod/lod_pool.c
-+++ b/lustre/lod/lod_pool.c
-@@ -283,7 +283,7 @@ static int pool_proc_open(struct inode *inode, struct file *file)
- 	rc = seq_open(file, &pool_proc_ops);
- 	if (!rc) {
- 		struct seq_file *s = file->private_data;
--		s->private = PROC_I(inode)->pde->data;
-+		s->private = PDE_DATA(inode);
- 	}
- 	return rc;
- }
-@@ -462,7 +462,10 @@ int lod_pool_new(struct obd_device *obd, char *poolname)
- #ifdef LPROCFS
- 	lod_pool_getref(new_pool);
- 	new_pool->pool_proc_entry = lprocfs_add_simple(lod->lod_pool_proc_entry,
--						       poolname, NULL, NULL,
-+						       poolname,
-+#ifndef HAVE_ONLY_PROCFS_SEQ
-+						       NULL, NULL,
-+#endif
- 						       new_pool,
- 						       &pool_proc_operations);
- 	if (IS_ERR(new_pool->pool_proc_entry)) {
-diff --git a/lustre/lod/lproc_lod.c b/lustre/lod/lproc_lod.c
-index e976063..1598658 100644
---- a/lustre/lod/lproc_lod.c
-+++ b/lustre/lod/lproc_lod.c
-@@ -42,23 +42,23 @@
- #include <lustre_param.h>
- 
- #ifdef LPROCFS
--static int lod_rd_stripesize(char *page, char **start, off_t off, int count,
--			     int *eof, void *data)
-+static int lod_stripesize_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev  = (struct obd_device *)data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod  = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, LPU64"\n",
-+	return seq_printf(m, LPU64"\n",
- 			lod->lod_desc.ld_default_stripe_size);
- }
- 
--static int lod_wr_stripesize(struct file *file, const char *buffer,
--			     unsigned long count, void *data)
-+static ssize_t
-+lod_stripesize_seq_write(struct file *file, const char *buffer,
-+			 size_t count, loff_t *off)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 	__u64 val;
- 	int rc;
-@@ -73,24 +73,25 @@ static int lod_wr_stripesize(struct file *file, const char *buffer,
- 	lod->lod_desc.ld_default_stripe_size = val;
- 	return count;
- }
-+LPROC_SEQ_FOPS(lod_stripesize);
- 
--static int lod_rd_stripeoffset(char *page, char **start, off_t off, int count,
--			       int *eof, void *data)
-+static int lod_stripeoffset_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod  = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, LPU64"\n",
-+	return seq_printf(m, LPU64"\n",
- 			lod->lod_desc.ld_default_stripe_offset);
- }
- 
--static int lod_wr_stripeoffset(struct file *file, const char *buffer,
--			       unsigned long count, void *data)
-+static ssize_t
-+lod_stripeoffset_seq_write(struct file *file, const char *buffer,
-+			   size_t count, loff_t *off)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 	__u64 val;
- 	int rc;
-@@ -104,23 +105,24 @@ static int lod_wr_stripeoffset(struct file *file, const char *buffer,
- 	lod->lod_desc.ld_default_stripe_offset = val;
- 	return count;
- }
-+LPROC_SEQ_FOPS(lod_stripeoffset);
- 
--static int lod_rd_stripetype(char *page, char **start, off_t off, int count,
--			     int *eof, void *data)
-+static int lod_stripetype_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod  = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, "%u\n", lod->lod_desc.ld_pattern);
-+	return seq_printf(m, "%u\n", lod->lod_desc.ld_pattern);
- }
- 
--static int lod_wr_stripetype(struct file *file, const char *buffer,
--			     unsigned long count, void *data)
-+static ssize_t
-+lod_stripetype_seq_write(struct file *file, const char *buffer,
-+			 size_t count, loff_t *off)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 	int val, rc;
- 
-@@ -134,24 +136,25 @@ static int lod_wr_stripetype(struct file *file, const char *buffer,
- 	lod->lod_desc.ld_pattern = val;
- 	return count;
- }
-+LPROC_SEQ_FOPS(lod_stripetype);
- 
--static int lod_rd_stripecount(char *page, char **start, off_t off, int count,
--			      int *eof, void *data)
-+static int lod_stripecount_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod  = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, "%d\n",
-+	return seq_printf(m, "%d\n",
- 			(__s16)(lod->lod_desc.ld_default_stripe_count + 1) - 1);
- }
- 
--static int lod_wr_stripecount(struct file *file, const char *buffer,
--			      unsigned long count, void *data)
-+static ssize_t
-+lod_stripecount_seq_write(struct file *file, const char *buffer,
-+			  size_t count, loff_t *off)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 	int val, rc;
- 
-@@ -165,62 +168,58 @@ static int lod_wr_stripecount(struct file *file, const char *buffer,
- 	lod->lod_desc.ld_default_stripe_count = val;
- 	return count;
- }
-+LPROC_SEQ_FOPS(lod_stripecount);
- 
--static int lod_rd_numobd(char *page, char **start, off_t off, int count,
--			 int *eof, void *data)
-+static int lod_numobd_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device*)data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod  = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, "%u\n", lod->lod_desc.ld_tgt_count);
--
-+	return seq_printf(m, "%u\n", lod->lod_desc.ld_tgt_count);
- }
-+LPROC_SEQ_FOPS_RO(lod_numobd);
- 
--static int lod_rd_activeobd(char *page, char **start, off_t off, int count,
--			    int *eof, void *data)
-+static int lod_activeobd_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device* dev = (struct obd_device*)data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod  = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, "%u\n",
--			lod->lod_desc.ld_active_tgt_count);
-+	return seq_printf(m, "%u\n", lod->lod_desc.ld_active_tgt_count);
- }
-+LPROC_SEQ_FOPS_RO(lod_activeobd);
- 
--static int lod_rd_desc_uuid(char *page, char **start, off_t off, int count,
--			    int *eof, void *data)
-+static int lod_desc_uuid_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device*) data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod  = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, "%s\n", lod->lod_desc.ld_uuid.uuid);
-+	return seq_printf(m, "%s\n", lod->lod_desc.ld_uuid.uuid);
- }
-+LPROC_SEQ_FOPS_RO(lod_desc_uuid);
- 
- /* free priority (0-255): how badly user wants to choose empty osts */
--static int lod_rd_qos_priofree(char *page, char **start, off_t off, int count,
--			       int *eof, void *data)
-+static int lod_qos_priofree_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device*) data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod = lu2lod_dev(dev->obd_lu_dev);
- 
- 	LASSERT(lod != NULL);
--	*eof = 1;
--	return snprintf(page, count, "%d%%\n",
-+	return seq_printf(m, "%d%%\n",
- 			(lod->lod_qos.lq_prio_free * 100 + 255) >> 8);
- }
- 
--static int lod_wr_qos_priofree(struct file *file, const char *buffer,
--			       unsigned long count, void *data)
-+static ssize_t
-+lod_qos_priofree_seq_write(struct file *file, const char *buffer,
-+			   size_t count, loff_t *off)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 	int val, rc;
- 
-@@ -238,24 +237,25 @@ static int lod_wr_qos_priofree(struct file *file, const char *buffer,
- 	lod->lod_qos.lq_reset = 1;
- 	return count;
- }
-+LPROC_SEQ_FOPS(lod_qos_priofree);
- 
--static int lod_rd_qos_thresholdrr(char *page, char **start, off_t off,
--				  int count, int *eof, void *data)
-+static int lod_qos_thresholdrr_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device*) data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, "%d%%\n",
-+	return seq_printf(m, "%d%%\n",
- 			(lod->lod_qos.lq_threshold_rr * 100 + 255) >> 8);
- }
- 
--static int lod_wr_qos_thresholdrr(struct file *file, const char *buffer,
--				  unsigned long count, void *data)
-+static ssize_t
-+lod_qos_thresholdrr_seq_write(struct file *file, const char *buffer,
-+			      size_t count, loff_t *off)
- {
--	struct obd_device *dev = (struct obd_device *)data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 	int val, rc;
- 
-@@ -273,23 +273,24 @@ static int lod_wr_qos_thresholdrr(struct file *file, const char *buffer,
- 	lod->lod_qos.lq_dirty = 1;
- 	return count;
- }
-+LPROC_SEQ_FOPS(lod_qos_thresholdrr);
- 
--static int lod_rd_qos_maxage(char *page, char **start, off_t off, int count,
--			     int *eof, void *data)
-+static int lod_qos_maxage_seq_show(struct seq_file *m, void *v)
- {
--	struct obd_device *dev = (struct obd_device*) data;
-+	struct obd_device *dev = m->private;
- 	struct lod_device *lod;
- 
- 	LASSERT(dev != NULL);
- 	lod = lu2lod_dev(dev->obd_lu_dev);
--	*eof = 1;
--	return snprintf(page, count, "%u Sec\n", lod->lod_desc.ld_qos_maxage);
-+	return seq_printf(m, "%u Sec\n", lod->lod_desc.ld_qos_maxage);
- }
- 
--static int lod_wr_qos_maxage(struct file *file, const char *buffer,
--			     unsigned long count, void *data)
-+static ssize_t
-+lod_qos_maxage_seq_write(struct file *file, const char *buffer,
-+			 size_t count, loff_t *off)
- {
--	struct obd_device	*dev = (struct obd_device *)data;
-+	struct seq_file		*m = file->private_data;
-+	struct obd_device	*dev = m->private;
- 	struct lustre_cfg_bufs	 bufs;
- 	struct lod_device	*lod;
- 	struct lu_device	*next;
-@@ -327,6 +328,7 @@ static int lod_wr_qos_maxage(struct file *file, const char *buffer,
- 
- 	return count;
- }
-+LPROC_SEQ_FOPS(lod_qos_maxage);
- 
- static void *lod_osts_seq_start(struct seq_file *p, loff_t *pos)
- {
-@@ -414,56 +416,63 @@ static const struct seq_operations lod_osts_sops = {
- 
- static int lod_osts_seq_open(struct inode *inode, struct file *file)
- {
--	struct proc_dir_entry *dp = PDE(inode);
- 	struct seq_file *seq;
- 	int rc;
- 
--	LPROCFS_ENTRY_CHECK(dp);
- 	rc = seq_open(file, &lod_osts_sops);
- 	if (rc)
- 		return rc;
- 
- 	seq = file->private_data;
--	seq->private = dp->data;
-+	seq->private = PDE_DATA(inode);
- 	return 0;
- }
- 
--static struct lprocfs_vars lprocfs_lod_obd_vars[] = {
--	{ "uuid",         lprocfs_rd_uuid,        0, 0 },
--	{ "stripesize",   lod_rd_stripesize,      lod_wr_stripesize, 0 },
--	{ "stripeoffset", lod_rd_stripeoffset,    lod_wr_stripeoffset, 0 },
--	{ "stripecount",  lod_rd_stripecount,     lod_wr_stripecount, 0 },
--	{ "stripetype",   lod_rd_stripetype,      lod_wr_stripetype, 0 },
--	{ "numobd",       lod_rd_numobd,          0, 0 },
--	{ "activeobd",    lod_rd_activeobd,       0, 0 },
--	{ "desc_uuid",    lod_rd_desc_uuid,       0, 0 },
--	{ "qos_prio_free",lod_rd_qos_priofree,    lod_wr_qos_priofree, 0 },
--	{ "qos_threshold_rr",  lod_rd_qos_thresholdrr, lod_wr_qos_thresholdrr, 0 },
--	{ "qos_maxage",   lod_rd_qos_maxage,      lod_wr_qos_maxage, 0 },
--	{ 0 }
--};
--
--static struct lprocfs_vars lprocfs_lod_osd_vars[] = {
--	{ "blocksize",    lprocfs_dt_rd_blksize, 0, 0 },
--	{ "kbytestotal",  lprocfs_dt_rd_kbytestotal, 0, 0 },
--	{ "kbytesfree",   lprocfs_dt_rd_kbytesfree, 0, 0 },
--	{ "kbytesavail",  lprocfs_dt_rd_kbytesavail, 0, 0 },
--	{ "filestotal",   lprocfs_dt_rd_filestotal, 0, 0 },
--	{ "filesfree",    lprocfs_dt_rd_filesfree, 0, 0 },
-+LPROC_SEQ_FOPS_RO_TYPE(lod, uuid);
-+
-+LPROC_SEQ_FOPS_RO_TYPE(lod, dt_blksize);
-+LPROC_SEQ_FOPS_RO_TYPE(lod, dt_kbytestotal);
-+LPROC_SEQ_FOPS_RO_TYPE(lod, dt_kbytesfree);
-+LPROC_SEQ_FOPS_RO_TYPE(lod, dt_kbytesavail);
-+LPROC_SEQ_FOPS_RO_TYPE(lod, dt_filestotal);
-+LPROC_SEQ_FOPS_RO_TYPE(lod, dt_filesfree);
-+
-+static struct lprocfs_seq_vars lprocfs_lod_obd_vars[] = {
-+	{ .name	=	"uuid",
-+	  .fops	=	&lod_uuid_fops		},
-+	{ .name	=	"stripesize",
-+	  .fops	=	&lod_stripesize_fops	},
-+	{ .name	=	"stripeoffset",
-+	  .fops	=	&lod_stripeoffset_fops	},
-+	{ .name	=	"stripecount",
-+	  .fops	=	&lod_stripecount_fops	},
-+	{ .name	=	"stripetype",
-+	  .fops	=	&lod_stripetype_fops	},
-+	{ .name	=	"numobd",
-+	  .fops	=	&lod_numobd_fops	},
-+	{ .name	=	"activeobd",
-+	  .fops	=	&lod_activeobd_fops	},
-+	{ .name	=	"desc_uuid",
-+	  .fops	=	&lod_desc_uuid_fops	},
-+	{ .name	=	"qos_prio_free",
-+	  .fops	=	&lod_qos_priofree_fops	},
-+	{ .name	=	"qos_threshold_rr",
-+	  .fops	=	&lod_qos_thresholdrr_fops },
-+	{ .name	=	"qos_maxage",
-+	  .fops	=	&lod_qos_maxage_fops	},
- 	{ 0 }
- };
- 
--static struct lprocfs_vars lprocfs_lod_module_vars[] = {
--	{ "num_refs",     lprocfs_rd_numrefs,     0, 0 },
-+static struct lprocfs_seq_vars lprocfs_lod_osd_vars[] = {
-+	{ "blocksize",		&lod_dt_blksize_fops		},
-+	{ "kbytestotal",	&lod_dt_kbytestotal_fops	},
-+	{ "kbytesfree",		&lod_dt_kbytesfree_fops		},
-+	{ "kbytesavail",	&lod_dt_kbytesavail_fops	},
-+	{ "filestotal",		&lod_dt_filestotal_fops		},
-+	{ "filesfree",		&lod_dt_filesfree_fops		},
- 	{ 0 }
- };
- 
--void lprocfs_lod_init_vars(struct lprocfs_static_vars *lvars)
--{
--	lvars->module_vars	= lprocfs_lod_module_vars;
--	lvars->obd_vars		= lprocfs_lod_obd_vars;
--}
--
- static const struct file_operations lod_proc_target_fops = {
- 	.owner   = THIS_MODULE,
- 	.open    = lod_osts_seq_open,
-@@ -474,21 +483,21 @@ static const struct file_operations lod_proc_target_fops = {
- 
- int lod_procfs_init(struct lod_device *lod)
- {
--	struct obd_device *obd = lod2obd(lod);
--	struct lprocfs_static_vars lvars;
--	cfs_proc_dir_entry_t *lov_proc_dir;
--	int rc;
-+	struct obd_device	*obd = lod2obd(lod);
-+	struct proc_dir_entry	*lov_proc_dir = NULL;
-+	struct obd_type		*type;
-+	int			 rc;
- 
--	lprocfs_lod_init_vars(&lvars);
--	rc = lprocfs_obd_setup(obd, lvars.obd_vars);
-+	obd->obd_vars = lprocfs_lod_obd_vars;
-+	rc = lprocfs_seq_obd_setup(obd);
- 	if (rc) {
- 		CERROR("%s: cannot setup procfs entry: %d\n",
- 		       obd->obd_name, rc);
- 		RETURN(rc);
- 	}
- 
--	rc = lprocfs_add_vars(obd->obd_proc_entry, lprocfs_lod_osd_vars,
--			      &lod->lod_dt_dev);
-+	rc = lprocfs_seq_add_vars(obd->obd_proc_entry, lprocfs_lod_osd_vars,
-+				  &lod->lod_dt_dev);
- 	if (rc) {
- 		CERROR("%s: cannot setup procfs entry: %d\n",
- 		       obd->obd_name, rc);
-@@ -503,9 +512,9 @@ int lod_procfs_init(struct lod_device *lod)
- 		GOTO(out, rc);
- 	}
- 
--	lod->lod_pool_proc_entry = lprocfs_register("pools",
--						    obd->obd_proc_entry,
--						    NULL, NULL);
-+	lod->lod_pool_proc_entry = lprocfs_seq_register("pools",
-+							obd->obd_proc_entry,
-+							NULL, NULL);
- 	if (IS_ERR(lod->lod_pool_proc_entry)) {
- 		rc = PTR_ERR(lod->lod_pool_proc_entry);
- 		lod->lod_pool_proc_entry = NULL;
-@@ -514,14 +523,24 @@ int lod_procfs_init(struct lod_device *lod)
- 		GOTO(out, rc);
- 	}
- 
--	/* for compatibility we link old procfs's OSC entries to osp ones */
--	lov_proc_dir = lprocfs_srch(proc_lustre_root, "lov");
--	if (lov_proc_dir != NULL && strstr(obd->obd_name, "lov") != NULL)
--		lod->lod_symlink = lprocfs_add_symlink(obd->obd_name,
--						       lov_proc_dir,
--						       "../lod/%s",
--						       obd->obd_name);
-+	/* If the real LOV is present which is the case for setups
-+	 * with both server and clients on the same node then use
-+	 * the LOV's proc root */
-+	type = class_search_type(LUSTRE_LOV_NAME);
-+	if (type != NULL && type->typ_procroot != NULL)
-+		lov_proc_dir = type->typ_procroot;
-+	else
-+		lov_proc_dir = obd->obd_type->typ_procsym;
-+
-+	if (lov_proc_dir == NULL)
-+		RETURN(0);
- 
-+	/* for compatibility we link old procfs's LOV entries to lod ones */
-+	lod->lod_symlink = lprocfs_add_symlink(obd->obd_name, lov_proc_dir,
-+					       "../lod/%s", obd->obd_name);
-+	if (lod->lod_symlink == NULL)
-+		CERROR("could not register LOV symlink for "
-+			"/proc/fs/lustre/lod/%s.", obd->obd_name);
- 	RETURN(0);
- 
- out:
--- 
-1.9.3
-

diff --git a/sys-cluster/lustre/files/0007-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch b/sys-cluster/lustre/files/0005-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch
similarity index 99%
rename from sys-cluster/lustre/files/0007-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch
rename to sys-cluster/lustre/files/0005-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch
index 1f04e55..f2c13f7 100644
--- a/sys-cluster/lustre/files/0007-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch
+++ b/sys-cluster/lustre/files/0005-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch
@@ -1,7 +1,7 @@
-From 7f697da90a35ad00a35df6483261deaba70783dd Mon Sep 17 00:00:00 2001
+From c96c9b415fa5863d1c0a64530d6df87cd67e8b9a Mon Sep 17 00:00:00 2001
 From: James Simmons <uja.ornl@gmail.com>
 Date: Mon, 5 May 2014 10:02:21 -0400
-Subject: [PATCH 7/8] LU-3319 procfs: move mdd/ofd proc handling to seq_files
+Subject: [PATCH 5/6] LU-3319 procfs: move mdd/ofd proc handling to seq_files
 
 With 3.10 linux kernel and above proc handling now only
 uses struct seq_files. This patch migrates the mdd/ofd

diff --git a/sys-cluster/lustre/files/0005-LU-3319-procfs-move-mdt-mds-proc-handling-to-seq_fil.patch b/sys-cluster/lustre/files/0005-LU-3319-procfs-move-mdt-mds-proc-handling-to-seq_fil.patch
deleted file mode 100644
index 97fa886..0000000
--- a/sys-cluster/lustre/files/0005-LU-3319-procfs-move-mdt-mds-proc-handling-to-seq_fil.patch
+++ /dev/null
@@ -1,1633 +0,0 @@
-From 333393612d269600a68c672af1f1848e865f9e20 Mon Sep 17 00:00:00 2001
-From: James Simmons <uja.ornl@gmail.com>
-Date: Fri, 9 May 2014 16:30:46 -0400
-Subject: [PATCH 5/8] LU-3319 procfs: move mdt/mds proc handling to seq_files
-
-With 3.10 linux kernel and above proc handling now only
-uses struct seq_files. This patch migrates the mdt/mds
-layer proc entries over to using seq_files.
-
-Signed-off-by: James Simmons <uja.ornl@gmail.com>
-Change-Id: Icbafdcd2c2fe3959a51dda3f9c715b0ff8d95742
----
- lustre/mdt/mdt_coordinator.c      | 269 +++++++-------
- lustre/mdt/mdt_handler.c          |  16 +-
- lustre/mdt/mdt_hsm_cdt_actions.c  |   5 +-
- lustre/mdt/mdt_hsm_cdt_agent.c    |   5 +-
- lustre/mdt/mdt_hsm_cdt_requests.c |   5 +-
- lustre/mdt/mdt_internal.h         |  14 +-
- lustre/mdt/mdt_lproc.c            | 713 +++++++++++++++++++-------------------
- lustre/mdt/mdt_mds.c              |  12 +-
- 8 files changed, 495 insertions(+), 544 deletions(-)
-
-diff --git a/lustre/mdt/mdt_coordinator.c b/lustre/mdt/mdt_coordinator.c
-index 651ed7a..1617eeb 100644
---- a/lustre/mdt/mdt_coordinator.c
-+++ b/lustre/mdt/mdt_coordinator.c
-@@ -45,7 +45,7 @@
- #include <lustre_log.h>
- #include "mdt_internal.h"
- 
--static struct lprocfs_vars lprocfs_mdt_hsm_vars[];
-+static struct lprocfs_seq_vars lprocfs_mdt_hsm_vars[];
- 
- /**
-  * get obj and HSM attributes on a fid
-@@ -392,7 +392,7 @@ int hsm_cdt_procfs_init(struct mdt_device *mdt)
- 	ENTRY;
- 
- 	/* init /proc entries, failure is not critical */
--	cdt->cdt_proc_dir = lprocfs_register("hsm",
-+	cdt->cdt_proc_dir = lprocfs_seq_register("hsm",
- 					     mdt2obd_dev(mdt)->obd_proc_entry,
- 					     lprocfs_mdt_hsm_vars, mdt);
- 	if (IS_ERR(cdt->cdt_proc_dir)) {
-@@ -424,7 +424,7 @@ void  hsm_cdt_procfs_fini(struct mdt_device *mdt)
-  * \param none
-  * \retval var vector
-  */
--struct lprocfs_vars *hsm_cdt_get_proc_vars(void)
-+struct lprocfs_seq_vars *hsm_cdt_get_proc_vars(void)
- {
- 	return lprocfs_mdt_hsm_vars;
- }
-@@ -1785,22 +1785,17 @@ static __u64 hsm_policy_str2bit(const char *name)
-  * \param hexa [IN] print mask before bit names
-  * \param buffer [OUT] string
-  * \param count [IN] size of buffer
-- * \retval size filled in buffer
-  */
--static int hsm_policy_bit2str(const __u64 mask, const bool hexa, char *buffer,
--			      int count)
-+static void hsm_policy_bit2str(struct seq_file *m, const __u64 mask,
-+				const bool hexa)
- {
--	int	 i, j, sz;
--	char	*ptr;
-+	int	 i, j;
- 	__u64	 bit;
- 	ENTRY;
- 
--	ptr = buffer;
--	if (hexa) {
--		sz = snprintf(buffer, count, "("LPX64") ", mask);
--		ptr += sz;
--		count -= sz;
--	}
-+	if (hexa)
-+		seq_printf(m, "("LPX64") ", mask);
-+
- 	for (i = 0; i < CDT_POLICY_SHIFT_COUNT; i++) {
- 		bit = (1ULL << i);
- 
-@@ -1809,48 +1804,37 @@ static int hsm_policy_bit2str(const __u64 mask, const bool hexa, char *buffer,
- 				break;
- 		}
- 		if (bit & mask)
--			sz = snprintf(ptr, count, "[%s] ",
--				      hsm_policy_names[j].name);
-+			seq_printf(m, "[%s] ", hsm_policy_names[j].name);
- 		else
--			sz = snprintf(ptr, count, "%s ",
--				      hsm_policy_names[j].name);
--
--		ptr += sz;
--		count -= sz;
-+			seq_printf(m, "%s ", hsm_policy_names[j].name);
- 	}
- 	/* remove last ' ' */
--	*ptr = '\0';
--	ptr--;
--	RETURN(ptr - buffer);
-+	m->count--;
-+	seq_putc(m, '\0');
- }
- 
- /* methods to read/write HSM policy flags */
--static int lprocfs_rd_hsm_policy(char *page, char **start, off_t off,
--				 int count, int *eof, void *data)
-+static int mdt_hsm_policy_seq_show(struct seq_file *m, void *data)
- {
--	struct mdt_device	*mdt = data;
-+	struct mdt_device	*mdt = m->private;
- 	struct coordinator	*cdt = &mdt->mdt_coordinator;
--	int			 sz;
- 	ENTRY;
- 
--	sz = hsm_policy_bit2str(cdt->cdt_policy, false, page, count);
--	page[sz] = '\n';
--	sz++;
--	page[sz] = '\0';
--	*eof = 1;
--	RETURN(sz);
-+	hsm_policy_bit2str(m, cdt->cdt_policy, false);
-+	RETURN(0);
- }
- 
--static int lprocfs_wr_hsm_policy(struct file *file, const char *buffer,
--				 unsigned long count, void *data)
-+static ssize_t
-+mdt_hsm_policy_seq_write(struct file *file, const char __user *buffer,
-+			 size_t count, loff_t *off)
- {
--	struct mdt_device	*mdt = data;
-+	struct seq_file		*m = file->private_data;
-+	struct mdt_device	*mdt = m->private;
- 	struct coordinator	*cdt = &mdt->mdt_coordinator;
- 	char			*start, *token, sign;
- 	char			*buf;
- 	__u64			 policy;
- 	__u64			 add_mask, remove_mask, set_mask;
--	int			 sz;
- 	int			 rc;
- 	ENTRY;
- 
-@@ -1883,18 +1867,10 @@ static int lprocfs_wr_hsm_policy(struct file *file, const char *buffer,
- 
- 		policy = hsm_policy_str2bit(token);
- 		if (policy == 0) {
--			char *msg;
--
--			sz = PAGE_SIZE;
--			OBD_ALLOC(msg, sz);
--			if (!msg)
--				GOTO(out, rc = -ENOMEM);
--
--			hsm_policy_bit2str(0, false, msg, sz);
- 			CWARN("%s: '%s' is unknown, "
--			      "supported policies are: %s\n", mdt_obd_name(mdt),
--			      token, msg);
--			OBD_FREE(msg, sz);
-+			      "supported policies are:\n", mdt_obd_name(mdt),
-+			      token);
-+			hsm_policy_bit2str(m, 0, false);
- 			GOTO(out, rc = -EINVAL);
- 		}
- 		switch (sign) {
-@@ -1933,25 +1909,25 @@ out:
- 	OBD_FREE(buf, count + 1);
- 	RETURN(rc);
- }
-+LPROC_SEQ_FOPS(mdt_hsm_policy);
- 
- #define GENERATE_PROC_METHOD(VAR)					\
--static int lprocfs_rd_hsm_##VAR(char *page, char **start, off_t off,	\
--				int count, int *eof, void *data)	\
-+static int mdt_hsm_##VAR##_seq_show(struct seq_file *m, void *data)	\
- {									\
--	struct mdt_device	*mdt = data;				\
-+	struct mdt_device	*mdt = m->private;			\
- 	struct coordinator	*cdt = &mdt->mdt_coordinator;		\
--	int			 sz;					\
- 	ENTRY;								\
- 									\
--	sz = snprintf(page, count, LPU64"\n", (__u64)cdt->VAR);		\
--	*eof = 1;							\
--	RETURN(sz);							\
-+	seq_printf(m, LPU64"\n", (__u64)cdt->VAR);			\
-+	RETURN(0);							\
- }									\
--static int lprocfs_wr_hsm_##VAR(struct file *file, const char *buffer,	\
--				unsigned long count, void *data)	\
-+static ssize_t								\
-+mdt_hsm_##VAR##_seq_write(struct file *file, const char __user *buffer,	\
-+			  size_t count, loff_t *off)			\
- 									\
- {									\
--	struct mdt_device	*mdt = data;				\
-+	struct seq_file		*m = file->private_data;		\
-+	struct mdt_device	*mdt = m->private;			\
- 	struct coordinator	*cdt = &mdt->mdt_coordinator;		\
- 	int			 val;					\
- 	int			 rc;					\
-@@ -1965,7 +1941,7 @@ static int lprocfs_wr_hsm_##VAR(struct file *file, const char *buffer,	\
- 		RETURN(count);						\
- 	}								\
- 	RETURN(-EINVAL);						\
--}
-+}									\
- 
- GENERATE_PROC_METHOD(cdt_loop_period)
- GENERATE_PROC_METHOD(cdt_grace_delay)
-@@ -1984,10 +1960,12 @@ GENERATE_PROC_METHOD(cdt_default_archive_id)
- #define CDT_HELP_CMD     "help"
- #define CDT_MAX_CMD_LEN  10
- 
--int lprocfs_wr_hsm_cdt_control(struct file *file, const char __user *buffer,
--			       unsigned long count, void *data)
-+ssize_t
-+mdt_hsm_cdt_control_seq_write(struct file *file, const char __user *buffer,
-+			      size_t count, loff_t *off)
- {
--	struct obd_device	*obd = data;
-+	struct seq_file		*m = file->private_data;
-+	struct obd_device	*obd = m->private;
- 	struct mdt_device	*mdt = mdt_dev(obd->obd_lu_dev);
- 	struct coordinator	*cdt = &(mdt->mdt_coordinator);
- 	int			 rc, usage = 0;
-@@ -2051,83 +2029,71 @@ int lprocfs_wr_hsm_cdt_control(struct file *file, const char __user *buffer,
- 	RETURN(count);
- }
- 
--int lprocfs_rd_hsm_cdt_control(char *page, char **start, off_t off,
--			       int count, int *eof, void *data)
-+int mdt_hsm_cdt_control_seq_show(struct seq_file *m, void *data)
- {
--	struct obd_device	*obd = data;
-+	struct obd_device	*obd = m->private;
- 	struct coordinator	*cdt;
--	int			 sz;
- 	ENTRY;
- 
- 	cdt = &(mdt_dev(obd->obd_lu_dev)->mdt_coordinator);
--	*eof = 1;
- 
- 	if (cdt->cdt_state == CDT_INIT)
--		sz = snprintf(page, count, "init\n");
-+		seq_printf(m, "init\n");
- 	else if (cdt->cdt_state == CDT_RUNNING)
--		sz = snprintf(page, count, "enabled\n");
-+		seq_printf(m, "enabled\n");
- 	else if (cdt->cdt_state == CDT_STOPPING)
--		sz = snprintf(page, count, "stopping\n");
-+		seq_printf(m, "stopping\n");
- 	else if (cdt->cdt_state == CDT_STOPPED)
--		sz = snprintf(page, count, "stopped\n");
-+		seq_printf(m, "stopped\n");
- 	else if (cdt->cdt_state == CDT_DISABLE)
--		sz = snprintf(page, count, "disabled\n");
-+		seq_printf(m, "disabled\n");
- 	else
--		sz = snprintf(page, count, "unknown\n");
-+		seq_printf(m, "unknown\n");
- 
--	RETURN(sz);
-+	RETURN(0);
- }
- 
- static int
--lprocfs_rd_hsm_request_mask(char *page, char **start, off_t off,
--			    int count, int *eof, __u64 mask)
-+mdt_hsm_request_mask_show(struct seq_file *m, __u64 mask)
- {
- 	int i, rc = 0;
- 	ENTRY;
- 
- 	for (i = 0; i < 8 * sizeof(mask); i++) {
- 		if (mask & (1UL << i))
--			rc += snprintf(page + rc, count - rc, "%s%s",
--				       rc == 0 ? "" : " ",
--				       hsm_copytool_action2name(i));
-+			rc += seq_printf(m, "%s%s", rc == 0 ? "" : " ",
-+					hsm_copytool_action2name(i));
- 	}
--
--	rc += snprintf(page + rc, count - rc, "\n");
-+	rc += seq_printf(m, "\n");
- 
- 	RETURN(rc);
- }
- 
- static int
--lprocfs_rd_hsm_user_request_mask(char *page, char **start, off_t off,
--				 int count, int *eof, void *data)
-+mdt_hsm_user_request_mask_seq_show(struct seq_file *m, void *data)
- {
--	struct mdt_device *mdt = data;
-+	struct mdt_device *mdt = m->private;
- 	struct coordinator *cdt = &mdt->mdt_coordinator;
- 
--	return lprocfs_rd_hsm_request_mask(page, start, off, count, eof,
--					   cdt->cdt_user_request_mask);
-+	return mdt_hsm_request_mask_show(m, cdt->cdt_user_request_mask);
- }
- 
- static int
--lprocfs_rd_hsm_group_request_mask(char *page, char **start, off_t off,
--				  int count, int *eof, void *data)
-+mdt_hsm_group_request_mask_seq_show(struct seq_file *m, void *data)
- {
--	struct mdt_device *mdt = data;
-+	struct mdt_device *mdt = m->private;
- 	struct coordinator *cdt = &mdt->mdt_coordinator;
- 
--	return lprocfs_rd_hsm_request_mask(page, start, off, count, eof,
--					   cdt->cdt_group_request_mask);
-+	return mdt_hsm_request_mask_show(m, cdt->cdt_group_request_mask);
- }
- 
- static int
--lprocfs_rd_hsm_other_request_mask(char *page, char **start, off_t off,
--				  int count, int *eof, void *data)
-+mdt_hsm_other_request_mask_seq_show(struct seq_file *m, void *data)
- {
--	struct mdt_device *mdt = data;
-+	struct mdt_device *mdt = m->private;
- 	struct coordinator *cdt = &mdt->mdt_coordinator;
- 
--	return lprocfs_rd_hsm_request_mask(page, start, off, count, eof,
--					   cdt->cdt_other_request_mask);
-+	return mdt_hsm_request_mask_show(m, cdt->cdt_other_request_mask);
- }
- 
- static inline enum hsm_copytool_action
-@@ -2147,9 +2113,9 @@ hsm_copytool_name2action(const char *name)
- 		return -1;
- }
- 
--static int
--lprocfs_wr_hsm_request_mask(struct file *file, const char __user *user_buf,
--			    unsigned long user_count, __u64 *mask)
-+static ssize_t
-+mdt_write_hsm_request_mask(struct file *file, const char __user *user_buf,
-+			    size_t user_count, __u64 *mask)
- {
- 	char *buf, *pos, *name;
- 	size_t buf_size;
-@@ -2193,69 +2159,76 @@ out:
- 	RETURN(rc);
- }
- 
--static int
--lprocfs_wr_hsm_user_request_mask(struct file *file, const char __user *buf,
--				 unsigned long count, void *data)
-+static ssize_t
-+mdt_hsm_user_request_mask_seq_write(struct file *file, const char __user *buf,
-+					size_t count, loff_t *off)
- {
--	struct mdt_device *mdt = data;
-+	struct seq_file		*m = file->private_data;
-+	struct mdt_device	*mdt = m->private;
- 	struct coordinator *cdt = &mdt->mdt_coordinator;
- 
--	return lprocfs_wr_hsm_request_mask(file, buf, count,
-+	return mdt_write_hsm_request_mask(file, buf, count,
- 					   &cdt->cdt_user_request_mask);
- }
- 
--static int
--lprocfs_wr_hsm_group_request_mask(struct file *file, const char __user *buf,
--				  unsigned long count, void *data)
-+static ssize_t
-+mdt_hsm_group_request_mask_seq_write(struct file *file, const char __user *buf,
-+					size_t count, loff_t *off)
- {
--	struct mdt_device *mdt = data;
--	struct coordinator *cdt = &mdt->mdt_coordinator;
-+	struct seq_file		*m = file->private_data;
-+	struct mdt_device	*mdt = m->private;
-+	struct coordinator	*cdt = &mdt->mdt_coordinator;
- 
--	return lprocfs_wr_hsm_request_mask(file, buf, count,
-+	return mdt_write_hsm_request_mask(file, buf, count,
- 					   &cdt->cdt_group_request_mask);
- }
- 
--static int
--lprocfs_wr_hsm_other_request_mask(struct file *file, const char __user *buf,
--				  unsigned long count, void *data)
-+static ssize_t
-+mdt_hsm_other_request_mask_seq_write(struct file *file, const char __user *buf,
-+					size_t count, loff_t *off)
- {
--	struct mdt_device *mdt = data;
--	struct coordinator *cdt = &mdt->mdt_coordinator;
-+	struct seq_file		*m = file->private_data;
-+	struct mdt_device	*mdt = m->private;
-+	struct coordinator	*cdt = &mdt->mdt_coordinator;
- 
--	return lprocfs_wr_hsm_request_mask(file, buf, count,
-+	return mdt_write_hsm_request_mask(file, buf, count,
- 					   &cdt->cdt_other_request_mask);
- }
- 
--static struct lprocfs_vars lprocfs_mdt_hsm_vars[] = {
--	{ "agents",			NULL, NULL, NULL, &mdt_hsm_agent_fops,
--					0 },
--	{ "actions",			NULL, NULL, NULL, &mdt_hsm_actions_fops,
--					0444 },
--	{ "default_archive_id",		lprocfs_rd_hsm_cdt_default_archive_id,
--					lprocfs_wr_hsm_cdt_default_archive_id,
--					NULL, NULL, 0 },
--	{ "grace_delay",		lprocfs_rd_hsm_cdt_grace_delay,
--					lprocfs_wr_hsm_cdt_grace_delay,
--					NULL, NULL, 0 },
--	{ "loop_period",		lprocfs_rd_hsm_cdt_loop_period,
--					lprocfs_wr_hsm_cdt_loop_period,
--					NULL, NULL, 0 },
--	{ "max_requests",		lprocfs_rd_hsm_cdt_max_requests,
--					lprocfs_wr_hsm_cdt_max_requests,
--					NULL, NULL, 0 },
--	{ "policy",			lprocfs_rd_hsm_policy,
--					lprocfs_wr_hsm_policy,
--					NULL, NULL, 0 },
--	{ "active_request_timeout",	lprocfs_rd_hsm_cdt_active_req_timeout,
--					lprocfs_wr_hsm_cdt_active_req_timeout,
--					NULL, NULL, 0 },
--	{ "active_requests",		NULL, NULL, NULL,
--					&mdt_hsm_active_requests_fops, 0 },
--	{ "user_request_mask",		lprocfs_rd_hsm_user_request_mask,
--					lprocfs_wr_hsm_user_request_mask, },
--	{ "group_request_mask", 	lprocfs_rd_hsm_group_request_mask,
--					lprocfs_wr_hsm_group_request_mask, },
--	{ "other_request_mask",		lprocfs_rd_hsm_other_request_mask,
--					lprocfs_wr_hsm_other_request_mask, },
-+LPROC_SEQ_FOPS(mdt_hsm_cdt_loop_period);
-+LPROC_SEQ_FOPS(mdt_hsm_cdt_grace_delay);
-+LPROC_SEQ_FOPS(mdt_hsm_cdt_active_req_timeout);
-+LPROC_SEQ_FOPS(mdt_hsm_cdt_max_requests);
-+LPROC_SEQ_FOPS(mdt_hsm_cdt_default_archive_id);
-+LPROC_SEQ_FOPS(mdt_hsm_user_request_mask);
-+LPROC_SEQ_FOPS(mdt_hsm_group_request_mask);
-+LPROC_SEQ_FOPS(mdt_hsm_other_request_mask);
-+
-+static struct lprocfs_seq_vars lprocfs_mdt_hsm_vars[] = {
-+	{ .name	=	"agents",
-+	  .fops	=	&mdt_hsm_agent_fops			},
-+	{ .name	=	"actions",
-+	  .fops	=	&mdt_hsm_actions_fops,
-+	  .proc_mode =	0444					},
-+	{ .name	=	"default_archive_id",
-+	  .fops	=	&mdt_hsm_cdt_default_archive_id_fops	},
-+	{ .name	=	"grace_delay",
-+	  .fops	=	&mdt_hsm_cdt_grace_delay_fops		},
-+	{ .name	=	"loop_period",
-+	  .fops	=	&mdt_hsm_cdt_loop_period_fops		},
-+	{ .name	=	"max_requests",
-+	  .fops	=	&mdt_hsm_cdt_max_requests_fops		},
-+	{ .name	=	"policy",
-+	  .fops	=	&mdt_hsm_policy_fops			},
-+	{ .name	=	"active_request_timeout",
-+	  .fops	=	&mdt_hsm_cdt_active_req_timeout_fops	},
-+	{ .name	=	"active_requests",
-+	  .fops	=	&mdt_hsm_active_requests_fops		},
-+	{ .name	=	"user_request_mask",
-+	  .fops	=	&mdt_hsm_user_request_mask_fops,	},
-+	{ .name	=	"group_request_mask",
-+	  .fops	=	&mdt_hsm_group_request_mask_fops,	},
-+	{ .name	=	"other_request_mask",
-+	  .fops	=	&mdt_hsm_other_request_mask_fops,	},
- 	{ 0 }
- };
-diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c
-index 6b0c683..013cea2 100644
---- a/lustre/mdt/mdt_handler.c
-+++ b/lustre/mdt/mdt_handler.c
-@@ -4666,7 +4666,6 @@ static int mdt_process_config(const struct lu_env *env,
- 
- 	switch (cfg->lcfg_command) {
- 	case LCFG_PARAM: {
--		struct lprocfs_static_vars  lvars;
- 		struct obd_device	   *obd = d->ld_obd;
- 
- 		/* For interoperability */
-@@ -4701,14 +4700,13 @@ static int mdt_process_config(const struct lu_env *env,
- 			}
- 		}
- 
--		lprocfs_mdt_init_vars(&lvars);
--		rc = class_process_proc_param(PARAM_MDT, lvars.obd_vars,
--					      cfg, obd);
-+		rc = class_process_proc_seq_param(PARAM_MDT, obd->obd_vars,
-+							cfg, obd);
- 		if (rc > 0 || rc == -ENOSYS) {
- 			/* is it an HSM var ? */
--			rc = class_process_proc_param(PARAM_HSM,
--						      hsm_cdt_get_proc_vars(),
--						      cfg, obd);
-+			rc = class_process_proc_seq_param(PARAM_HSM,
-+							hsm_cdt_get_proc_vars(),
-+							cfg, obd);
- 			if (rc > 0 || rc == -ENOSYS)
- 				/* we don't understand; pass it on */
- 				rc = next->ld_ops->ldo_process_config(env, next,
-@@ -5905,7 +5903,6 @@ static struct lu_device_type mdt_device_type = {
- 
- static int __init mdt_mod_init(void)
- {
--	struct lprocfs_static_vars lvars;
- 	int rc;
- 
- 	CLASSERT(sizeof("0x0123456789ABCDEF:0x01234567:0x01234567") ==
-@@ -5920,10 +5917,9 @@ static int __init mdt_mod_init(void)
- 	if (rc)
- 		GOTO(lu_fini, rc);
- 
--	lprocfs_mdt_init_vars(&lvars);
- 	rc = class_register_type(&mdt_obd_device_ops, NULL, true, NULL,
- #ifndef HAVE_ONLY_PROCFS_SEQ
--				 lvars.module_vars,
-+				 NULL,
- #endif
- 				 LUSTRE_MDT_NAME, &mdt_device_type);
- 	if (rc)
-diff --git a/lustre/mdt/mdt_hsm_cdt_actions.c b/lustre/mdt/mdt_hsm_cdt_actions.c
-index 0f5e0fe..6b1acf0 100644
---- a/lustre/mdt/mdt_hsm_cdt_actions.c
-+++ b/lustre/mdt/mdt_hsm_cdt_actions.c
-@@ -513,9 +513,6 @@ static int lprocfs_open_hsm_actions(struct inode *inode, struct file *file)
- 	struct mdt_device		*mdt;
- 	ENTRY;
- 
--	if (LPROCFS_ENTRY_CHECK(PDE(inode)))
--		RETURN(-ENOENT);
--
- 	rc = seq_open(file, &mdt_hsm_actions_proc_ops);
- 	if (rc)
- 		RETURN(rc);
-@@ -532,7 +529,7 @@ static int lprocfs_open_hsm_actions(struct inode *inode, struct file *file)
- 	/* mdt is saved in proc_dir_entry->data by
- 	 * mdt_coordinator_procfs_init() calling lprocfs_register()
- 	 */
--	mdt = (struct mdt_device *)PDE(inode)->data;
-+	mdt = (struct mdt_device *)PDE_DATA(inode);
- 	aai->aai_mdt = mdt;
- 	s = file->private_data;
- 	s->private = aai;
-diff --git a/lustre/mdt/mdt_hsm_cdt_agent.c b/lustre/mdt/mdt_hsm_cdt_agent.c
-index 9a9ce6d..158cced 100644
---- a/lustre/mdt/mdt_hsm_cdt_agent.c
-+++ b/lustre/mdt/mdt_hsm_cdt_agent.c
-@@ -621,15 +621,12 @@ static int lprocfs_open_hsm_agent(struct inode *inode, struct file *file)
- 	int		 rc;
- 	ENTRY;
- 
--	if (LPROCFS_ENTRY_CHECK(PDE(inode)))
--		RETURN(-ENOENT);
--
- 	rc = seq_open(file, &mdt_hsm_agent_proc_ops);
- 	if (rc)
- 		RETURN(rc);
- 
- 	s = file->private_data;
--	s->private = PDE(inode)->data;
-+	s->private = PDE_DATA(inode);
- 
- 	RETURN(rc);
- }
-diff --git a/lustre/mdt/mdt_hsm_cdt_requests.c b/lustre/mdt/mdt_hsm_cdt_requests.c
-index 1300861..3125dcc 100644
---- a/lustre/mdt/mdt_hsm_cdt_requests.c
-+++ b/lustre/mdt/mdt_hsm_cdt_requests.c
-@@ -569,15 +569,12 @@ static int lprocfs_open_hsm_active_requests(struct inode *inode,
- 	int		 rc;
- 	ENTRY;
- 
--	if (LPROCFS_ENTRY_CHECK(PDE(inode)))
--		RETURN(-ENOENT);
--
- 	rc = seq_open(file, &mdt_hsm_active_requests_proc_ops);
- 	if (rc) {
- 		RETURN(rc);
- 	}
- 	s = file->private_data;
--	s->private = PDE(inode)->data;
-+	s->private = PDE_DATA(inode);
- 
- 	RETURN(rc);
- }
-diff --git a/lustre/mdt/mdt_internal.h b/lustre/mdt/mdt_internal.h
-index 116d98f..d1a3b66 100644
---- a/lustre/mdt/mdt_internal.h
-+++ b/lustre/mdt/mdt_internal.h
-@@ -756,9 +756,6 @@ void mdt_thread_info_init(struct ptlrpc_request *req,
- void mdt_thread_info_fini(struct mdt_thread_info *mti);
- struct mdt_thread_info *tsi2mdt_info(struct tgt_session_info *tsi);
- 
--extern struct lprocfs_vars lprocfs_mds_module_vars[];
--extern struct lprocfs_vars lprocfs_mds_obd_vars[];
--
- int mdt_hsm_attr_set(struct mdt_thread_info *info, struct mdt_object *obj,
- 		     const struct md_hsm *mh);
- 
-@@ -896,13 +893,12 @@ int mdt_hsm_cdt_fini(struct mdt_device *mdt);
- int mdt_hsm_cdt_wakeup(struct mdt_device *mdt);
- 
- /* coordinator control /proc interface */
--int lprocfs_wr_hsm_cdt_control(struct file *file, const char *buffer,
--			       unsigned long count, void *data);
--int lprocfs_rd_hsm_cdt_control(char *page, char **start, off_t off,
--			       int count, int *eof, void *data);
-+ssize_t mdt_hsm_cdt_control_seq_write(struct file *file, const char *buffer,
-+					size_t count, loff_t *off);
-+int mdt_hsm_cdt_control_seq_show(struct seq_file *m, void *data);
- int hsm_cdt_procfs_init(struct mdt_device *mdt);
- void hsm_cdt_procfs_fini(struct mdt_device *mdt);
--struct lprocfs_vars *hsm_cdt_get_proc_vars(void);
-+struct lprocfs_seq_vars *hsm_cdt_get_proc_vars(void);
- /* md_hsm helpers */
- struct mdt_object *mdt_hsm_get_md_hsm(struct mdt_thread_info *mti,
- 				      const struct lu_fid *fid,
-@@ -1042,8 +1038,6 @@ enum {
- };
- void mdt_counter_incr(struct ptlrpc_request *req, int opcode);
- void mdt_stats_counter_init(struct lprocfs_stats *stats);
--void lprocfs_mdt_init_vars(struct lprocfs_static_vars *lvars);
--void lprocfs_mds_init_vars(struct lprocfs_static_vars *lvars);
- int mdt_procfs_init(struct mdt_device *mdt, const char *name);
- void mdt_procfs_fini(struct mdt_device *mdt);
- 
-diff --git a/lustre/mdt/mdt_lproc.c b/lustre/mdt/mdt_lproc.c
-index 70eba85..ff7a260 100644
---- a/lustre/mdt/mdt_lproc.c
-+++ b/lustre/mdt/mdt_lproc.c
-@@ -144,8 +144,9 @@ static int mdt_rename_stats_seq_show(struct seq_file *seq, void *v)
-         return 0;
- }
- 
--static ssize_t mdt_rename_stats_seq_write(struct file *file, const char *buf,
--                                          size_t len, loff_t *off)
-+static ssize_t
-+mdt_rename_stats_seq_write(struct file *file, const char __user *buf,
-+			   size_t len, loff_t *off)
- {
-         struct seq_file *seq = file->private_data;
-         struct mdt_device *mdt = seq->private;
-@@ -156,7 +157,6 @@ static ssize_t mdt_rename_stats_seq_write(struct file *file, const char *buf,
- 
-         return len;
- }
--
- LPROC_SEQ_FOPS(mdt_rename_stats);
- 
- static int lproc_mdt_attach_rename_seqstat(struct mdt_device *mdt)
-@@ -213,145 +213,77 @@ void mdt_rename_counter_tally(struct mdt_thread_info *info,
-                               (unsigned int)ma->ma_attr.la_size);
- }
- 
--int mdt_procfs_init(struct mdt_device *mdt, const char *name)
-+static int mdt_identity_expire_seq_show(struct seq_file *m, void *data)
- {
--	struct obd_device		*obd = mdt2obd_dev(mdt);
--	struct lprocfs_static_vars	 lvars;
--	int				 rc;
--	ENTRY;
--
--	LASSERT(name != NULL);
--
--	lprocfs_mdt_init_vars(&lvars);
--	rc = lprocfs_obd_setup(obd, lvars.obd_vars);
--	if (rc) {
--		CERROR("%s: cannot create proc entries: rc = %d\n",
--		       mdt_obd_name(mdt), rc);
--		return rc;
--	}
--
--	rc = hsm_cdt_procfs_init(mdt);
--	if (rc) {
--		CERROR("%s: cannot create hsm proc entries: rc = %d\n",
--		       mdt_obd_name(mdt), rc);
--		return rc;
--	}
--
--	obd->obd_proc_exports_entry = proc_mkdir("exports",
--						 obd->obd_proc_entry);
--	if (obd->obd_proc_exports_entry)
--		lprocfs_add_simple(obd->obd_proc_exports_entry,
--				   "clear", lprocfs_nid_stats_clear_read,
--				   lprocfs_nid_stats_clear_write, obd, NULL);
--	rc = lprocfs_alloc_md_stats(obd, LPROC_MDT_LAST);
--	if (rc)
--		return rc;
--	mdt_stats_counter_init(obd->obd_md_stats);
--
--	rc = lprocfs_job_stats_init(obd, LPROC_MDT_LAST,
--				    mdt_stats_counter_init);
--
--	rc = lproc_mdt_attach_rename_seqstat(mdt);
--	if (rc)
--		CERROR("%s: MDT can not create rename stats rc = %d\n",
--		       mdt_obd_name(mdt), rc);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--	RETURN(rc);
-+	return seq_printf(m, "%u\n", mdt->mdt_identity_cache->uc_entry_expire);
- }
- 
--void mdt_procfs_fini(struct mdt_device *mdt)
-+static ssize_t
-+mdt_identity_expire_seq_write(struct file *file, const char __user *buffer,
-+			      size_t count, loff_t *off)
- {
--	struct obd_device *obd = mdt2obd_dev(mdt);
-+	struct seq_file	  *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	int rc, val;
- 
--	if (obd->obd_proc_exports_entry != NULL) {
--		lprocfs_remove_proc_entry("clear", obd->obd_proc_exports_entry);
--		obd->obd_proc_exports_entry = NULL;
--	}
-+	rc = lprocfs_write_helper(buffer, count, &val);
-+	if (rc)
-+		return rc;
- 
--	lprocfs_free_per_client_stats(obd);
--	hsm_cdt_procfs_fini(mdt);
--	lprocfs_obd_cleanup(obd);
--	lprocfs_free_md_stats(obd);
--	lprocfs_free_obd_stats(obd);
--	lprocfs_job_stats_fini(obd);
-+	mdt->mdt_identity_cache->uc_entry_expire = val;
-+	return count;
- }
-+LPROC_SEQ_FOPS(mdt_identity_expire);
- 
--static int lprocfs_rd_identity_expire(char *page, char **start, off_t off,
--                                      int count, int *eof, void *data)
-+static int mdt_identity_acquire_expire_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--        *eof = 1;
--        return snprintf(page, count, "%u\n",
--                        mdt->mdt_identity_cache->uc_entry_expire);
-+	return seq_printf(m, "%u\n", mdt->mdt_identity_cache->uc_acquire_expire);
- }
- 
--static int lprocfs_wr_identity_expire(struct file *file,
-+static ssize_t
-+mdt_identity_acquire_expire_seq_write(struct file *file,
- 				      const char __user *buffer,
--				      unsigned long count, void *data)
--{
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        int rc, val;
--
--        rc = lprocfs_write_helper(buffer, count, &val);
--        if (rc)
--                return rc;
--
--        mdt->mdt_identity_cache->uc_entry_expire = val;
--        return count;
--}
--
--static int lprocfs_rd_identity_acquire_expire(char *page, char **start,
--                                              off_t off, int count, int *eof,
--                                              void *data)
-+				      size_t count, loff_t *off)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--
--        *eof = 1;
--        return snprintf(page, count, "%u\n",
--                        mdt->mdt_identity_cache->uc_acquire_expire);
--}
--
--static int lprocfs_wr_identity_acquire_expire(struct file *file,
--					      const char __user *buffer,
--					      unsigned long count,
--					      void *data)
--{
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        int rc, val;
-+	struct seq_file	  *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	int rc, val;
- 
--        rc = lprocfs_write_helper(buffer, count, &val);
--        if (rc)
--                return rc;
-+	rc = lprocfs_write_helper(buffer, count, &val);
-+	if (rc)
-+		return rc;
- 
--        mdt->mdt_identity_cache->uc_acquire_expire = val;
--        return count;
-+	mdt->mdt_identity_cache->uc_acquire_expire = val;
-+	return count;
- }
-+LPROC_SEQ_FOPS(mdt_identity_acquire_expire);
- 
--static int lprocfs_rd_identity_upcall(char *page, char **start, off_t off,
--                                      int count, int *eof, void *data)
-+static int mdt_identity_upcall_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        struct upcall_cache *hash = mdt->mdt_identity_cache;
--        int len;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct upcall_cache *hash = mdt->mdt_identity_cache;
- 
--	*eof = 1;
- 	read_lock(&hash->uc_upcall_rwlock);
--	len = snprintf(page, count, "%s\n", hash->uc_upcall);
-+	seq_printf(m, "%s\n", hash->uc_upcall);
- 	read_unlock(&hash->uc_upcall_rwlock);
--	return len;
-+	return 0;
- }
- 
--static int lprocfs_wr_identity_upcall(struct file *file,
--				      const char __user *buffer,
--				      unsigned long count, void *data)
-+static ssize_t
-+mdt_identity_upcall_seq_write(struct file *file, const char __user *buffer,
-+			      size_t count, loff_t *off)
- {
--	struct obd_device	*obd = data;
-+	struct seq_file		*m = file->private_data;
-+	struct obd_device	*obd = m->private;
- 	struct mdt_device	*mdt = mdt_dev(obd->obd_lu_dev);
- 	struct upcall_cache	*hash = mdt->mdt_identity_cache;
- 	int			 rc;
-@@ -390,28 +322,32 @@ static int lprocfs_wr_identity_upcall(struct file *file,
- 		OBD_FREE(kernbuf, count + 1);
- 	RETURN(rc);
- }
-+LPROC_SEQ_FOPS(mdt_identity_upcall);
- 
--static int lprocfs_wr_identity_flush(struct file *file,
--				     const char __user *buffer,
--				     unsigned long count, void *data)
-+static ssize_t
-+lprocfs_identity_flush_seq_write(struct file *file, const char __user *buffer,
-+				 size_t count, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        int rc, uid;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	int rc, uid;
- 
--        rc = lprocfs_write_helper(buffer, count, &uid);
--        if (rc)
--                return rc;
-+	rc = lprocfs_write_helper(buffer, count, &uid);
-+	if (rc)
-+		return rc;
- 
--        mdt_flush_identity(mdt->mdt_identity_cache, uid);
--        return count;
-+	mdt_flush_identity(mdt->mdt_identity_cache, uid);
-+	return count;
- }
-+LPROC_SEQ_FOPS_WO_TYPE(mdt, identity_flush);
- 
--static int lprocfs_wr_identity_info(struct file *file,
--				    const char __user *buffer,
--				    unsigned long count, void *data)
-+static ssize_t
-+lprocfs_identity_info_seq_write(struct file *file, const char __user *buffer,
-+				size_t count, void *data)
- {
--	struct obd_device *obd = data;
-+	struct seq_file	  *m = file->private_data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	struct identity_downcall_data *param;
- 	int size = sizeof(*param), rc, checked = 0;
-@@ -419,7 +355,7 @@ static int lprocfs_wr_identity_info(struct file *file,
- again:
- 	if (count < size) {
- 		CERROR("%s: invalid data count = %lu, size = %d\n",
--		       mdt_obd_name(mdt), count, size);
-+		       mdt_obd_name(mdt), (unsigned long) count, size);
- 		return -EINVAL;
- 	}
- 
-@@ -472,23 +408,25 @@ out:
- 
- 	return rc ? rc : count;
- }
-+LPROC_SEQ_FOPS_WO_TYPE(mdt, identity_info);
- 
- /* for debug only */
--static int lprocfs_rd_capa(char *page, char **start, off_t off,
--                           int count, int *eof, void *data)
-+static int mdt_capa_seq_show(struct seq_file *m, void *data)
- {
--	struct obd_device *obd = data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--	return snprintf(page, count, "capability on: %s %s\n",
--			mdt->mdt_lut.lut_oss_capa ? "oss" : "",
--			mdt->mdt_lut.lut_mds_capa ? "mds" : "");
-+	return seq_printf(m, "capability on: %s %s\n",
-+			  mdt->mdt_lut.lut_oss_capa ? "oss" : "",
-+			  mdt->mdt_lut.lut_mds_capa ? "mds" : "");
- }
- 
--static int lprocfs_wr_capa(struct file *file, const char __user *buffer,
--			   unsigned long count, void *data)
-+static ssize_t
-+mdt_capa_seq_write(struct file *file, const char __user *buffer,
-+		   size_t count, loff_t *off)
- {
--	struct obd_device *obd = data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	int val, rc;
- 
-@@ -525,82 +463,87 @@ static int lprocfs_wr_capa(struct file *file, const char __user *buffer,
- 		      mdt->mdt_lut.lut_oss_capa ? "enabled" : "disabled");
- 	return count;
- }
-+LPROC_SEQ_FOPS(mdt_capa);
- 
--static int lprocfs_rd_capa_count(char *page, char **start, off_t off,
--                                 int count, int *eof, void *data)
-+static int mdt_capa_count_seq_show(struct seq_file *m, void *data)
- {
--        return snprintf(page, count, "%d %d\n",
--                        capa_count[CAPA_SITE_CLIENT],
--                        capa_count[CAPA_SITE_SERVER]);
-+	return seq_printf(m, "%d %d\n", capa_count[CAPA_SITE_CLIENT],
-+			  capa_count[CAPA_SITE_SERVER]);
- }
-+LPROC_SEQ_FOPS_RO(mdt_capa_count);
- 
--static int lprocfs_rd_site_stats(char *page, char **start, off_t off,
--                                 int count, int *eof, void *data)
-+static int mdt_site_stats_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--        return lu_site_stats_print(mdt_lu_site(mdt), page, count);
-+	return lu_site_stats_seq_print(mdt_lu_site(mdt), m);
- }
-+LPROC_SEQ_FOPS_RO(mdt_site_stats);
- 
--static int lprocfs_rd_capa_timeout(char *page, char **start, off_t off,
--                                   int count, int *eof, void *data)
-+static int mdt_capa_timeout_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--        return snprintf(page, count, "%lu\n", mdt->mdt_capa_timeout);
-+	return seq_printf(m, "%lu\n", mdt->mdt_capa_timeout);
- }
- 
--static int lprocfs_wr_capa_timeout(struct file *file, const char __user *buffer,
--				   unsigned long count, void *data)
-+static ssize_t
-+mdt_capa_timeout_seq_write(struct file *file, const char __user *buffer,
-+			   size_t count, loff_t *off)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        int val, rc;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	int val, rc;
- 
--        rc = lprocfs_write_helper(buffer, count, &val);
--        if (rc)
--                return rc;
-+	rc = lprocfs_write_helper(buffer, count, &val);
-+	if (rc)
-+		return rc;
- 
--        mdt->mdt_capa_timeout = (unsigned long)val;
--        mdt->mdt_capa_conf = 1;
--        return count;
-+	mdt->mdt_capa_timeout = (unsigned long)val;
-+	mdt->mdt_capa_conf = 1;
-+	return count;
- }
-+LPROC_SEQ_FOPS(mdt_capa_timeout);
- 
--static int lprocfs_rd_ck_timeout(char *page, char **start, off_t off, int count,
--                                 int *eof, void *data)
-+static int mdt_ck_timeout_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--        return snprintf(page, count, "%lu\n", mdt->mdt_ck_timeout);
-+	return seq_printf(m, "%lu\n", mdt->mdt_ck_timeout);
- }
- 
--static int lprocfs_wr_ck_timeout(struct file *file, const char __user *buffer,
--				 unsigned long count, void *data)
-+static ssize_t
-+mdt_ck_timeout_seq_write(struct file *file, const char __user *buffer,
-+			 size_t count, loff_t *off)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        int val, rc;
-+	struct seq_file	  *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	int val, rc;
- 
--        rc = lprocfs_write_helper(buffer, count, &val);
--        if (rc)
--                return rc;
-+	rc = lprocfs_write_helper(buffer, count, &val);
-+	if (rc)
-+		return rc;
- 
--        mdt->mdt_ck_timeout = (unsigned long)val;
--        mdt->mdt_capa_conf = 1;
--        return count;
-+	mdt->mdt_ck_timeout = (unsigned long)val;
-+	mdt->mdt_capa_conf = 1;
-+	return count;
- }
-+LPROC_SEQ_FOPS(mdt_ck_timeout);
- 
- #define BUFLEN (UUID_MAX + 4)
- 
--static int lprocfs_mdt_wr_evict_client(struct file *file,
--				       const char __user *buffer,
--				       unsigned long count, void *data)
-+static ssize_t
-+lprocfs_mds_evict_client_seq_write(struct file *file,
-+				   const char __user *buffer,
-+				   size_t count, loff_t *off)
- {
--        char *kbuf;
--        char *tmpbuf;
-+	char *kbuf;
-+	char *tmpbuf;
- 
-         OBD_ALLOC(kbuf, BUFLEN);
-         if (kbuf == NULL)
-@@ -619,7 +562,8 @@ static int lprocfs_mdt_wr_evict_client(struct file *file,
-         tmpbuf = cfs_firststr(kbuf, min_t(unsigned long, BUFLEN - 1, count));
- 
-         if (strncmp(tmpbuf, "nid:", 4) != 0) {
--                count = lprocfs_wr_evict_client(file, buffer, count, data);
-+		count = lprocfs_evict_client_seq_write(file, buffer, count,
-+						       off);
-                 goto out;
-         }
- 
-@@ -632,21 +576,22 @@ out:
- 
- #undef BUFLEN
- 
--static int lprocfs_rd_sec_level(char *page, char **start, off_t off,
--                                int count, int *eof, void *data)
-+static int mdt_sec_level_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--	return snprintf(page, count, "%d\n", mdt->mdt_lut.lut_sec_level);
-+	return seq_printf(m, "%d\n", mdt->mdt_lut.lut_sec_level);
- }
- 
--static int lprocfs_wr_sec_level(struct file *file, const char __user *buffer,
--				unsigned long count, void *data)
-+static ssize_t
-+mdt_sec_level_seq_write(struct file *file, const char __user *buffer,
-+			size_t count, loff_t *off)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        int val, rc;
-+	struct seq_file	  *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	int val, rc;
- 
-         rc = lprocfs_write_helper(buffer, count, &val);
-         if (rc)
-@@ -664,102 +609,110 @@ static int lprocfs_wr_sec_level(struct file *file, const char __user *buffer,
- 	mdt->mdt_lut.lut_sec_level = val;
- 	return count;
- }
-+LPROC_SEQ_FOPS(mdt_sec_level);
- 
--static int lprocfs_rd_cos(char *page, char **start, off_t off,
--                              int count, int *eof, void *data)
-+static int mdt_cos_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--        return snprintf(page, count, "%u\n", mdt_cos_is_enabled(mdt));
-+	return seq_printf(m, "%u\n", mdt_cos_is_enabled(mdt));
- }
- 
--static int lprocfs_wr_cos(struct file *file, const char __user *buffer,
--			  unsigned long count, void *data)
-+static ssize_t
-+mdt_cos_seq_write(struct file *file, const char __user *buffer,
-+		  size_t count, loff_t *off)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        int val, rc;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	int val, rc;
- 
--        rc = lprocfs_write_helper(buffer, count, &val);
--        if (rc)
--                return rc;
--        mdt_enable_cos(mdt, val);
--        return count;
-+	rc = lprocfs_write_helper(buffer, count, &val);
-+	if (rc)
-+		return rc;
-+	mdt_enable_cos(mdt, val);
-+	return count;
- }
-+LPROC_SEQ_FOPS(mdt_cos);
- 
--static int lprocfs_rd_mdt_root_squash(char *page, char **start, off_t off,
--				      int count, int *eof, void *data)
-+static int mdt_root_squash_seq_show(struct seq_file *m, void *data)
- {
--	struct obd_device *obd = data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	struct root_squash_info *squash = &mdt->mdt_squash;
- 
--	return snprintf(page, count, "%u:%u\n", squash->rsi_uid,
--			squash->rsi_gid);
-+	return seq_printf(m, "%u:%u\n", squash->rsi_uid,
-+			  squash->rsi_gid);
- }
- 
--static int lprocfs_wr_mdt_root_squash(struct file *file,
--				      const char __user *buffer,
--				      unsigned long count, void *data)
-+static ssize_t
-+mdt_root_squash_seq_write(struct file *file, const char __user *buffer,
-+			  size_t count, loff_t *off)
- {
--	struct obd_device *obd = data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	struct root_squash_info *squash = &mdt->mdt_squash;
- 
- 	return lprocfs_wr_root_squash(buffer, count, squash,
- 				      mdt_obd_name(mdt));
- }
-+LPROC_SEQ_FOPS(mdt_root_squash);
- 
--static int lprocfs_rd_mdt_nosquash_nids(char *page, char **start, off_t off,
--					int count, int *eof, void *data)
-+static int mdt_nosquash_nids_seq_show(struct seq_file *m, void *data)
- {
--	struct obd_device *obd = data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	struct root_squash_info *squash = &mdt->mdt_squash;
--	int rc;
-+	int len = 0, rc;
- 
- 	down_read(&squash->rsi_sem);
- 	if (!list_empty(&squash->rsi_nosquash_nids)) {
--		rc = cfs_print_nidlist(page, count, &squash->rsi_nosquash_nids);
--		rc += snprintf(page + rc, count - rc, "\n");
-+		len = cfs_print_nidlist(m->buf + m->count, m->size - m->count,
-+					&squash->rsi_nosquash_nids);
-+		m->count += len;
-+		rc = seq_printf(m, "\n");
- 	} else
--		rc = snprintf(page, count, "NONE\n");
-+		rc = seq_printf(m, "NONE\n");
- 	up_read(&squash->rsi_sem);
- 
- 	return rc;
- }
- 
--static int lprocfs_wr_mdt_nosquash_nids(struct file *file,
--					const char __user *buffer,
--					unsigned long count, void *data)
-+static ssize_t
-+mdt_nosquash_nids_seq_write(struct file *file, const char __user *buffer,
-+			    size_t count, loff_t *off)
- {
--	struct obd_device *obd = data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	struct root_squash_info *squash = &mdt->mdt_squash;
- 
- 	return lprocfs_wr_nosquash_nids(buffer, count, squash,
- 					mdt_obd_name(mdt));
- }
-+LPROC_SEQ_FOPS(mdt_nosquash_nids);
- 
--static int lprocfs_rd_mdt_som(char *page, char **start, off_t off,
--                              int count, int *eof, void *data)
-+static int mdt_som_seq_show(struct seq_file *m, void *data)
- {
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--        return snprintf(page, count, "%sabled\n",
--                        mdt->mdt_som_conf ? "en" : "dis");
-+	return seq_printf(m, "%sabled\n",
-+			  mdt->mdt_som_conf ? "en" : "dis");
- }
- 
--static int lprocfs_wr_mdt_som(struct file *file, const char __user *buffer,
--			      unsigned long count, void *data)
-+static ssize_t
-+mdt_som_seq_write(struct file *file, const char __user *buffer,
-+		  size_t count, loff_t *off)
- {
--        struct obd_export *exp;
--        struct obd_device *obd = data;
--        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
--        char kernbuf[16];
--        unsigned long val = 0;
-+	struct seq_file	  *m = file->private_data;
-+	struct obd_device *obd = m->private;
-+	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-+	struct obd_export *exp;
-+	char kernbuf[16];
-+	unsigned long val = 0;
- 
-         if (count > (sizeof(kernbuf) - 1))
-                 return -EINVAL;
-@@ -801,21 +754,22 @@ static int lprocfs_wr_mdt_som(struct file *file, const char __user *buffer,
- 
-         return count;
- }
-+LPROC_SEQ_FOPS(mdt_som);
- 
--static int lprocfs_rd_enable_remote_dir(char *page, char **start, off_t off,
--					int count, int *eof, void *data)
-+static int mdt_enable_remote_dir_seq_show(struct seq_file *m, void *data)
- {
--	struct obd_device *obd = data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--	return snprintf(page, count, "%u\n", mdt->mdt_enable_remote_dir);
-+	return seq_printf(m, "%u\n", mdt->mdt_enable_remote_dir);
- }
- 
--static int lprocfs_wr_enable_remote_dir(struct file *file,
--					const char __user *buffer,
--					unsigned long count, void *data)
-+static ssize_t
-+mdt_enable_remote_dir_seq_write(struct file *file, const char __user *buffer,
-+				size_t count, loff_t *off)
- {
--	struct obd_device *obd = data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	__u32 val;
- 	int rc;
-@@ -830,22 +784,24 @@ static int lprocfs_wr_enable_remote_dir(struct file *file,
- 	mdt->mdt_enable_remote_dir = val;
- 	return count;
- }
-+LPROC_SEQ_FOPS(mdt_enable_remote_dir);
- 
--static int lprocfs_rd_enable_remote_dir_gid(char *page, char **start, off_t off,
--					    int count, int *eof, void *data)
-+static int mdt_enable_remote_dir_gid_seq_show(struct seq_file *m, void *data)
- {
--	struct obd_device *obd = data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 
--	return snprintf(page, count, "%d\n",
--			(int)mdt->mdt_enable_remote_dir_gid);
-+	return seq_printf(m, "%d\n",
-+			  (int)mdt->mdt_enable_remote_dir_gid);
- }
- 
--static int lprocfs_wr_enable_remote_dir_gid(struct file *file,
--					    const char __user *buffer,
--					    unsigned long count, void *data)
-+static ssize_t
-+mdt_enable_remote_dir_gid_seq_write(struct file *file,
-+				    const char __user *buffer,
-+				    size_t count, loff_t *off)
- {
--	struct obd_device *obd = data;
-+	struct seq_file   *m = file->private_data;
-+	struct obd_device *obd = m->private;
- 	struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
- 	__u32 val;
- 	int rc;
-@@ -857,97 +813,72 @@ static int lprocfs_wr_enable_remote_dir_gid(struct file *file,
- 	mdt->mdt_enable_remote_dir_gid = val;
- 	return count;
- }
--
--static struct lprocfs_vars lprocfs_mdt_obd_vars[] = {
--	{ "uuid",			lprocfs_rd_uuid, NULL,
--					NULL, NULL, 0 },
--	{ "recovery_status",		lprocfs_obd_rd_recovery_status, NULL,
--					NULL, NULL, 0 },
--	{ "num_exports",		lprocfs_rd_num_exports,	NULL,
--					NULL, NULL, 0 },
--	{ "identity_expire",		lprocfs_rd_identity_expire,
--					lprocfs_wr_identity_expire,
--					NULL, NULL, 0 },
--	{ "identity_acquire_expire",    lprocfs_rd_identity_acquire_expire,
--					lprocfs_wr_identity_acquire_expire,
--					NULL, NULL, 0 },
--	{ "identity_upcall",		lprocfs_rd_identity_upcall,
--					lprocfs_wr_identity_upcall,
--					NULL, NULL, 0 },
--	{ "identity_flush",		NULL, lprocfs_wr_identity_flush,
--					NULL, NULL, 0 },
--	{ "identity_info",		NULL, lprocfs_wr_identity_info,
--					NULL, NULL, 0 },
--	{ "capa",			lprocfs_rd_capa,
--					lprocfs_wr_capa,
--					NULL, NULL, 0 },
--	{ "capa_timeout",		lprocfs_rd_capa_timeout,
--					lprocfs_wr_capa_timeout,
--					NULL, NULL, 0 },
--	{ "capa_key_timeout",		lprocfs_rd_ck_timeout,
--					lprocfs_wr_ck_timeout,
--					NULL, NULL, 0 },
--	{ "capa_count",			lprocfs_rd_capa_count, NULL,
--					NULL, NULL, 0 },
--	{ "site_stats",			lprocfs_rd_site_stats, NULL,
--					NULL, NULL, 0 },
--	{ "evict_client",		NULL, lprocfs_mdt_wr_evict_client,
--					NULL, NULL, 0 },
--	{ "hash_stats",			lprocfs_obd_rd_hash, NULL,
--					NULL, NULL, 0 },
--	{ "sec_level",			lprocfs_rd_sec_level,
--					lprocfs_wr_sec_level,
--					NULL, NULL, 0 },
--	{ "commit_on_sharing",		lprocfs_rd_cos, lprocfs_wr_cos,
--					NULL, NULL, 0 },
--	{ "root_squash",		lprocfs_rd_mdt_root_squash,
--					lprocfs_wr_mdt_root_squash,
--					NULL, NULL, 0 },
--	{ "nosquash_nids",		lprocfs_rd_mdt_nosquash_nids,
--					lprocfs_wr_mdt_nosquash_nids,
--					NULL, NULL, 0 },
--	{ "som",			lprocfs_rd_mdt_som,
--					lprocfs_wr_mdt_som,
--					NULL, NULL, 0 },
--	{ "instance",			lprocfs_target_rd_instance, NULL,
--					NULL, NULL, 0},
--	{ "ir_factor",			lprocfs_obd_rd_ir_factor,
--					lprocfs_obd_wr_ir_factor,
--					NULL, NULL, 0 },
--	{ "job_cleanup_interval",       lprocfs_rd_job_interval,
--					lprocfs_wr_job_interval,
--					NULL, NULL, 0 },
--	{ "enable_remote_dir",		lprocfs_rd_enable_remote_dir,
--					lprocfs_wr_enable_remote_dir,
--					NULL, NULL, 0},
--	{ "enable_remote_dir_gid",	lprocfs_rd_enable_remote_dir_gid,
--					lprocfs_wr_enable_remote_dir_gid,
--					NULL, NULL, 0},
--	{ "hsm_control",		lprocfs_rd_hsm_cdt_control,
--					lprocfs_wr_hsm_cdt_control,
--					NULL, NULL, 0 },
--	{ 0 }
--};
--
--static struct lprocfs_vars lprocfs_mdt_module_vars[] = {
--	{ "num_refs",			lprocfs_rd_numrefs, NULL,
--					NULL, NULL, 0 },
--        { 0 }
--};
--
--void lprocfs_mdt_init_vars(struct lprocfs_static_vars *lvars)
--{
--	lvars->module_vars  = lprocfs_mdt_module_vars;
--	lvars->obd_vars     = lprocfs_mdt_obd_vars;
--}
--
--struct lprocfs_vars lprocfs_mds_obd_vars[] = {
--	{ "uuid",	lprocfs_rd_uuid, NULL, NULL, NULL, 0 },
--	{ 0 }
--};
--
--struct lprocfs_vars lprocfs_mds_module_vars[] = {
--	{ "num_refs",	lprocfs_rd_numrefs, NULL, NULL, NULL, 0 },
-+LPROC_SEQ_FOPS(mdt_enable_remote_dir_gid);
-+
-+LPROC_SEQ_FOPS_RO_TYPE(mdt, uuid);
-+LPROC_SEQ_FOPS_RO_TYPE(mdt, recovery_status);
-+LPROC_SEQ_FOPS_RO_TYPE(mdt, num_exports);
-+LPROC_SEQ_FOPS_RO_TYPE(mdt, target_instance);
-+LPROC_SEQ_FOPS_RO_TYPE(mdt, hash);
-+LPROC_SEQ_FOPS_WO_TYPE(mdt, mds_evict_client);
-+LPROC_SEQ_FOPS_RW_TYPE(mdt, job_interval);
-+LPROC_SEQ_FOPS_RW_TYPE(mdt, ir_factor);
-+LPROC_SEQ_FOPS_RW_TYPE(mdt, nid_stats_clear);
-+LPROC_SEQ_FOPS(mdt_hsm_cdt_control);
-+
-+static struct lprocfs_seq_vars lprocfs_mdt_obd_vars[] = {
-+	{ .name =	"uuid",
-+	  .fops =	&mdt_uuid_fops				},
-+	{ .name =	"recovery_status",
-+	  .fops =	&mdt_recovery_status_fops		},
-+	{ .name =	"num_exports",
-+	  .fops =	&mdt_num_exports_fops			},
-+	{ .name =	"identity_expire",
-+	  .fops =	&mdt_identity_expire_fops		},
-+	{ .name =	"identity_acquire_expire",
-+	  .fops =	&mdt_identity_acquire_expire_fops	},
-+	{ .name =	"identity_upcall",
-+	  .fops =	&mdt_identity_upcall_fops		},
-+	{ .name =	"identity_flush",
-+	  .fops =	&mdt_identity_flush_fops		},
-+	{ .name =	"identity_info",
-+	  .fops =	&mdt_identity_info_fops			},
-+	{ .name =	"capa",
-+	  .fops =	&mdt_capa_fops				},
-+	{ .name =	"capa_timeout",
-+	  .fops =	&mdt_capa_timeout_fops			},
-+	{ .name =	"capa_key_timeout",
-+	  .fops =	&mdt_ck_timeout_fops			},
-+	{ .name =	"capa_count",
-+	  .fops =	&mdt_capa_count_fops			},
-+	{ .name =	"site_stats",
-+	  .fops =	&mdt_site_stats_fops			},
-+	{ .name =	"evict_client",
-+	  .fops =	&mdt_mds_evict_client_fops		},
-+	{ .name =	"hash_stats",
-+	  .fops =	&mdt_hash_fops				},
-+	{ .name =	"sec_level",
-+	  .fops =	&mdt_sec_level_fops			},
-+	{ .name =	"commit_on_sharing",
-+	  .fops =	&mdt_cos_fops				},
-+	{ .name =	"root_squash",
-+	  .fops =	&mdt_root_squash_fops			},
-+	{ .name =	"nosquash_nids",
-+	  .fops =	&mdt_nosquash_nids_fops			},
-+	{ .name =	"som",
-+	  .fops =	&mdt_som_fops				},
-+	{ .name =	"instance",
-+	  .fops =	&mdt_target_instance_fops		},
-+	{ .name =	"ir_factor",
-+	  .fops =	&mdt_ir_factor_fops			},
-+	{ .name =	"job_cleanup_interval",
-+	  .fops =	&mdt_job_interval_fops			},
-+	{ .name =	"enable_remote_dir",
-+	  .fops =	&mdt_enable_remote_dir_fops		},
-+	{ .name =	"enable_remote_dir_gid",
-+	  .fops =	&mdt_enable_remote_dir_gid_fops		},
-+	{ .name =	"hsm_control",
-+	  .fops =	&mdt_hsm_cdt_control_fops		},
- 	{ 0 }
- };
- 
-@@ -985,21 +916,15 @@ int lprocfs_mdt_open_files_seq_show(struct seq_file *seq, void *v)
- 
- int lprocfs_mdt_open_files_seq_open(struct inode *inode, struct file *file)
- {
--	struct proc_dir_entry	*dp = PDE(inode);
- 	struct seq_file		*seq;
--	struct nid_stat		*tmp;
- 	int			rc;
- 
--	if (LPROCFS_ENTRY_CHECK(dp))
--		return -ENOENT;
--
--	tmp = dp->data;
- 	rc = single_open(file, &lprocfs_mdt_open_files_seq_show, NULL);
- 	if (rc != 0)
- 		return rc;
- 
- 	seq = file->private_data;
--	seq->private = tmp;
-+	seq->private = PDE_DATA(inode);
- 
- 	return 0;
- }
-@@ -1040,3 +965,67 @@ void mdt_stats_counter_init(struct lprocfs_stats *stats)
-         lprocfs_counter_init(stats, LPROC_MDT_CROSSDIR_RENAME, 0,
-                              "crossdir_rename", "reqs");
- }
-+
-+int mdt_procfs_init(struct mdt_device *mdt, const char *name)
-+{
-+	struct obd_device		*obd = mdt2obd_dev(mdt);
-+	int				 rc;
-+	ENTRY;
-+
-+	LASSERT(name != NULL);
-+
-+	obd->obd_vars = lprocfs_mdt_obd_vars;
-+	rc = lprocfs_seq_obd_setup(obd);
-+	if (rc) {
-+		CERROR("%s: cannot create proc entries: rc = %d\n",
-+		       mdt_obd_name(mdt), rc);
-+		return rc;
-+	}
-+
-+	rc = hsm_cdt_procfs_init(mdt);
-+	if (rc) {
-+		CERROR("%s: cannot create hsm proc entries: rc = %d\n",
-+		       mdt_obd_name(mdt), rc);
-+		return rc;
-+	}
-+
-+	obd->obd_proc_exports_entry = proc_mkdir("exports",
-+						 obd->obd_proc_entry);
-+	if (obd->obd_proc_exports_entry)
-+		lprocfs_add_simple(obd->obd_proc_exports_entry, "clear",
-+#ifndef HAVE_ONLY_PROCFS_SEQ
-+				   NULL, NULL,
-+#endif
-+				   obd, &mdt_nid_stats_clear_fops);
-+	rc = lprocfs_alloc_md_stats(obd, LPROC_MDT_LAST);
-+	if (rc)
-+		return rc;
-+	mdt_stats_counter_init(obd->obd_md_stats);
-+
-+	rc = lprocfs_job_stats_init(obd, LPROC_MDT_LAST,
-+				    mdt_stats_counter_init);
-+
-+	rc = lproc_mdt_attach_rename_seqstat(mdt);
-+	if (rc)
-+		CERROR("%s: MDT can not create rename stats rc = %d\n",
-+		       mdt_obd_name(mdt), rc);
-+
-+	RETURN(rc);
-+}
-+
-+void mdt_procfs_fini(struct mdt_device *mdt)
-+{
-+	struct obd_device *obd = mdt2obd_dev(mdt);
-+
-+	if (obd->obd_proc_exports_entry != NULL) {
-+		lprocfs_remove_proc_entry("clear", obd->obd_proc_exports_entry);
-+		obd->obd_proc_exports_entry = NULL;
-+	}
-+
-+	lprocfs_free_per_client_stats(obd);
-+	hsm_cdt_procfs_fini(mdt);
-+	lprocfs_obd_cleanup(obd);
-+	lprocfs_free_md_stats(obd);
-+	lprocfs_free_obd_stats(obd);
-+	lprocfs_job_stats_fini(obd);
-+}
-diff --git a/lustre/mdt/mdt_mds.c b/lustre/mdt/mdt_mds.c
-index 390164f..424ddf5 100644
---- a/lustre/mdt/mdt_mds.c
-+++ b/lustre/mdt/mdt_mds.c
-@@ -464,6 +464,13 @@ static struct lu_device *mds_device_free(const struct lu_env *env,
- 	RETURN(NULL);
- }
- 
-+LPROC_SEQ_FOPS_RO_TYPE(mds, uuid);
-+
-+static struct lprocfs_seq_vars lprocfs_mds_obd_vars[] = {
-+	{ "uuid",	&mds_uuid_fops  },
-+	{ 0 }
-+};
-+
- static struct lu_device *mds_device_alloc(const struct lu_env *env,
- 					  struct lu_device_type *t,
- 					  struct lustre_cfg *cfg)
-@@ -487,7 +494,8 @@ static struct lu_device *mds_device_alloc(const struct lu_env *env,
- 	/* set this lu_device to obd, because error handling need it */
- 	obd->obd_lu_dev = l;
- 
--	rc = lprocfs_obd_setup(obd, lprocfs_mds_obd_vars);
-+	obd->obd_vars = lprocfs_mds_obd_vars;
-+	rc = lprocfs_seq_obd_setup(obd);
- 	if (rc != 0) {
- 		mds_device_free(env, l);
- 		l = ERR_PTR(rc);
-@@ -541,7 +549,7 @@ int mds_mod_init(void)
- 
- 	return class_register_type(&mds_obd_device_ops, NULL, true, NULL,
- #ifndef HAVE_ONLY_PROCFS_SEQ
--				   lprocfs_mds_module_vars,
-+				   NULL,
- #endif
- 				   LUSTRE_MDS_NAME, &mds_device_type);
- }
--- 
-1.9.3
-

diff --git a/sys-cluster/lustre/files/0008-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch b/sys-cluster/lustre/files/0006-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch
similarity index 99%
rename from sys-cluster/lustre/files/0008-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch
rename to sys-cluster/lustre/files/0006-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch
index e14c736..c27b478 100644
--- a/sys-cluster/lustre/files/0008-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch
+++ b/sys-cluster/lustre/files/0006-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch
@@ -1,7 +1,7 @@
-From cec7352d2cf74e8124a499aac74b246baa888c3c Mon Sep 17 00:00:00 2001
+From 54b05aa8e43dd1c0ce1d7c78c8fea11e64bef099 Mon Sep 17 00:00:00 2001
 From: Yang Sheng <yang.sheng@intel.com>
 Date: Thu, 24 Apr 2014 11:43:09 +0800
-Subject: [PATCH 8/8] LU-4416 mm: Backport shrinker changes from upstream
+Subject: [PATCH 6/6] LU-4416 mm: Backport shrinker changes from upstream
 
 Convert shrinker to new count/scan API.
 --ptlrpc shrinker
@@ -22,7 +22,7 @@ Change-Id: Idbd7cd3b7488202e5e8f6fdf757ae6d20e28d642
  6 files changed, 338 insertions(+), 163 deletions(-)
 
 diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4
-index dba971d..840fcd5 100644
+index ac5c413..81c6d7f 100644
 --- a/libcfs/autoconf/lustre-libcfs.m4
 +++ b/libcfs/autoconf/lustre-libcfs.m4
 @@ -290,6 +290,22 @@ No crc32c pclmulqdq crypto api found, enable internal pclmulqdq based crc32c

diff --git a/sys-cluster/lustre/lustre-9999.ebuild b/sys-cluster/lustre/lustre-9999.ebuild
index 26e07bd..d26599a 100644
--- a/sys-cluster/lustre/lustre-9999.ebuild
+++ b/sys-cluster/lustre/lustre-9999.ebuild
@@ -43,11 +43,9 @@ PATCHES=(
 	"${FILESDIR}/0001-LU-3319-procfs-Move-NRS-TBF-proc-handling-to-seq_fil.patch"
 	"${FILESDIR}/0002-LU-3319-procfs-update-zfs-proc-handling-to-seq_files.patch"
 	"${FILESDIR}/0003-LU-3319-procfs-move-osp-proc-handling-to-seq_files.patch"
-	"${FILESDIR}/0004-LU-3319-procfs-move-lod-proc-handling-to-seq_files.patch"
-	"${FILESDIR}/0005-LU-3319-procfs-move-mdt-mds-proc-handling-to-seq_fil.patch"
-	"${FILESDIR}/0006-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch"
-	"${FILESDIR}/0007-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch"
-	"${FILESDIR}/0008-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch"
+	"${FILESDIR}/0004-LU-2096-lprocfs-symlinks-for-forward-compatibility.patch"
+	"${FILESDIR}/0005-LU-3319-procfs-move-mdd-ofd-proc-handling-to-seq_fil.patch"
+	"${FILESDIR}/0006-LU-4416-mm-Backport-shrinker-changes-from-upstream.patch"
 	"${FILESDIR}/lustre-readline6.3_fix.patch"
 )
 


             reply	other threads:[~2014-05-20 12:43 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-20 12:43 Alexey Shvetsov [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-06-29 10:28 [gentoo-commits] proj/sci:master commit in: sys-cluster/lustre/, sys-cluster/lustre/files/ Alexey Shvetsov
2016-06-12 20:32 Alexey Shvetsov
2016-06-12 19:19 Alexey Shvetsov
2016-06-10 19:06 Alexey Shvetsov
2014-05-29 12:44 Alexey Shvetsov
2014-05-24 22:55 Alexey Shvetsov
2014-05-20 13:44 Alexey Shvetsov
2014-05-19  9:06 Alexey Shvetsov
2014-04-22  8:41 Alexey Shvetsov
2014-04-22  7:22 Alexey Shvetsov
2014-04-02 12:29 Alexey Shvetsov
2014-04-02 10:50 Alexey Shvetsov
2014-02-27 12:08 Alexey Shvetsov
2014-02-12  6:56 Alexey Shvetsov
2014-02-12  6:39 Alexey Shvetsov
2014-02-12  6:36 Alexey Shvetsov
2014-02-04 11:28 Alexey Shvetsov
2013-12-19 14:21 Alexey Shvetsov
2013-12-19 14:13 Alexey Shvetsov
2013-12-19 13:45 Alexey Shvetsov
2013-12-19 13:29 Alexey Shvetsov
2013-12-19 13:23 Alexey Shvetsov
2013-12-19 12:54 Alexey Shvetsov
2013-07-11 15:36 Justin Lecher
2013-07-11 13:25 Alexey Shvetsov
2013-05-07 18:45 Alexey Shvetsov
2013-05-07  9:20 Alexey Shvetsov
2013-04-23  7:43 Alexey Shvetsov
2013-04-22  9:25 Alexey Shvetsov
2013-04-17  9:59 Alexey Shvetsov
2013-04-17  9:45 Alexey Shvetsov
2013-04-16 12:08 Alexey Shvetsov
2013-04-16 11:27 Alexey Shvetsov
2013-03-31 17:20 Alexey Shvetsov
2013-03-31 11:28 Alexey Shvetsov
2013-03-31 11:15 Alexey Shvetsov
2013-03-27  5:05 Alexey Shvetsov
2013-03-22 11:08 Alexey Shvetsov
2013-03-22 10:27 Alexey Shvetsov
2013-03-18 23:14 Alexey Shvetsov
2013-03-18 20:53 Alexey Shvetsov
2013-03-18 14:10 Alexey Shvetsov
2013-03-18 14:00 Alexey Shvetsov
2013-03-18 12:29 Alexey Shvetsov
2013-03-18 12:21 Alexey Shvetsov
2013-03-18 12:13 Alexey Shvetsov
2013-03-18  3:53 Alexey Shvetsov
2013-03-14 11:57 Alexey Shvetsov
2013-03-14 10:21 Alexey Shvetsov
2013-03-14  9:47 Alexey Shvetsov
2013-03-06 12:37 Alexey Shvetsov
2012-09-20 19:15 Alexey Shvetsov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1400589758.ade0a4c9299533957a2316c17b082ffa06376e5d.alexxy@gentoo \
    --to=alexxy@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox