On Sun, Aug 19, 2007 at 10:57:52AM +0200, Papp Tamas wrote:
>On Sat, Aug 18, 2007 at 03:08:54AM -0400, Aaron Knister wrote:
>> Can you post anything in dmesg or /var/log/messages relative to lustre?
>LustreError: 22171:0:(linux-proc.c:249:insert_proc()) couldn't register
>dump_kernel
>LustreError: 22171:0:(module.c:378:init_libcfs_module()) insert_proc: error -1
you have hit this:
https://bugzilla.lustre.org/show_bug.cgi?id=12782
Bernd (I think) wrote a "2.6.21-sysctl.patch" to fix this and it looks
like about half of this patch made it into 1.6.1.
I've attached an updated version of the rest of the patch that applies
cleanly to 1.6.1.
also attached is a buildfix patch for 1.6.1 which is necessary for
building with OpenIB/o2ib. most of this was from the TACC guys in this
thread:
https://bugzilla.lustre.org/show_bug.cgi?id=13378
and it appears that the same fixes are also necesary for using the
standard in-kernel InfiniBand stack. eg.
./configure --with-linux=/usr/src/linux-2.6.22.4
--with-o2ib=/usr/src/linux-2.6.22.4 --disable-server --enable-quota
both patches are so far only lightly tested against 2.6.22.4 on x86_64.
cheers,
robin
--
Dr Robin Humble, HPC Systems Analyst, Australian National Facility
diff -ru lustre-1.6.1/lnet/include/libcfs/linux/linux-prim.h
lustre-1.6.1.rjh/lnet/include/libcfs/linux/linux-prim.h
--- lustre-1.6.1/lnet/include/libcfs/linux/linux-prim.h 2007-05-17
16:46:58.000000000 +1000
+++ lustre-1.6.1.rjh/lnet/include/libcfs/linux/linux-prim.h 2007-08-21
18:33:34.000000000 +1000
@@ -39,6 +39,8 @@
#include <linux/proc_fs.h>
#include <linux/mm.h>
#include <linux/timer.h>
+#include <linux/signal.h>
+#include <linux/sched.h>
#include <linux/miscdevice.h>
#include <libcfs/linux/portals_compat25.h>
diff -ru lustre-1.6.1/lnet/klnds/o2iblnd/o2iblnd.c
lustre-1.6.1.rjh/lnet/klnds/o2iblnd/o2iblnd.c
--- lustre-1.6.1/lnet/klnds/o2iblnd/o2iblnd.c 2007-06-21 03:43:52.000000000
+1000
+++ lustre-1.6.1.rjh/lnet/klnds/o2iblnd/o2iblnd.c 2007-08-21
18:09:58.000000000 +1000
@@ -718,7 +718,7 @@
cq = ib_create_cq(cmid->device,
kiblnd_cq_completion, kiblnd_cq_event, conn,
- IBLND_CQ_ENTRIES());
+ IBLND_CQ_ENTRIES(), 0);
if (!IS_ERR(cq)) {
conn->ibc_cq = cq;
} else {
diff -ru lustre-1.6.1/lnet/klnds/o2iblnd/o2iblnd.h
lustre-1.6.1.rjh/lnet/klnds/o2iblnd/o2iblnd.h
--- lustre-1.6.1/lnet/klnds/o2iblnd/o2iblnd.h 2007-06-21 15:02:47.000000000
+1000
+++ lustre-1.6.1.rjh/lnet/klnds/o2iblnd/o2iblnd.h 2007-08-21
18:08:39.000000000 +1000
@@ -41,6 +41,7 @@
#include <asm/uaccess.h>
#include <asm/io.h>
+#include <linux/pci.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/file.h>
diff -ru lustre-1.6.1.orig/lnet/libcfs/linux/linux-proc.c
lustre-1.6.1/lnet/libcfs/linux/linux-proc.c
--- lustre-1.6.1.orig/lnet/libcfs/linux/linux-proc.c 2007-06-14
19:16:49.000000000 +1000
+++ lustre-1.6.1/lnet/libcfs/linux/linux-proc.c 2007-08-21 20:10:22.000000000
+1000
@@ -62,6 +62,8 @@
static struct ctl_table_header *lnet_table_header = NULL;
extern char lnet_upcall[1024];
+extern struct ctl_table top_table[2];
+
#define PSDEV_LNET (0x100)
enum {
PSDEV_DEBUG = 1, /* control debugging */
@@ -239,10 +241,24 @@
{
struct proc_dir_entry *ent;
+ ent = proc_mkdir("sys/lnet", NULL);
+ if (ent == NULL) {
+ CERROR("couldn't create /proc/sys/lnet \n");
+ return -1;
+ }
+
#ifdef CONFIG_SYSCTL
if (!lnet_table_header)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+ lnet_table_header = register_sysctl_table(top_table);
+#else
lnet_table_header = cfs_register_sysctl_table(top_table, 0);
#endif
+ if (!lnet_table_header) {
+ CERROR("registering top_table failed\n");
+ return -1;
+ }
+#endif
ent = create_proc_entry("sys/lnet/dump_kernel", 0, NULL);
if (ent == NULL) {
diff -ru lustre-1.6.1.orig/lustre/obdclass/linux/linux-sysctl.c
lustre-1.6.1/lustre/obdclass/linux/linux-sysctl.c
--- lustre-1.6.1.orig/lustre/obdclass/linux/linux-sysctl.c 2007-07-06
09:42:32.000000000 +1000
+++ lustre-1.6.1/lustre/obdclass/linux/linux-sysctl.c 2007-08-21
19:59:47.000000000 +1000
@@ -83,6 +83,26 @@
return rc;
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+static ctl_table obd_table[] = {
+ {OBD_FAIL_LOC, "fail_loc", &obd_fail_loc, sizeof(int), 0644, NULL,
+ NULL, &proc_fail_loc},
+ {OBD_TIMEOUT, "timeout", &obd_timeout, sizeof(int), 0644, NULL,
+ NULL, &proc_set_timeout},
+ {OBD_DEBUG_PEER_ON_TIMEOUT, "debug_peer_on_timeout",
+ &obd_debug_peer_on_timeout,
+ sizeof(int), 0644, NULL, NULL, &proc_dointvec},
+ {OBD_DUMP_ON_TIMEOUT, "dump_on_timeout", &obd_dump_on_timeout,
+ sizeof(int), 0644, NULL, NULL, &proc_dointvec},
+ {OBD_DUMP_ON_EVICTION, "dump_on_eviction", &obd_dump_on_eviction,
+ sizeof(int), 0644, NULL, NULL, &proc_dointvec},
+ {OBD_MEMUSED, "memused", (int *)&obd_memory.counter,
+ sizeof(int), 0644, NULL, NULL, &proc_dointvec},
+ {OBD_LDLM_TIMEOUT, "ldlm_timeout", &ldlm_timeout, sizeof(int), 0644,
+ NULL, NULL, &proc_set_timeout},
+ { 0 }
+};
+#else
static ctl_table obd_table[] = {
{OBD_FAIL_LOC, "fail_loc", &obd_fail_loc, sizeof(int), 0644, NULL,
&proc_fail_loc},
@@ -103,6 +123,7 @@
NULL, &proc_set_timeout},
{ 0 }
};
+#endif
static ctl_table parent_table[] = {
{OBD_SYSCTL, "lustre", NULL, 0, 0555, obd_table},
@@ -113,8 +134,12 @@
{
#ifdef CONFIG_SYSCTL
if ( !obd_table_header )
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)
+ obd_table_header = register_sysctl_table(parent_table);
+#else
obd_table_header = cfs_register_sysctl_table(parent_table, 0);
#endif
+#endif
}
void obd_sysctl_clean (void)
_______________________________________________
Lustre-discuss mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-discuss