Whamcloud - gitweb
LU-5275 libcfs: merge params_tree.h into lprocfs_status.h 41/13341/4
authorJames Simmons <uja.ornl@gmail.com>
Mon, 12 Jan 2015 15:37:21 +0000 (10:37 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 19 Jan 2015 23:48:54 +0000 (23:48 +0000)
The macros in params_tree.h are only used for proc handling
in the lustre layer. Since this is the case we move all the
handling from params_tree.h to lprocfs_status.h

Change-Id: I590c1f2525bdd748450008af38510d19cd68f917
Signed-off-by: James Simmons <uja.ornl@gmail.com>
Reviewed-on: http://review.whamcloud.com/13341
Tested-by: Jenkins
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jian Yu <jian.yu@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
libcfs/include/libcfs/Makefile.am
libcfs/include/libcfs/libcfs.h
libcfs/include/libcfs/params_tree.h [deleted file]
lustre/include/lprocfs_status.h
lustre/obdclass/lprocfs_jobstats.c
lustre/obdclass/lprocfs_status.c

index 67bb495..11bc80c 100644 (file)
@@ -29,7 +29,6 @@ EXTRA_DIST = \
        libcfsutil.h \
        list.h \
        lucache.h \
        libcfsutil.h \
        list.h \
        lucache.h \
-       params_tree.h \
        types.h \
        user-bitops.h \
        user-crypto.h \
        types.h \
        user-bitops.h \
        user-crypto.h \
index b0ce602..f18f447 100644 (file)
@@ -42,7 +42,6 @@
 
 #ifdef __KERNEL__
 # include <libcfs/linux/libcfs.h>
 
 #ifdef __KERNEL__
 # include <libcfs/linux/libcfs.h>
-# include <libcfs/params_tree.h>
 #else /* !__KERNEL__ */
 # include <assert.h>
 # include <ctype.h>
 #else /* !__KERNEL__ */
 # include <assert.h>
 # include <ctype.h>
diff --git a/libcfs/include/libcfs/params_tree.h b/libcfs/include/libcfs/params_tree.h
deleted file mode 100644 (file)
index 16983d3..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * API and structure definitions for params_tree.
- *
- * Author: LiuYing <emoly.liu@oracle.com>
- */
-#ifndef __PARAMS_TREE_H__
-#define __PARAMS_TREE_H__
-
-#include <linux/fs.h>
-#include <linux/proc_fs.h>
-#include <linux/rwsem.h>
-#include <linux/spinlock.h>
-
-#ifdef CONFIG_PROC_FS
-# ifndef HAVE_ONLY_PROCFS_SEQ
-/* in lprocfs_stat.c, to protect the private data for proc entries */
-extern struct rw_semaphore             _lprocfs_lock;
-
-static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
-{
-       struct proc_dir_entry *dp = PDE(inode);
-       int deleted = 0;
-
-       spin_lock(&(dp)->pde_unload_lock);
-       if (dp->proc_fops == NULL)
-               deleted = 1;
-       spin_unlock(&(dp)->pde_unload_lock);
-       if (deleted)
-               return -ENODEV;
-       return 0;
-}
-
-#  define LPROCFS_SRCH_ENTRY()                 \
-       do {                                    \
-               down_read(&_lprocfs_lock);      \
-       } while (0)
-
-#  define LPROCFS_SRCH_EXIT()                  \
-       do {                                    \
-               up_read(&_lprocfs_lock);        \
-       } while (0)
-
-#  define LPROCFS_WRITE_ENTRY()                        \
-       do {                                    \
-               down_write(&_lprocfs_lock);     \
-       } while (0)
-
-#  define LPROCFS_WRITE_EXIT()                 \
-       do {                                    \
-               up_write(&_lprocfs_lock);       \
-       } while (0)
-
-#  define PDE_DATA(inode)      (PDE(inode)->data)
-
-# else /* HAVE_ONLY_PROCFS_SEQ */
-
-static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
-{
-       return 0;
-}
-
-#define LPROCFS_WRITE_ENTRY() do {} while(0)
-#define LPROCFS_WRITE_EXIT()  do {} while(0)
-
-# endif /* !HAVE_ONLY_PROCFS_SEQ */
-#endif /* CONFIG_PROC_FS */
-#endif  /* __PARAMS_TREE_H__ */
index 3615d21..d1c197a 100644 (file)
 #ifndef _LPROCFS_SNMP_H
 #define _LPROCFS_SNMP_H
 
 #ifndef _LPROCFS_SNMP_H
 #define _LPROCFS_SNMP_H
 
+#include <linux/fs.h>
+#include <linux/proc_fs.h>
+#include <linux/rwsem.h>
+#include <linux/spinlock.h>
+
 #include <lustre/lustre_idl.h>
 #include <lustre/lustre_idl.h>
-#include <libcfs/params_tree.h>
 
 #ifndef HAVE_ONLY_PROCFS_SEQ
 struct lprocfs_vars {
 
 #ifndef HAVE_ONLY_PROCFS_SEQ
 struct lprocfs_vars {
@@ -649,6 +653,25 @@ extern void lprocfs_try_remove_proc_entry(const char *name,
 
 extern struct proc_dir_entry *lprocfs_srch(struct proc_dir_entry *root,
                                           const char *name);
 
 extern struct proc_dir_entry *lprocfs_srch(struct proc_dir_entry *root,
                                           const char *name);
+
+#define PDE_DATA(inode)                (PDE(inode)->data)
+
+static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
+{
+       struct proc_dir_entry *dp = PDE(inode);
+       int deleted = 0;
+
+       spin_lock(&(dp)->pde_unload_lock);
+       if (dp->proc_fops == NULL)
+               deleted = 1;
+       spin_unlock(&(dp)->pde_unload_lock);
+       if (deleted)
+               return -ENODEV;
+       return 0;
+}
+#else
+static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
+{ return 0; }
 #endif
 extern int lprocfs_obd_setup(struct obd_device *dev);
 extern int lprocfs_obd_cleanup(struct obd_device *obd);
 #endif
 extern int lprocfs_obd_setup(struct obd_device *dev);
 extern int lprocfs_obd_cleanup(struct obd_device *obd);
index d3b0be0..930ca06 100644 (file)
@@ -518,11 +518,9 @@ int lprocfs_job_stats_init(struct obd_device *obd, int cntr_num,
        stats->ojs_cleanup_interval = 600; /* 10 mins by default */
        stats->ojs_last_cleanup = cfs_time_current_sec();
 
        stats->ojs_cleanup_interval = 600; /* 10 mins by default */
        stats->ojs_last_cleanup = cfs_time_current_sec();
 
-       LPROCFS_WRITE_ENTRY();
-       entry = proc_create_data("job_stats", 0644, obd->obd_proc_entry,
-                               &lprocfs_jobstats_seq_fops, stats);
-       LPROCFS_WRITE_EXIT();
-       if (entry == NULL) {
+       entry = lprocfs_add_simple(obd->obd_proc_entry, "job_stats", stats,
+                                  &lprocfs_jobstats_seq_fops);
+       if (IS_ERR(entry)) {
                lprocfs_job_stats_fini(obd);
                RETURN(-ENOMEM);
        }
                lprocfs_job_stats_fini(obd);
                RETURN(-ENOMEM);
        }
index f0ff132..f00f3fd 100644 (file)
@@ -228,9 +228,9 @@ struct proc_dir_entry *lprocfs_srch(struct proc_dir_entry *head,
 {
        struct proc_dir_entry *temp;
 
 {
        struct proc_dir_entry *temp;
 
-       LPROCFS_SRCH_ENTRY();
+       down_read(&_lprocfs_lock);
        temp = __lprocfs_srch(head, name);
        temp = __lprocfs_srch(head, name);
-       LPROCFS_SRCH_EXIT();
+       up_read(&_lprocfs_lock);
        return temp;
 }
 EXPORT_SYMBOL(lprocfs_srch);
        return temp;
 }
 EXPORT_SYMBOL(lprocfs_srch);
@@ -316,9 +316,9 @@ int lprocfs_add_vars(struct proc_dir_entry *root, struct lprocfs_vars *list,
 {
        int rc = 0;
 
 {
        int rc = 0;
 
-       LPROCFS_WRITE_ENTRY();
+       down_write(&_lprocfs_lock);
        rc = __lprocfs_add_vars(root, list, data);
        rc = __lprocfs_add_vars(root, list, data);
-       LPROCFS_WRITE_EXIT();
+       up_write(&_lprocfs_lock);
 
        return rc;
 }
 
        return rc;
 }
@@ -404,9 +404,9 @@ static void lprocfs_remove_nolock(struct proc_dir_entry **proot)
 void lprocfs_remove(struct proc_dir_entry **rooth)
 {
 #ifndef HAVE_ONLY_PROCFS_SEQ
 void lprocfs_remove(struct proc_dir_entry **rooth)
 {
 #ifndef HAVE_ONLY_PROCFS_SEQ
-       LPROCFS_WRITE_ENTRY(); /* search vs remove race */
+       down_write(&_lprocfs_lock); /* search vs remove race */
        lprocfs_remove_nolock(rooth);
        lprocfs_remove_nolock(rooth);
-       LPROCFS_WRITE_EXIT();
+       up_write(&_lprocfs_lock);
 #else
        proc_remove(*rooth);
        *rooth = NULL;
 #else
        proc_remove(*rooth);
        *rooth = NULL;
@@ -432,8 +432,7 @@ void lprocfs_try_remove_proc_entry(const char *name,
        LASSERT(parent != NULL);
        len = strlen(name);
 
        LASSERT(parent != NULL);
        len = strlen(name);
 
-       LPROCFS_WRITE_ENTRY();
-
+       down_write(&_lprocfs_lock);
        /* lookup target name */
        for (p = &parent->subdir; *p; p = &(*p)->next) {
                if ((*p)->namelen != len)
        /* lookup target name */
        for (p = &parent->subdir; *p; p = &(*p)->next) {
                if ((*p)->namelen != len)
@@ -462,8 +461,7 @@ void lprocfs_try_remove_proc_entry(const char *name,
        if (busy == 0)
                lprocfs_remove_nolock(&t);
 
        if (busy == 0)
                lprocfs_remove_nolock(&t);
 
-       LPROCFS_WRITE_EXIT();
-
+       up_write(&_lprocfs_lock);
        return;
 }
 EXPORT_SYMBOL(lprocfs_try_remove_proc_entry);
        return;
 }
 EXPORT_SYMBOL(lprocfs_try_remove_proc_entry);
@@ -475,7 +473,7 @@ struct proc_dir_entry *lprocfs_register(const char *name,
        struct proc_dir_entry *entry;
        int rc;
 
        struct proc_dir_entry *entry;
        int rc;
 
-       LPROCFS_WRITE_ENTRY();
+       down_write(&_lprocfs_lock);
        entry = __lprocfs_srch(parent, name);
        if (entry != NULL) {
                CERROR("entry '%s' already registered\n", name);
        entry = __lprocfs_srch(parent, name);
        if (entry != NULL) {
                CERROR("entry '%s' already registered\n", name);
@@ -494,7 +492,7 @@ struct proc_dir_entry *lprocfs_register(const char *name,
                }
        }
 out:
                }
        }
 out:
-       LPROCFS_WRITE_EXIT();
+       up_write(&_lprocfs_lock);
        return entry;
 }
 EXPORT_SYMBOL(lprocfs_register);
        return entry;
 }
 EXPORT_SYMBOL(lprocfs_register);