Just a heads up: I can make this server error happen consistently with today's pvfs2 cvs:
[E 16:19:23.007018] ../pvfs2/src/proto/PINT-le-bytefield.c line 572:
lebf_decode_req: improper input buffer size
[E 16:19:23.007244] [bt] pvfs2-server [0x808b60a]
[E 16:19:23.007258] [bt] pvfs2-server(PINT_decode+0x230)
[0x8089b98]
[E 16:19:23.007271] [bt] pvfs2-server(vfprintf+0x23c8)
[0x805d7a8]
[E 16:19:23.007283] [bt] pvfs2-server(main+0x3b5) [0x805be95]
[E 16:19:23.007295] [bt]
/lib/i686/libc.so.6(__libc_start_main+0xaa) [0x400a5bba]
[E 16:19:23.007307] [bt] pvfs2-server(shmat+0x41) [0x805b971]
One change I had to make may be the cause. I hacked
pvfs2_sendfile() to work with a 2.6.6 kernel due to different member
names in read_descriptor_t. There may have been other changes than
just the name. And a configure.in to look for it. Attached, but
not checked in due to my uncertainty about how this stuff is
supposed to work.
The way to kill it is: rebuild a 2-server FS from scratch with
metadata on 1 of the nodes. Just a 1 server config is not
sufficient to cause problems. Mount it up from a 2.6.6 client.
Run this on the client:
tar xfzvC tarball.tgz /pvfs
Teensy tarball attached too.
The two server logs I get with debugmask verbose are attached if
they help. Walking up from a breakpoint on that error line 572
shows that we're in a smallio req:
(gdb) p req->op
$8 = PVFS_SERV_SMALL_IO
I'm leaving email awareness for the next week or so starting
tomorrow, so don't be offended if I fail to reply.
-- Pete
Index: src/kernel/linux-2.6/file.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/kernel/linux-2.6/file.c,v
retrieving revision 1.106
diff -u -p -r1.106 file.c
--- src/kernel/linux-2.6/file.c 20 Dec 2005 15:33:57 -0000 1.106
+++ src/kernel/linux-2.6/file.c 23 Dec 2005 22:22:33 -0000
@@ -2197,9 +2197,14 @@ static ssize_t pvfs2_sendfile(struct fil
{
int error;
read_descriptor_t desc;
+
desc.written = 0;
desc.count = count;
+#ifdef HAVE_ARG_IN_READ_DESCRIPTOR_T
desc.arg.data = target;
+#else
+ desc.buf = target;
+#endif
desc.error = 0;
/*
Index: configure.in
===================================================================
RCS file: /projects/cvsroot/pvfs2/configure.in,v
retrieving revision 1.270
diff -u -p -r1.270 configure.in
--- configure.in 20 Dec 2005 16:15:42 -0000 1.270
+++ configure.in 23 Dec 2005 22:22:33 -0000
@@ -718,6 +718,21 @@ AC_TRY_COMPILE([
AC_DEFINE(HAVE_GENERIC_GETXATTR, 1, Define if kernel has
generic_getxattr),
)
+AC_MSG_CHECKING(for arg member in read_descriptor_t in kernel)
+dnl if this test passes, the kernel does not have it
+dnl if this test fails, the kernel has it defined
+AC_TRY_COMPILE([
+ #define __KERNEL__
+ #include <linux/fs.h>
+ ], [
+ read_descriptor_t x;
+ x.arg.data = NULL;
+ ],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ARG_IN_READ_DESCRIPTOR_T, 1, Define if read_descriptor_t
has an arg member),
+ AC_MSG_RESULT(no)
+ )
+
dnl end of kernel feature tests
CFLAGS=$oldcflags
tarball.tgz
Description: application/tar-gz
piv060.log.gz
Description: application/gunzip
piv061.log.gz
Description: application/gunzip
_______________________________________________ PVFS2-developers mailing list [email protected] http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
