public inbox for linux-ext4@vger.kernel.org
 help / color / mirror / Atom feed
From: "Frédéric Bohé" <frederic.bohe@bull.net>
To: Theodore Tso <tytso@mit.edu>
Cc: Mingming Cao <cmm@us.ibm.com>,
	Shehjar Tikoo <shehjart@cse.unsw.edu.au>,
	linux-ext4@vger.kernel.org,
	"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
	Andreas Dilger <adilger@sun.com>
Subject: Re: [PATCH v3]Ext4: journal credits reservation fixes for DIO, fallocate and delalloc writepages
Date: Fri, 01 Aug 2008 12:51:42 +0200	[thread overview]
Message-ID: <1217587902.3280.10.camel@localhost> (raw)
In-Reply-To: <20080801054932.GF8736@mit.edu>

Le vendredi 01 août 2008 à 01:49 -0400, Theodore Tso a écrit :
> On Thu, Jul 31, 2008 at 11:07:11AM -0700, Mingming Cao wrote:
> > 
> > Looks like a 1k blocksize ext4, I have tested 1k briefly it seems okay
> > for single test. I will try bonnie myself. The stack shows there isn't
> > enought credit to delete an file.  But the journal credit fix mostly fix
> > the code path on writepages(), so it should not affact the unlink case.
> 
> Yep, different bug.  I think this patch should fix things.
> 
> There's a larger question here which is should the extents code really
> be requesting only a tiny amount of transaction credits at a time; the
> advantage is that by doing so, it reduces the chance of provoking a
> transaction commit before its time.  On the other hand, for a very
> fragmented file with lots of extents, this will cause lots of extra
> calls jbd2_journal_extend(), which does end up taking a bit more cpu
> time as well as grabbing both the journal and the transaction spin
> locks.
> 
> The original non-extents truncate code massively overestimates the
> number of credits needed to complete the truncate (to the point where
> it is probably needlessly causing transactions to close early) but it
> means many fewer calls to jbd2_journal_extend().
> 
>      	       	       	     	  	       - Ted
> 
> commit 0e71ff5fc4cf98c44014a1d3c8ccffed846e7ee1
> Author: Theodore Ts'o <tytso@mit.edu>
> Date:   Fri Aug 1 01:40:08 2008 -0400
> 
>     ext4: Fix lack of credits BUG() when deleting a badly fragmented inode
>     
>     The extents codepath for ext4_truncate() requests journal transaction
>     credits in very small chunks, requesting only what is needed.  This
>     means there may not be enough credits left on the transaction handle
>     after ext4_truncate() returns and then when ext4_delete_inode() tries
>     finish up its work, it may not have enough transaction credits,
>     causing a BUG() oops in the jbd2 core.
>     
>     Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
> 
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index c7fb647..6d27e78 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -215,6 +215,18 @@ void ext4_delete_inode (struct inode * inode)
>  	inode->i_size = 0;
>  	if (inode->i_blocks)
>  		ext4_truncate(inode);
> +
> +	/*
> +	 * ext4_ext_truncate() doesn't reserve any slop when it
> +	 * restarts journal transactions; therefore there may not be
> +	 * enough credits left in the handle to remove the inode from
> +	 * the orphan list and set the dtime field.
> +	 */
> +	if (ext4_ext_journal_restart(handle, 3)) {
> +		ext4_journal_stop(handle);
> +		goto no_delete;
> +	}
> +
>  	/*
>  	 * Kill off the orphan record which ext4_truncate created.
>  	 * AKPM: I think this can be inside the above `if'.
> 

Thanks Ted. With this patch, I don't have a crash anymore, but I have
some messages :

EXT4 Inode eedb4228: orphan list check failed!
eedb4228: 0001f30a 00010004 00000000 00000000  ................
eedb4238: 0002b001 00010000 00001800 00008000  ................
eedb4248: 00012801 00009800 00008000 0001a801  .(..............
eedb4258: 00011800 00008000 00022801 00080000  .........(......
eedb4268: 00000000 00000000 00000000 00000000  ................
eedb4278: 00000000 00000000 00000000 f7d62134  ............4!..
eedb4288: f7d62134 00000000 00000000 0000001c  4!..............
eedb4298: 00000000 00004747 eedb42a0 eedb42a0  ....GG...B...B..
eedb42a8: 00000000 00000000 eedb42b0 eedb42b0  .........B...B..
eedb42b8: eedb42b8 eedb42b8 eedb42c0 eedb42c0  .B...B...B...B..
eedb42c8: 0000000c 00000000 00000000 00000000  ................
eedb42d8: 00000000 00000000 00000001 00000000  ................
eedb42e8: 00000000 00000000 00200000 4892c5f9  .......... ....H
eedb42f8: 35f4b4f0 4892c63c 03562cad 4892c63c  ...5<..H.,V.<..H
eedb4308: 03562cad 0000000a 0009f002 00000000  .,V.............
eedb4318: 81a40000 00000202 00000001 00000000  ................
eedb4328: eedb4328 eedb4328 00000000 00000000  (C..(C..........
eedb4338: eedb4338 eedb4338 f8b85fe0 f8b85f60  8C..8C..._..`_..
eedb4348: f70b6a00 00000000 eedb4354 eedb42a8  .j......TC...B..
eedb4358: 00000000 00000020 00000000 00001616  .... ...........
eedb4368: 00000000 00000000 00010001 eedb4374  ............tC..
eedb4378: eedb4374 00000000 00000000 00000000  tC..............
eedb4388: 00040000 f8b861a0 001200d2 f55108ec  .....a........Q.
eedb4398: 00000000 eedb439c eedb439c 00000000  .....C...C......
eedb43a8: eedb43a8 eedb43a8 00000000 00000000  .C...C..........
eedb43b8: aa93f4c8 00000000 00000000 eedb43c4  .............C..
eedb43c8: eedb43c4 00000001 00000000 eedb43d4  .C...........C..
eedb43d8: eedb43d4 00000040 00001050 00000000  .C..@...P.......
eedb43e8: 00000000 00000000 00000000 00000000  ................
eedb43f8: 00100100 00200200 eedb42a8 00000000  ...... ..B......
eedb4408: c15c754b 00000000 00000000 000fffff  Ku\.............
eedb4418: fff00000 00000000 4892c5f9 35f4b4f0  ...........H...5
eedb4428: eedb4428 eedb4428 00000202 00000000  (D..(D..........
eedb4438: 00000000 00000000 00000000 0000ecec  ................
Pid: 7092, comm: bonnie++ Not tainted 2.6.27-rc1 #6
 [<f8b719ee>] ext4_destroy_inode+0x5e/0x70 [ext4dev]
 [<c018f820>] destroy_inode+0x20/0x40
 [<c018f4a4>] iput+0x44/0x50
 [<c0186271>] do_unlinkat+0xd1/0x150
 [<c017cdd6>] vfs_write+0x106/0x140
 [<c02aa7b0>] tty_write+0x0/0x1e0
 [<c017d2d1>] sys_write+0x41/0x70
 [<c0102fc9>] sysenter_do_call+0x12/0x25
 =======================
EXT4 Inode eed70228: orphan list check failed!
eed70228: 0001f30a 00010004 00000000 00000000  ................
eed70238: 00012112 00010000 00000094 00000002  .!..............
eed70248: 00012295 00000098 00000003 00012299  ."..........."..
eed70258: 0000009c 00000002 0001229d 00080000  ........."......
eed70268: 00000000 00000000 0000000c 00000000  ................
eed70278: 00000000 00000000 00000000 eedb4284  .............B..
eed70288: f7d62134 00000000 00000000 0000001c  4!..............
eed70298: 00000000 00000707 eed702a0 eed702a0  ................
eed702a8: 00000000 00000000 eed702b0 eed702b0  ................
eed702b8: eed702b8 eed702b8 eed702c0 eed702c0  ................
eed702c8: 0000000d 00000000 00000000 00000000  ................
eed702d8: 00000000 00000000 00000001 00000000  ................
eed702e8: 00000000 00000000 00200000 4892c5f9  .......... ....H
eed702f8: 35f4b4f0 4892c63f 0a441733 4892c63f  ...5?..H3.D.?..H
eed70308: 0a441733 0000000a 000752f0 00000000  3.D......R......
eed70318: 81a40000 0000a2a2 00000001 00000000  ................
eed70328: eed70328 eed70328 00000000 00000000  (...(...........
eed70338: eed70338 eed70338 f8b85fe0 f8b85f60  8...8...._..`_..
eed70348: f70b6a00 00000000 eed70354 eed702a8  .j......T.......
eed70358: 00000000 00000020 00000000 00006464  .... .......dd..
eed70368: 00000000 00000000 00010001 eed70374  ............t...
eed70378: eed70374 00000000 00000000 00000000  t...............
eed70388: 0003cea2 f8b861a0 001200d2 f55108ec  .....a........Q.
eed70398: 00000000 eed7039c eed7039c 00000000  ................
eed703a8: eed703a8 eed703a8 00000000 00000000  ................
eed703b8: aa93f4c9 00000000 00000000 eed703c4  ................
eed703c8: eed703c4 00000001 00000000 eed703d4  ................
eed703d8: eed703d4 00000040 fffff1db 00000000  ....@...........
eed703e8: 00000000 00000000 00000000 00000000  ................
eed703f8: 00100100 00200200 eed702a8 00000000  ...... .........
eed70408: c15c51c1 002101a9 00000000 000f39a8  .Q\...!......9..
eed70418: 000000e0 00000000 4892c5f9 35f4b4f0  ...........H...5
eed70428: eed70428 eed70428 0000d3d3 00000000  (...(...........
eed70438: 00000000 00000000 00000000 00003e3e  ............>>..
Pid: 7092, comm: bonnie++ Not tainted 2.6.27-rc1 #6
 [<f8b719ee>] ext4_destroy_inode+0x5e/0x70 [ext4dev]
 [<c018f820>] destroy_inode+0x20/0x40
 [<c018f4a4>] iput+0x44/0x50
 [<c0186271>] do_unlinkat+0xd1/0x150
 [<c017ab4c>] do_sys_open+0xbc/0xe0
 [<c0102fc9>] sysenter_do_call+0x12/0x25
 =======================
EXT4 Inode eed70450: orphan list check failed!
eed70450: 0001f30a 00010004 00000000 00000000  ................
eed70460: 00083001 00060000 00008000 00008000  .0..............
eed70470: 0006a801 00010000 00008000 00072801  .............(..
eed70480: 00018000 00008000 0007a801 00080000  ................
eed70490: 00000000 00000000 0000000d 00000000  ................
eed704a0: 00000000 00000000 00000000 eed70284  ................
eed704b0: f7d62134 00000000 00000000 0000001c  4!..............
eed704c0: 00000000 0000d8d8 eed704c8 eed704c8  ................
eed704d0: 00000000 00000000 eed704d8 eed704d8  ................
eed704e0: eed704e0 eed704e0 eed704e8 eed704e8  ................
eed704f0: 0000000e 00000000 00000000 00000000  ................
eed70500: 00000000 00000000 00000001 00000000  ................
eed70510: 00000000 00000000 00800000 4892c6b8  ...............H
eed70520: 36d5deb5 4892c6b9 12b32098 4892c6b9  ...6...H. .....H
eed70530: 12b32098 0000000a 000ae002 00000000  . ..............
eed70540: 81800000 0000ffff 00000001 0000c6c6  ................
eed70550: eed70550 eed70550 00000000 00000000  P...P...........
eed70560: eed70560 eed70560 f8b85fe0 f8b85f60  `...`...._..`_..
eed70570: f70b6a00 00000000 eed7057c eed704d0  .j......|.......
eed70580: 00000000 00000020 00000000 00005353  .... .......SS..
eed70590: 00000000 00000000 00010001 eed7059c  ................
eed705a0: eed7059c 00000000 00000000 00000000  ................
eed705b0: 00040000 f8b861a0 001200d2 f55108ec  .....a........Q.
eed705c0: 00000000 eed705c4 eed705c4 00000000  ................
eed705d0: eed705d0 eed705d0 00000000 00000000  ................
eed705e0: aa93f4ca 00000000 00000000 eed705ec  ................
eed705f0: eed705ec 00000001 00000000 eed705fc  ................
eed70600: eed705fc 00000040 00008200 00000000  ....@...........
eed70610: 00000000 00000000 00000000 00000000  ................
eed70620: 00100100 00200200 eed704d0 00000000  ...... .........
eed70630: 000013d3 001a6f39 00000000 000fff38  ....9o......8...
eed70640: 000000c8 00000000 4892c63e 3120bd63  ........>..Hc. 1
eed70650: eed70650 eed70650 00000707 00000000  P...P...........
eed70660: 00000000 00000000 eed70000 00000606  ................
Pid: 7092, comm: bonnie++ Not tainted 2.6.27-rc1 #6
 [<f8b719ee>] ext4_destroy_inode+0x5e/0x70 [ext4dev]
 [<c018f820>] destroy_inode+0x20/0x40
 [<c018f4a4>] iput+0x44/0x50
 [<c0186271>] do_unlinkat+0xd1/0x150
 [<c017cdd6>] vfs_write+0x106/0x140
 [<c017d2d1>] sys_write+0x41/0x70
 [<c0102fc9>] sysenter_do_call+0x12/0x25
 =======================
EXT4 Inode eb1f4000: orphan list check failed!
eb1f4000: 0001f30a 00010004 00000000 00000000  ................
eb1f4010: 00012113 00010000 00000058 00000028  .!......X...(...
eb1f4020: 000121d9 00000080 000001cd 00012301  .!...........#..
eb1f4030: 00000250 000000f1 000124d1 00080000  P........$......
eb1f4040: 00000000 00000000 0000000e 00000000  ................
eb1f4050: 00000000 00000000 00000000 eed704ac  ................
eb1f4060: f7d62134 00000000 00000000 eb1f001c  4!..............
eb1f4070: 00000000 00003c3c eb1f4078 eb1f4078  ....<<..x@..x@..
eb1f4080: 00000000 00000000 eb1f4088 eb1f4088  .........@...@..
eb1f4090: eb1f4090 eb1f4090 eb1f4098 eb1f4098  .@...@...@...@..
eb1f40a0: 0000000f 00000000 00000000 00000000  ................
eb1f40b0: 00000000 00000000 00000001 00000000  ................
eb1f40c0: 00000000 00000000 00800000 4892c6b8  ...............H
eb1f40d0: 36d5deb5 4892c6bc 15cc967e 4892c6bc  ...6...H~......H
eb1f40e0: 15cc967e 0000000a 000a0002 00000000  ~...............
eb1f40f0: 81800000 00007070 00000001 0000aeae  ....pp..........
eb1f4100: eb1f4100 eb1f4100 00000000 00000000  .A...A..........
eb1f4110: eb1f4110 eb1f4110 f8b85fe0 f8b85f60  .A...A..._..`_..
eb1f4120: f70b6a00 00000000 eb1f412c eb1f4080  .j......,A...@..
eb1f4130: 00000000 00000020 00000000 00001414  .... ...........
eb1f4140: 00000000 00000000 00010001 eb1f414c  ............LA..
eb1f4150: eb1f414c 00000000 00000000 00000000  LA..............
eb1f4160: 0003dc9f f8b861a0 001200d2 f55108ec  .....a........Q.
eb1f4170: 0000ecec eb1f4174 eb1f4174 00000000  ....tA..tA......
eb1f4180: eb1f4180 eb1f4180 00000000 00000000  .A...A..........
eb1f4190: aa93f4cb 00000000 00000000 eb1f419c  .............A..
eb1f41a0: eb1f419c 00000001 00000000 eb1f41ac  .A...........A..
eb1f41b0: eb1f41ac 00000040 00006f91 00000000  .A..@....o......
eb1f41c0: 00000000 00000000 00000000 00000000  ................
eb1f41d0: 00100100 00200200 eb1f4080 00000000  ...... ..@......
eb1f41e0: 00001450 00238801 00000000 00091800  P.....#.........
eb1f41f0: 00008000 00000000 4892c641 33832bba  ........A..H.+.3
eb1f4200: eb1f4200 eb1f4200 00000c0c 00000000  .B...B..........
eb1f4210: 00000000 00000000 00000000 00004747  ............GG..
Pid: 7092, comm: bonnie++ Not tainted 2.6.27-rc1 #6
 [<f8b719ee>] ext4_destroy_inode+0x5e/0x70 [ext4dev]
 [<c018f820>] destroy_inode+0x20/0x40
 [<c018f4a4>] iput+0x44/0x50
 [<c0186271>] do_unlinkat+0xd1/0x150
 [<c017d2d1>] sys_write+0x41/0x70
 [<c0102fc9>] sysenter_do_call+0x12/0x25
 =======================


Fred

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2008-08-01  8:50 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-21  4:28 Crash and stack trace for jbd2 under ext4 Shehjar Tikoo
2008-07-21  8:20 ` Aneesh Kumar K.V
2008-07-23  0:49   ` Mingming Cao
2008-07-23  0:51   ` [RFC]Ext4: journal credits reservation fixes for DIO, fallocate and delalloc writepages Mingming Cao
2008-07-23  1:18     ` Andreas Dilger
2008-07-23 18:19       ` Theodore Tso
2008-07-25 19:38       ` Mingming Cao
2008-07-23  7:42     ` Aneesh Kumar K.V
2008-07-24  2:07       ` Andreas Dilger
2008-07-25 19:26       ` Mingming Cao
2008-07-28 16:11         ` Aneesh Kumar K.V
2008-07-28 19:07           ` Mingming Cao
2008-07-29  6:24             ` Aneesh Kumar K.V
2008-07-26  0:42       ` [PATCH v2]Ext4: " Mingming Cao
2008-07-30  1:58         ` [PATCH v3]Ext4: " Mingming Cao
2008-07-30 11:29           ` Frédéric Bohé
2008-07-31 18:07             ` Mingming Cao
2008-08-01  5:49               ` Theodore Tso
2008-08-01 10:51                 ` Frédéric Bohé [this message]
2008-08-01 18:08                   ` Mingming Cao
2008-08-01 18:03                 ` Mingming Cao
2008-08-01 19:10                   ` Theodore Tso
2008-08-02  0:03                     ` Theodore Tso
2008-08-04 11:23                       ` Frédéric Bohé
2008-08-04 13:20                         ` Theodore Tso
2008-07-30 11:36           ` Andreas Dilger
2008-07-30 12:16           ` Aneesh Kumar K.V
2008-08-01 19:29           ` Theodore Tso
2008-08-02  0:22             ` Theodore Tso
2008-08-12 16:23         ` [PATCH 0/6 ]Ext4 journal credits reservation fixes Mingming Cao
2008-08-12 16:25           ` [PATCH 1/6 ]Ext4 credits caclulation cleanup and fix that for nonextent writepage Mingming Cao
2008-08-13  8:31             ` Aneesh Kumar K.V
2008-08-14  0:30               ` Mingming Cao
2008-08-13 10:19             ` Aneesh Kumar K.V
2008-08-14  1:02               ` Mingming Cao
2008-08-16  0:37             ` [PATCH 1/6 V2 " Mingming Cao
2008-08-12 16:27           ` [PATCH 2/6 ]Ext4: journal credits reservation fixes for extent file writepage Mingming Cao
2008-08-13  8:37             ` Aneesh Kumar K.V
2008-08-14  0:26               ` Mingming Cao
2008-08-14  8:28                 ` Aneesh Kumar K.V
2008-08-16  0:38             ` [PATCH 2/6 V2]Ext4: " Mingming Cao
2008-08-16  4:25               ` Aneesh Kumar K.V
2008-08-12 16:29           ` [PATCH 3/6 ]Ext4: journal credits reservation fixes for DIO, fallocate Mingming Cao
2008-08-13  8:53             ` Aneesh Kumar K.V
2008-08-13 10:14               ` Aneesh Kumar K.V
2008-08-14  0:50               ` Mingming Cao
2008-08-16  0:39             ` [PATCH 3/6 V2 " Mingming Cao
2008-08-12 16:32           ` [PATCH 4/6 ]ext4: Rework the ext4_da_writepages Mingming Cao
2008-08-16  0:43             ` [PATCH 4/6 V2]ext4: " Mingming Cao
2008-08-12 16:35           ` [PATCH 5/6 ]Ext4 journal credits reservation fixes Mingming Cao
2008-08-13  9:46             ` Aneesh Kumar K.V
2008-08-14  1:01               ` Mingming Cao
2008-08-14  8:40                 ` Aneesh Kumar K.V
2008-08-16  0:40             ` [PATCH 5/6 V2]Ext4 journal credits fixes for delalloc writepages Mingming Cao
2008-08-16  4:23               ` Aneesh Kumar K.V
2008-08-12 16:37           ` [PATCH 6/6 ]Ext4 journal credits reservation fixes for defrag Mingming Cao
2008-08-16  0:45             ` [PATCH 6/6 V2]Ext4 " Mingming Cao
2008-08-16 15:55               ` Theodore Tso
2008-08-15 17:33           ` [PATCH 0/6 ]Ext4 journal credits reservation fixes Aneesh Kumar K.V
2008-08-15 19:02             ` Mingming Cao
2008-08-16  0:34               ` Mingming Cao

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=1217587902.3280.10.camel@localhost \
    --to=frederic.bohe@bull.net \
    --cc=adilger@sun.com \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=cmm@us.ibm.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=shehjart@cse.unsw.edu.au \
    --cc=tytso@mit.edu \
    /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