On Wednesday 13 August 2008, you wrote: > On Wed, Aug 13, 2008 at 08:28:18PM +0200, eworm@xxxxxxxx wrote: > > After mounting the partitions and logging in it took half a minute to > > hang the system (or at least freeze all applications that access the fs). > > The log contains the following: > > > > kernel BUG at fs/ext4/mballoc.c:3963! > > This means that we tried to truncate/delete a file while there were > still blocks on i_prealloc_list. I think I see the problem. And the > reason why we haven't noticed it is that it only shows up if you have > an indirect block-based file, and you truncate it when you have > previously been writing to it (so i_prealloc_list is not empty). > > The problem is that we call ext4_discard_reservation() too late, after > we've started calling ext4_free_branches(), which calls > ext4_free_blocks(), which ultimately calls > ext4_mb_return_to_preallocation(), which is what is BUG-checking. > > Can you reproduce the bug? I can. ;) > Things are a little busy on my end, so I > don't have time to try to create a reproducer and test the patch, at > least not for a day or so. The following patch passes the "It Builds, > Ship It!" test, but not much else. :-) > > If you could report (a) whether or not you can reproduce the failure, > and (b) whether this patch fixes things, I would be most grateful. This time I got the following: kernel BUG at fs/ext4/inode.c:1568! invalid opcode: 0000 [#1] SMP Modules linked in: snd_hda_intel vboxdrv iwl3945 Pid: 4049, comm: kontact Not tainted (2.6.27-rc3 #1) EIP: 0060:[<c021aac5>] EFLAGS: 00010202 CPU: 0 EIP is at ext4_da_invalidatepage+0xa5/0x120 EAX: 00000000 EBX: 00000001 ECX: 00000000 EDX: 000003ff ESI: eeb900b8 EDI: eeb90138 EBP: ef165d94 ESP: ef165d70 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 Process kontact (pid: 4049, ti=ef164000 task=ef16c430 task.ti=ef164000) Stack: 00000000 eeb902d8 00000000 c1d7f600 f7314000 00000000 c021aa20 00000001 c1d7f600 ef165da0 c0167799 c1d7f600 ef165dac c0167ca9 00000000 ef165e2c c0167dd1 0000000e eeb6e2a8 00000001 00000003 f7380078 00000000 00000000 Call Trace: [<c021aa20>] ? ext4_da_invalidatepage+0x0/0x120 [<c0167799>] ? do_invalidatepage+0x19/0x20 [<c0167ca9>] ? truncate_complete_page+0x49/0x60 [<c0167dd1>] ? truncate_inode_pages_range+0x111/0x350 [<c023d7ec>] ? jbd2_journal_stop+0x14c/0x1d0 [<c016802a>] ? truncate_inode_pages+0x1a/0x20 [<c021db6e>] ? ext4_delete_inode+0x2e/0x290 [<c021db40>] ? ext4_delete_inode+0x0/0x290 [<c01964ac>] ? generic_delete_inode+0x7c/0x120 [<c0196685>] ? generic_drop_inode+0x135/0x160 [<c0195547>] ? iput+0x47/0x50 [<c0192cd7>] ? dentry_iput+0x67/0xb0 [<c0192da5>] ? d_kill+0x35/0x60 [<c0193496>] ? dput+0x76/0x120 [<c018b9bb>] ? sys_renameat+0x1cb/0x200 [<c01768dc>] ? free_pages_and_swap_cache+0x7c/0xa0 [<c0171156>] ? remove_vma+0x46/0x60 [<c01720eb>] ? do_munmap+0x1db/0x230 [<c018ba19>] ? sys_rename+0x29/0x30 [<c01032b1>] ? sysenter_do_call+0x12/0x25 ======================= Code: 87 a0 01 00 00 89 45 e0 e8 09 33 32 00 8b 5d f0 89 f8 8b 96 10 02 00 00 29 da e8 17 ff ff ff 89 c3 8b 86 14 02 00 00 39 c3 76 2a <0f> 0b eb fe 89 9e 14 02 00 00 8b 55 e0 fe 87 a0 01 00 00 8b 55 EIP: [<c021aac5>] ext4_da_invalidatepage+0xa5/0x120 SS:ESP 0068:ef165d70 -- Regards, Chris -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html