[PVFS2-CVS] commit by robl in pvfs2-1/src/kernel/linux-2.6: Makefile.in dcache.c devpvfs2-req.c dir.c file.c inode.c namei.c pvfs2-bufmap.c pvfs2-cache.c pvfs2-kernel.h pvfs2-mod.c pvfs2-utils.c super.c symlink.c waitqueue.c

CVS commit program cvs at parl.clemson.edu
Thu Jul 7 18:38:43 EDT 2005


Update of /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6
In directory parlweb:/tmp/cvs-serv23015/src/kernel/linux-2.6

Modified Files:
	Makefile.in dcache.c devpvfs2-req.c dir.c file.c inode.c 
	namei.c pvfs2-bufmap.c pvfs2-cache.c pvfs2-kernel.h 
	pvfs2-mod.c pvfs2-utils.c super.c symlink.c waitqueue.c 
Log Message:
Phil's kernel debugging patch:
- adds version number to load and unload messages
- documents existing hash table size module parameter
- adds new module parameter (debug={1/0}) to turn debugging on or off at load
  time without having to recompile                                           
- adds new proc entry (proc/sys/pvfs2/debug) that allows toggling debug
  messages on or off dynamically while module is loaded 
- removes a broken log message                      



Index: Makefile.in
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/Makefile.in,v
diff -u -w -p -u -r1.15 -r1.16
--- Makefile.in	23 Mar 2005 21:58:23 -0000	1.15
+++ Makefile.in	7 Jul 2005 21:38:42 -0000	1.16
@@ -67,6 +67,7 @@ EXTRA_CFLAGS = \
     -I$(absolute_src_dir)/src/common/quickhash
 
 EXTRA_CFLAGS += @MMAP_RA_CACHE@
+EXTRA_CFLAGS += -DPVFS2_VERSION="\"@PVFS2_VERSION@\""
 
 # uncomment the following line for kernel specific
 # debugging output or features

Index: dcache.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/dcache.c,v
diff -u -w -p -u -r1.23 -r1.24
--- dcache.c	16 Jun 2005 18:40:17 -0000	1.23
+++ dcache.c	7 Jul 2005 21:38:42 -0000	1.24
@@ -11,6 +11,8 @@
  */
 
 #include "pvfs2-kernel.h"
+
+extern int debug;
 extern kmem_cache_t *pvfs2_inode_cache;
 extern struct list_head pvfs2_request_list;
 extern spinlock_t pvfs2_request_list_lock;

Index: devpvfs2-req.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/devpvfs2-req.c,v
diff -u -w -p -u -r1.45 -r1.46
--- devpvfs2-req.c	22 Nov 2004 18:14:05 -0000	1.45
+++ devpvfs2-req.c	7 Jul 2005 21:38:42 -0000	1.46
@@ -19,6 +19,7 @@ extern struct qhash_table *htable_ops_in
 extern struct file_system_type pvfs2_fs_type;
 extern struct semaphore devreq_semaphore;
 extern struct semaphore request_semaphore;
+extern int debug;
 
 /* defined in super.c */
 extern struct list_head pvfs2_superblocks;

Index: dir.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/dir.c,v
diff -u -w -p -u -r1.32 -r1.33
--- dir.c	11 Jan 2005 17:45:03 -0000	1.32
+++ dir.c	7 Jul 2005 21:38:42 -0000	1.33
@@ -16,6 +16,7 @@
 extern struct list_head pvfs2_request_list;
 extern spinlock_t pvfs2_request_list_lock;
 extern wait_queue_head_t pvfs2_request_list_waitq;
+extern int debug;
 
 /* shared file/dir operations defined in file.c */
 extern int pvfs2_file_open(

Index: file.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/file.c,v
diff -u -w -p -u -r1.90 -r1.91
--- file.c	16 Jun 2005 20:43:48 -0000	1.90
+++ file.c	7 Jul 2005 21:38:42 -0000	1.91
@@ -16,6 +16,7 @@
 extern struct list_head pvfs2_request_list;
 extern spinlock_t pvfs2_request_list_lock;
 extern wait_queue_head_t pvfs2_request_list_waitq;
+extern int debug;
 
 extern struct address_space_operations pvfs2_address_operations;
 extern struct backing_dev_info pvfs2_backing_dev_info;
@@ -471,9 +472,6 @@ int pvfs2_fsync(
     int ret = -EINVAL;
     pvfs2_inode_t *pvfs2_inode = PVFS2_I(file->f_dentry->d_inode);
     pvfs2_kernel_op_t *new_op = NULL;
-
-    pvfs2_print("pvfs2_fsync called on %s (must block? %s\n",
-                pvfs2_inode->refn.handle, pvfs2_inode->refn.fs_id);
 
     new_op = op_alloc();
     if (!new_op)

Index: inode.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/inode.c,v
diff -u -w -p -u -r1.54 -r1.55
--- inode.c	16 Jun 2005 20:44:14 -0000	1.54
+++ inode.c	7 Jul 2005 21:38:42 -0000	1.55
@@ -26,6 +26,7 @@ extern struct file_operations pvfs2_file
 extern struct inode_operations pvfs2_symlink_inode_operations;
 extern struct inode_operations pvfs2_dir_inode_operations;
 extern struct file_operations pvfs2_dir_operations;
+extern int debug;
 
 
 /** Read page-sized blocks from file.  This code is only used in the mmap

Index: namei.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/namei.c,v
diff -u -w -p -u -r1.60 -r1.61
--- namei.c	13 Jan 2005 18:42:27 -0000	1.60
+++ namei.c	7 Jul 2005 21:38:42 -0000	1.61
@@ -15,6 +15,7 @@
 extern struct list_head pvfs2_request_list;
 extern spinlock_t pvfs2_request_list_lock;
 extern wait_queue_head_t pvfs2_request_list_waitq;
+extern int debug;
 
 extern struct dentry_operations pvfs2_dentry_operations;
 

Index: pvfs2-bufmap.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/pvfs2-bufmap.c,v
diff -u -w -p -u -r1.33 -r1.34
--- pvfs2-bufmap.c	3 Dec 2004 19:16:10 -0000	1.33
+++ pvfs2-bufmap.c	7 Jul 2005 21:38:42 -0000	1.34
@@ -10,6 +10,7 @@
 #define BUFMAP_PAGE_COUNT (PVFS2_BUFMAP_TOTAL_SIZE/PAGE_SIZE)
 #define PAGES_PER_DESC (PVFS2_BUFMAP_DEFAULT_DESC_SIZE/PAGE_SIZE)
 
+extern int debug;
 static int bufmap_init = 0;
 
 static struct page **bufmap_page_array = NULL;

Index: pvfs2-cache.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/pvfs2-cache.c,v
diff -u -w -p -u -r1.24 -r1.25
--- pvfs2-cache.c	8 Sep 2004 19:59:03 -0000	1.24
+++ pvfs2-cache.c	7 Jul 2005 21:38:42 -0000	1.25
@@ -18,6 +18,7 @@ extern kmem_cache_t *dev_req_cache;
 /* a cache for pvfs2-inode objects (i.e. pvfs2 inode private data) */
 extern kmem_cache_t *pvfs2_inode_cache;
 
+extern int debug;
 extern int pvfs2_gen_credentials(
     PVFS_credentials *credentials);
 

Index: pvfs2-kernel.h
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/pvfs2-kernel.h,v
diff -u -w -p -u -r1.88 -r1.89
--- pvfs2-kernel.h	29 Mar 2005 16:33:13 -0000	1.88
+++ pvfs2-kernel.h	7 Jul 2005 21:38:42 -0000	1.89
@@ -86,7 +86,9 @@ do {                                    
     panic(msg);                                                \
 } while(0)
 #else
-#define pvfs2_print(...)
+#define pvfs2_print(format...) do{                             \
+    if(debug) printk(format);                                  \
+}while(0)
 #define pvfs2_panic(msg)                                       \
 do {                                                           \
     pvfs2_error("BUG! Please contact pvfs2-developers at beowulf-"\

Index: pvfs2-mod.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/pvfs2-mod.c,v
diff -u -w -p -u -r1.26 -r1.27
--- pvfs2-mod.c	13 Sep 2004 20:52:52 -0000	1.26
+++ pvfs2-mod.c	7 Jul 2005 21:38:43 -0000	1.27
@@ -6,24 +6,48 @@
 
 #include "pvfs2-kernel.h"
 
-extern struct file_operations pvfs2_devreq_file_operations;
+#ifndef PVFS2_VERSION
+#define PVFS2_VERSION "Unknown"
+#endif
 
+extern struct file_operations pvfs2_devreq_file_operations;
 extern void pvfs2_kill_sb(struct super_block *sb);
 
 static int hash_func(void *key, int table_size);
 static int hash_compare(void *key, struct qhash_head *link);
 
-
 /*************************************
  * global variables declared here
  *************************************/
 
 /* the size of the hash tables for ops in progress */
 static int hash_table_size = 509;
+int debug = 0;
+
+#ifdef CONFIG_SYSCTL
+/* setup information for proc/sys/pvfs2 entries */
+#include <linux/sysctl.h>
+static struct ctl_table_header *fs_table_header = NULL;
+#define FS_PVFS2 1    /* pvfs2 file system */
+#define PVFS2_DEBUG 1 /* ctl debugging level */
+static int min_debug[] = {0}, max_debug[] = {1};
+static ctl_table pvfs2_table[] = {
+    {PVFS2_DEBUG, "debug", &debug, sizeof(int), 0644, NULL,
+        &proc_dointvec_minmax, &sysctl_intvec,
+        NULL, &min_debug, &max_debug},
+    {0}
+};
+static ctl_table fs_table[] = {
+    {FS_PVFS2, "pvfs2", NULL, 0, 0555, pvfs2_table},
+    {0}
+};
+#endif
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("PVFS2 Development Team");
 MODULE_DESCRIPTION("The Linux Kernel VFS interface to PVFS2");
+MODULE_PARM_DESC(debug, "debugging level (0 for none, 1 for verbose)");
+MODULE_PARM_DESC(hash_table_size, "size of hash table for operations in progress");
 
 #ifdef PVFS2_LINUX_KERNEL_2_4
 /*
@@ -33,6 +57,7 @@ MODULE_DESCRIPTION("The Linux Kernel VFS
 DECLARE_FSTYPE(pvfs2_fs_type, "pvfs2", pvfs2_get_sb, 0);
 
 MODULE_PARM(hash_table_size, "i");
+MODULE_PARM(debug, "i");
 
 #else /* !PVFS2_LINUX_KERNEL_2_4 */
 
@@ -52,6 +77,7 @@ struct file_system_type pvfs2_fs_type =
 };
 
 module_param(hash_table_size, int, 0);
+module_param(debug, bool, 0);
 
 #endif /* PVFS2_LINUX_KERNEL_2_4 */
 
@@ -88,8 +114,15 @@ DECLARE_WAIT_QUEUE_HEAD(pvfs2_request_li
 
 static int __init pvfs2_init(void)
 {
+    int ret = -1;
     pvfs2_print("pvfs2: pvfs2_init called\n");
 
+    if(debug)
+    {
+        debug=1; /* normalize any non-zero value to 1 */
+        pvfs2_error("pvfs2: verbose debug mode\n");
+    }
+
     /* register pvfs2-req device  */
     pvfs2_dev_major = register_chrdev(0, PVFS2_REQDEVICE_NAME,
                                       &pvfs2_devreq_file_operations);
@@ -118,7 +151,18 @@ static int __init pvfs2_init(void)
     {
 	panic("Failed to initialize op hashtable");
     }
-    return register_filesystem(&pvfs2_fs_type);
+    ret = register_filesystem(&pvfs2_fs_type);
+
+#ifdef CONFIG_SYSCTL
+    if (!fs_table_header)
+        fs_table_header = register_sysctl_table(fs_table, 0);
+#endif
+
+    if(ret == 0)
+    {
+        printk("pvfs2: module version %s loaded\n", PVFS2_VERSION);
+    }
+    return(ret);
 }
 
 static void __exit pvfs2_exit(void)
@@ -129,6 +173,13 @@ static void __exit pvfs2_exit(void)
 
     pvfs2_print("pvfs2: pvfs2_exit called\n");
 
+#ifdef CONFIG_SYSCTL
+    if ( fs_table_header ) {
+        unregister_sysctl_table(fs_table_header);
+        fs_table_header = NULL;
+    }
+#endif
+
     /* clear out all pending upcall op requests */
     spin_lock(&pvfs2_request_list_lock);
     while (!list_empty(&pvfs2_request_list))
@@ -170,6 +221,8 @@ static void __exit pvfs2_exit(void)
                 PVFS2_REQDEVICE_NAME);
 
     unregister_filesystem(&pvfs2_fs_type);
+
+    printk("pvfs2: module version %s unloaded\n", PVFS2_VERSION);
 }
 
 static int hash_func(void *key, int table_size)

Index: pvfs2-utils.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/pvfs2-utils.c,v
diff -u -w -p -u -r1.96 -r1.97
--- pvfs2-utils.c	8 Jun 2005 19:30:30 -0000	1.96
+++ pvfs2-utils.c	7 Jul 2005 21:38:43 -0000	1.97
@@ -21,6 +21,7 @@ extern struct inode_operations pvfs2_sym
 extern struct inode_operations pvfs2_dir_inode_operations;
 extern struct file_operations pvfs2_dir_operations;
 extern struct dentry_operations pvfs2_dentry_operations;
+extern int debug;
 
 
 int pvfs2_gen_credentials(

Index: super.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/super.c,v
diff -u -w -p -u -r1.59 -r1.60
--- super.c	14 Jun 2005 17:59:34 -0000	1.59
+++ super.c	7 Jul 2005 21:38:43 -0000	1.60
@@ -16,6 +16,7 @@ extern spinlock_t pvfs2_request_list_loc
 extern wait_queue_head_t pvfs2_request_list_waitq;
 
 extern void pvfs2_kill_sb(struct super_block *sb);
+extern int debug;
 
 /* list for storing pvfs2 specific superblocks in use */
 LIST_HEAD(pvfs2_superblocks);

Index: symlink.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/symlink.c,v
diff -u -w -p -u -r1.9 -r1.10
--- symlink.c	22 Nov 2004 18:14:05 -0000	1.9
+++ symlink.c	7 Jul 2005 21:38:43 -0000	1.10
@@ -10,6 +10,7 @@
 extern struct list_head pvfs2_request_list;
 extern spinlock_t pvfs2_request_list_lock;
 extern struct dentry_operations pvfs2_dentry_operations;
+extern int debug;
 
 static int pvfs2_readlink(
     struct dentry *dentry, char __user *buffer, int buflen)

Index: waitqueue.c
===================================================================
RCS file: /projects/cvsroot/pvfs2-1/src/kernel/linux-2.6/waitqueue.c,v
diff -u -w -p -u -r1.15 -r1.16
--- waitqueue.c	11 Jan 2005 17:24:19 -0000	1.15
+++ waitqueue.c	7 Jul 2005 21:38:43 -0000	1.16
@@ -15,6 +15,7 @@
 extern struct list_head pvfs2_request_list;
 extern spinlock_t pvfs2_request_list_lock;
 extern struct qhash_table *htable_ops_in_progress;
+extern int debug;
 
 static inline void clean_up_interrupted_operation(
     pvfs2_kernel_op_t * op)



More information about the PVFS2-CVS mailing list