public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Eric Sesterhenn / Snakebyte <snakebyte@gmx.de>,
	linux-kernel@vger.kernel.org, linux-ext4@vger.kernel.org
Subject: Re: [BUG] fs/buffer.c:1821 in 2.6.22-rc4-mm2
Date: Tue, 12 Jun 2007 11:54:42 +1000	[thread overview]
Message-ID: <466DFCE2.8070504@yahoo.com.au> (raw)
In-Reply-To: <20070611005529.422d1678.akpm@linux-foundation.org>

[-- Attachment #1: Type: text/plain, Size: 2637 bytes --]

Andrew Morton wrote:
> On Sun, 10 Jun 2007 17:57:14 +0200 Eric Sesterhenn / Snakebyte <snakebyte@gmx.de> wrote:
> 
> 
>>hi,
>>
>>i got the following BUG while running the syscalls.sh
>>from ltp-full-20070531 on an ext3 partition, it is easily reproducible
>>for me
>>
>>[  476.338068] ------------[ cut here ]------------
>>[  476.338223] kernel BUG at fs/buffer.c:1821!
>>[  476.338324] invalid opcode: 0000 [#1]
>>[  476.338423] PREEMPT 
>>[  476.338665] Modules linked in:
>>[  476.338833] CPU:    0
>>[  476.338836] EIP:    0060:[<c01a1914>]    Not tainted VLI
>>[  476.338840] EFLAGS: 00010202   (2.6.22-rc4-mm2 #1)
>>[  476.339206] EIP is at __block_prepare_write+0x64/0x410
>>[  476.339311] eax: 00000001   ebx: c136fbb8   ecx: c07faf28   edx:
>>00000001
>>[  476.339417] esi: c1dc9040   edi: c32d2dfc   ebp: c3733db8   esp:
>>c3733d50
>>[  476.339584] ds: 007b   es: 007b   fs: 0000  gs: 0033  ss: 0068
>>[  476.339690] Process vmsplice01 (pid: 7680, ti=c3733000 task=c351ed60
>>task.ti=c3733000)
>>[  476.339796] Stack: c3733d70 c0143e76 c1a0eab0 00000046 00000000
>>c2509d64 00000cd8 c136fbb8 
>>[  476.340675]        c32d2dfc 00000296 c02313b6 c1086088 00000050
>>c02313b6 c1dc9040 c2509d50 
>>[  476.341491]        c1dc9054 c3733dc4 c02313e9 c3733dbc c015728d
>>c32d2f0c 00000000 c136fbb8 
>>[  476.342371] Call Trace:
>>[  476.342565]  [<c01a1d83>] block_write_begin+0x83/0xf0
>>[  476.342804]  [<c0207778>] ext3_write_begin+0xc8/0x1c0
>>[  476.342987]  [<c01595bf>] pagecache_write_begin+0x4f/0x150
>>[  476.343243]  [<c019db3b>] pipe_to_file+0x9b/0x170
>>[  476.343418]  [<c019d4b0>] __splice_from_pipe+0x70/0x260
>>[  476.343654]  [<c019d6e8>] splice_from_pipe+0x48/0x70
>>[  476.343828]  [<c019d9f8>] generic_file_splice_write+0x88/0x130
>>[  476.344066]  [<c019d267>] do_splice_from+0xb7/0xc0
>>[  476.344240]  [<c019ea51>] sys_splice+0x1a1/0x230
>>[  476.344474]  [<c01043be>] sysenter_past_esp+0x5f/0x99
>>[  476.344656]  [<ffffe410>] 0xffffe410
>>[  476.344882]  =======================
>>[  476.344984] INFO: lockdep is turned off.
>>[  476.345084] Code: 00 0f 97 c2 e8 ee 2f 22 00 85 c0 74 04 0f 0b eb fe
>>31 d2 b8 28 af 7f c0 81 7d 08 00 10 00 00 0f 97 c2 e8 d0 2f 22 00 85 c0
>>74 04 <0f> 0b eb fe 8b 55 08 39 55 b0 0f 97 c0 0f b6 d0 b8 0c af 7f c0 
>>[  476.350365] EIP: [<c01a1914>] __block_prepare_write+0x64/0x410 SS:ESP
>>0068:c3733d50
> 
> 
> Yep, vmsplice01 is not supported on -mm kernels ;)
> 
> Nick has a protofix but I don't think it's been tested yet.

Yeah, sorry I didn't catch that after you merged :P
This should be the correct bugfix attached -- it is just a typo.

-- 
SUSE Labs, Novell Inc.

[-- Attachment #2: fs-new-write-aops-fix.patch --]
[-- Type: text/plain, Size: 957 bytes --]

Index: linux-2.6/fs/splice.c
===================================================================
--- linux-2.6.orig/fs/splice.c
+++ linux-2.6/fs/splice.c
@@ -570,7 +570,7 @@ static int pipe_to_file(struct pipe_inod
 	if (this_len + offset > PAGE_CACHE_SIZE)
 		this_len = PAGE_CACHE_SIZE - offset;
 
-	ret = pagecache_write_begin(file, mapping, sd->pos, sd->len,
+	ret = pagecache_write_begin(file, mapping, sd->pos, this_len,
 				AOP_FLAG_UNINTERRUPTIBLE, &page, &fsdata);
 	if (unlikely(ret))
 		goto out;
@@ -583,11 +583,12 @@ static int pipe_to_file(struct pipe_inod
 		char *dst = kmap_atomic(page, KM_USER1);
 
 		memcpy(dst + offset, src + buf->offset, this_len);
+		flush_dcache_page(page);
 		kunmap_atomic(dst, KM_USER1);
 		buf->ops->unmap(pipe, buf, src);
 	}
 
-	ret = pagecache_write_end(file, mapping, sd->pos, sd->len, sd->len, page, fsdata);
+	ret = pagecache_write_end(file, mapping, sd->pos, this_len, this_len, page, fsdata);
 
 out:
 

      reply	other threads:[~2007-06-12  1:55 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-10 15:57 [BUG] fs/buffer.c:1821 in 2.6.22-rc4-mm2 Eric Sesterhenn / Snakebyte
2007-06-11  7:55 ` Andrew Morton
2007-06-12  1:54   ` Nick Piggin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=466DFCE2.8070504@yahoo.com.au \
    --to=nickpiggin@yahoo.com.au \
    --cc=akpm@linux-foundation.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=snakebyte@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox