Re: NFS write OOPS with 2.6.29.2

From: Holger Kiehl
Date: Mon May 11 2009 - 08:45:48 EST


On Mon, 11 May 2009, Trond Myklebust wrote:

On Mon, 2009-05-11 at 09:24 +0000, Holger Kiehl wrote:
On Sun, 10 May 2009, Trond Myklebust wrote:

On Sat, 2009-05-09 at 19:16 +0000, Holger Kiehl wrote:
On Mon, 4 May 2009, Andrew Morton wrote:


(cc linux-nfs)

On Sun, 3 May 2009 16:03:38 +0000 (GMT) Holger Kiehl <Holger.Kiehl@xxxxxx> wrote:

Hello

With plain kernel 2.6.29.2 I get the following OOPS (several of them) when
writing lots of small files on the client system:

May 3 18:48:34 obelix kernel: ------------[ cut here ]------------
May 3 18:48:34 obelix kernel: kernel BUG at fs/nfs/write.c:252!

I think this is a well-know bug, and fixes should be available in 2.6.29.3?

Thanks for this information. I just tried 2.6.29.3 and it still oopses.
Are there any patches I can try?

The attached backports against 2.6.29 are untested, but they are known
to compile at least. Could you give them a try?

Thanks. They do compile but when there is a mmap on the NFS drive the
program gets a SIGBUS:

unlink("/home/afdbench/afd2/fifodir/AFD_ACTIVE") = 0
close(3) = 0
open("/home/afdbench/afd2/fifodir/AFD_ACTIVE", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0600) = 3
lseek(3, 78, SEEK_SET) = 78
write(3, "\377"..., 1) = 1
mmap(NULL, 78, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0x7f8045cdb000
--- SIGBUS (Bus error) @ 0 (0) ---

This was with 2.6.29.3 plus the patches you send me.

Holger

Oh, duh... You need this little patchlet too.

Thanks! Now it works. One more problem I have is with splice(). My
application reports the following error:

splice() error : Invalid argument

When it is called as follows:

if ((bytes_written = splice(fd_pipe[0], NULL, to_fd,
NULL, bytes_read,
SPLICE_F_MOVE | SPLICE_F_MORE)) == -1)

Or may I not use splice() over NFS?

Thanks,
Holger
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/