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
 

Attachment: tarball.tgz
Description: application/tar-gz

Attachment: piv060.log.gz
Description: application/gunzip

Attachment: piv061.log.gz
Description: application/gunzip

_______________________________________________
PVFS2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to