2007-09-13 00:30:40

by Mingming Cao

[permalink] [raw]
Subject: ext4 patch queue updated(2.6.23-rc5)

Rebased the patches to 2.6.23-rc5, I reordered the series file to move
cleanups/fixes to the beginning of the series file. Added a patch to
cleanup slab useage in jbd/jbd2, and fixed some checkpatch.pl warnings.
Added large block patch and Jose's FLEX_BG patch.

Changes since 2.6.23-rc4

# cleanups:
+jbd_slab_cleanup.patch: removing slab from jbd/jbd2
+sparse-fix.patch: fixing sparse warning

ext4_uninit_blockgroup.patch: updated

# Added Large blocksize(up to 64k) support

+ext234_enlarge_blocksize.patch
+ext2_rec_len_overflow_with_64kblk_fix.patch
+ext3_rec_len_overflow_with_64kblk_fix.patch
+ext4_rec_len_overflow_with_64kblk_fix.patch
+JBD-blocks-reservation-fix-for-large-blk.patch

# generic-find-next-le-bit support for mballoc on big endian arch
#updated mballoc patch
+generic-find-next-le-bit
mballoc-core.patch

# Added FLEX_BG kernel patch
+flex_bg_kernel.patch


Mingming


2007-09-13 14:58:17

by Valerie Clement

[permalink] [raw]
Subject: Re: ext4 patch queue updated(2.6.23-rc5)

Mingming Cao wrote:
> Rebased the patches to 2.6.23-rc5, I reordered the series file to move
> cleanups/fixes to the beginning of the series file. Added a patch to
> cleanup slab useage in jbd/jbd2, and fixed some checkpatch.pl warnings.
> Added large block patch and Jose's FLEX_BG patch.

With those new patches, I've got a segmentation fault when unmounting
the ext4 filesystem:

------------[ cut here ]------------
kernel BUG at /home/src/linux-2.6.23-rc5/mm/slab.c:592!
invalid opcode: 0000 [1] SMP
CPU 3
Modules linked in: qla2xxx
Pid: 4163, comm: umount Not tainted 2.6.23-rc5 #1
RIP: 0010:[<ffffffff80276fe8>] [<ffffffff80276fe8>] kfree+0x5f/0x1a0
RSP: 0018:ffff810022143d88 EFLAGS: 00010046
RAX: 0000000000000000 RBX: ffff81002889e154 RCX: 000000000000003f
RDX: ffff81007ec4f290 RSI: ffffffff80245947 RDI: 000000000002889e
RBP: ffff81002889e000 R08: 0000000000000001 R09: ffff81007c556400
R10: ffff810022143d48 R11: ffffffff802fd50d R12: ffff81007c556400
R13: ffff81002889e000 R14: 0000000000000286 R15: 0000000000513150
FS: 00002b2fc8bafe20(0000) GS:ffff81007e0b5d40(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 00000000005b2b50 CR3: 000000007621e000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process umount (pid: 4163, threadinfo ffff810022142000, task
ffff81007e0d8180)
Stack: ffff81007c556400 ffff81002889e024 ffff81002889e154 ffff81002889e000
ffff81007c556400 ffff81002889e024 00000000005130c0 ffffffff8031ac12
0000000000656473 ffff81007e0d8180 ffffffff80245a06 ffff810022143de0
Call Trace:
[<ffffffff8031ac12>] jbd2_journal_destroy+0x257/0x262
[<ffffffff80245a06>] autoremove_wake_function+0x0/0x2e
[<ffffffff802ac42c>] mb_cache_shrink+0x1e/0x95
[<ffffffff802fda67>] ext4_put_super+0x39/0x1d8
[<ffffffff8027cf07>] generic_shutdown_super+0x60/0xf1
[<ffffffff8027cfa5>] kill_block_super+0xd/0x1e
[<ffffffff8027d04d>] deactivate_super+0x47/0x5f
[<ffffffff8028f37f>] sys_umount+0x1f7/0x22a
[<ffffffff8027e3c9>] sys_newstat+0x19/0x31
[<ffffffff8020b3ae>] system_call+0x7e/0x83

Code: 0f 0b eb fe 65 8b 04 25 24 00 00 00 83 3d c1 9e 55 00 00 4c
RIP [<ffffffff80276fe8>] kfree+0x5f/0x1a0
RSP <ffff810022143d88>
WARNING: at /home/src/linux-2.6.23-rc5/kernel/exit.c:901 do_exit()

Call Trace:
[<ffffffff80236ff3>] do_exit+0x4f/0x7ac
[<ffffffff8020cb6d>] kernel_math_error+0x0/0x71
[<ffffffff8020cf94>] do_invalid_op+0x85/0x8f
[<ffffffff80276fe8>] kfree+0x5f/0x1a0
[<ffffffff80245947>] bit_waitqueue+0x1c/0x8c
[<ffffffff802459f5>] wake_up_bit+0x11/0x22
[<ffffffff80295178>] __writeback_single_inode+0x395/0x3a7
[<ffffffff805daa5d>] error_exit+0x0/0x84
[<ffffffff802fd50d>] ext4_destroy_inode+0x0/0x77
[<ffffffff80245947>] bit_waitqueue+0x1c/0x8c
[<ffffffff80276fe8>] kfree+0x5f/0x1a0
[<ffffffff80276fb7>] kfree+0x2e/0x1a0
[<ffffffff8031ac12>] jbd2_journal_destroy+0x257/0x262
[<ffffffff80245a06>] autoremove_wake_function+0x0/0x2e
[<ffffffff802ac42c>] mb_cache_shrink+0x1e/0x95
[<ffffffff802fda67>] ext4_put_super+0x39/0x1d8
[<ffffffff8027cf07>] generic_shutdown_super+0x60/0xf1
[<ffffffff8027cfa5>] kill_block_super+0xd/0x1e
[<ffffffff8027d04d>] deactivate_super+0x47/0x5f
[<ffffffff8028f37f>] sys_umount+0x1f7/0x22a
[<ffffffff8027e3c9>] sys_newstat+0x19/0x31
[<ffffffff8020b3ae>] system_call+0x7e/0x83


Replacing kfree(journal) by jbd2_free(journal, sizeof(*journal)) in
fs/jbd2/journal.c fixes the problem.

Who could check this?


Another thing: JBD-blocks-reservation-fix-for-large-blk.patch is in the
series file but not present in the ext4 patch queue.

Val?rie

2007-09-13 21:01:45

by Mingming Cao

[permalink] [raw]
Subject: Re: ext4 patch queue updated(2.6.23-rc5)

On Thu, 2007-09-13 at 16:58 +0200, Valerie Clement wrote:
> Mingming Cao wrote:
> > Rebased the patches to 2.6.23-rc5, I reordered the series file to move
> > cleanups/fixes to the beginning of the series file. Added a patch to
> > cleanup slab useage in jbd/jbd2, and fixed some checkpatch.pl warnings.
> > Added large block patch and Jose's FLEX_BG patch.
>
> With those new patches, I've got a segmentation fault when unmounting
> the ext4 filesystem:
>
Thanks for reporting this. Some structure is not allocated from slab
anymore but freed by kfree, so it complains. An updated patch to follow.

> ------------[ cut here ]------------
> kernel BUG at /home/src/linux-2.6.23-rc5/mm/slab.c:592!
> invalid opcode: 0000 [1] SMP
> CPU 3
> Modules linked in: qla2xxx
> Pid: 4163, comm: umount Not tainted 2.6.23-rc5 #1
> RIP: 0010:[<ffffffff80276fe8>] [<ffffffff80276fe8>] kfree+0x5f/0x1a0
> RSP: 0018:ffff810022143d88 EFLAGS: 00010046
> RAX: 0000000000000000 RBX: ffff81002889e154 RCX: 000000000000003f
> RDX: ffff81007ec4f290 RSI: ffffffff80245947 RDI: 000000000002889e
> RBP: ffff81002889e000 R08: 0000000000000001 R09: ffff81007c556400
> R10: ffff810022143d48 R11: ffffffff802fd50d R12: ffff81007c556400
> R13: ffff81002889e000 R14: 0000000000000286 R15: 0000000000513150
> FS: 00002b2fc8bafe20(0000) GS:ffff81007e0b5d40(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> CR2: 00000000005b2b50 CR3: 000000007621e000 CR4: 00000000000006e0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process umount (pid: 4163, threadinfo ffff810022142000, task
> ffff81007e0d8180)
> Stack: ffff81007c556400 ffff81002889e024 ffff81002889e154 ffff81002889e000
> ffff81007c556400 ffff81002889e024 00000000005130c0 ffffffff8031ac12
> 0000000000656473 ffff81007e0d8180 ffffffff80245a06 ffff810022143de0
> Call Trace:
> [<ffffffff8031ac12>] jbd2_journal_destroy+0x257/0x262
> [<ffffffff80245a06>] autoremove_wake_function+0x0/0x2e
> [<ffffffff802ac42c>] mb_cache_shrink+0x1e/0x95
> [<ffffffff802fda67>] ext4_put_super+0x39/0x1d8
> [<ffffffff8027cf07>] generic_shutdown_super+0x60/0xf1
> [<ffffffff8027cfa5>] kill_block_super+0xd/0x1e
> [<ffffffff8027d04d>] deactivate_super+0x47/0x5f
> [<ffffffff8028f37f>] sys_umount+0x1f7/0x22a
> [<ffffffff8027e3c9>] sys_newstat+0x19/0x31
> [<ffffffff8020b3ae>] system_call+0x7e/0x83
>
> Code: 0f 0b eb fe 65 8b 04 25 24 00 00 00 83 3d c1 9e 55 00 00 4c
> RIP [<ffffffff80276fe8>] kfree+0x5f/0x1a0
> RSP <ffff810022143d88>
> WARNING: at /home/src/linux-2.6.23-rc5/kernel/exit.c:901 do_exit()
>
> Call Trace:
> [<ffffffff80236ff3>] do_exit+0x4f/0x7ac
> [<ffffffff8020cb6d>] kernel_math_error+0x0/0x71
> [<ffffffff8020cf94>] do_invalid_op+0x85/0x8f
> [<ffffffff80276fe8>] kfree+0x5f/0x1a0
> [<ffffffff80245947>] bit_waitqueue+0x1c/0x8c
> [<ffffffff802459f5>] wake_up_bit+0x11/0x22
> [<ffffffff80295178>] __writeback_single_inode+0x395/0x3a7
> [<ffffffff805daa5d>] error_exit+0x0/0x84
> [<ffffffff802fd50d>] ext4_destroy_inode+0x0/0x77
> [<ffffffff80245947>] bit_waitqueue+0x1c/0x8c
> [<ffffffff80276fe8>] kfree+0x5f/0x1a0
> [<ffffffff80276fb7>] kfree+0x2e/0x1a0
> [<ffffffff8031ac12>] jbd2_journal_destroy+0x257/0x262
> [<ffffffff80245a06>] autoremove_wake_function+0x0/0x2e
> [<ffffffff802ac42c>] mb_cache_shrink+0x1e/0x95
> [<ffffffff802fda67>] ext4_put_super+0x39/0x1d8
> [<ffffffff8027cf07>] generic_shutdown_super+0x60/0xf1
> [<ffffffff8027cfa5>] kill_block_super+0xd/0x1e
> [<ffffffff8027d04d>] deactivate_super+0x47/0x5f
> [<ffffffff8028f37f>] sys_umount+0x1f7/0x22a
> [<ffffffff8027e3c9>] sys_newstat+0x19/0x31
> [<ffffffff8020b3ae>] system_call+0x7e/0x83
>
>
> Replacing kfree(journal) by jbd2_free(journal, sizeof(*journal)) in
> fs/jbd2/journal.c fixes the problem.
>
> Who could check this?
>
>
> Another thing: JBD-blocks-reservation-fix-for-large-blk.patch is in the
> series file but not present in the ext4 patch queue.
>

Thanks for catching this. will add it to rc6 version patch queue.
> Valérie

2007-09-14 19:03:45

by Mingming Cao

[permalink] [raw]
Subject: Ext4 patch queue updated(2.6.23-rc6)

Changes:

Rebase to 2.6.23-rc6
updated jbd_slab_cleanup.patch. (from Mingming)
updated commit messages to different patches in the patch-queue (from
Aneesh.)
Added JBD-blocks-reservation-fix-for-large-blk.patch (part of >4k block
support) (from Mingming)

http://repo.or.cz/w/ext4-patch-queue.git


Ted, could you please update the ext4 git tree with the patches before
the "unstable" mark, so we could get more air time in mm tree for
testing?

Thanks,
Mingming

current patch series

# Rebased the patches to 2.6.23-rc6
jbd_slab_cleanup.patch
sparse-fix.patch

# Add journal checksums
ext4-journal_chksum-2.6.20.patch
ext4-journal-chksum-review-fix.patch

# Add unused inode watermark and checksum to blockgroup descriptors
# Need e2fsprogs changes to mkfs to use this featur
ext4_uninit_blockgroup.patch

# Large blocksize support
#
ext234_enlarge_blocksize.patch
ext2_rec_len_overflow_with_64kblk_fix.patch
ext3_rec_len_overflow_with_64kblk_fix.patch
ext4_rec_len_overflow_with_64kblk_fix.patch
JBD-blocks-reservation-fix-for-large-blk.patch

####################################################
# patches still have outstanding comments from lkml
####################################################

# inode verion patch series
# inode versioning is needed for NFSv4
# Need to address overwrite case and performance concerns
# Need to repost to lkml for comments before submit
#
# vfs changes, 64 bit inode->i_version
64-bit-i_version.patch
# reserve hi 32 bit inode version on ext4 on-disk inode
i_version_hi.patch
# ext4 inode version read/store
ext4_i_version_hi_2.patch
# ext4 inode version update
i_version_update_ext4.patch

# Export jbd stats through procfs
# Shall this move to debugfs?
# Still need to address akpm's comments.
jbd-stats-through-procfs
jbd-stats-through-procfs_fix.patch

####################################################
#Unstable patches
####################################################
# New delayed allocation patch
delalloc-vfs.patch
delalloc-ext4.patch

ext-truncate-mutex.patch
ext3-4-migrate.patch
new-extent-function.patch
###################################################
#mballoc
###################################################
generic-find-next-le-bit
mballoc-core.patch

#########
#FLEX_BG
########
flex_bg_kernel.patch

2007-09-14 22:54:14

by Andreas Dilger

[permalink] [raw]
Subject: Re: Ext4 patch queue updated(2.6.23-rc6)

On Sep 14, 2007 12:03 -0700, Mingming Cao wrote:
> Ted, could you please update the ext4 git tree with the patches before
> the "unstable" mark, so we could get more air time in mm tree for
> testing?
>
> Thanks,
> Mingming
>
> current patch series
>
> # Rebased the patches to 2.6.23-rc6
> jbd_slab_cleanup.patch
> sparse-fix.patch
>
> # Add journal checksums
> ext4-journal_chksum-2.6.20.patch
> ext4-journal-chksum-review-fix.patch

Actually, the journal checksum patches should probably be moved into
the "unstable" part of the series, given the number of problems reported
on them (also in more heavy testing at CFS). These are also not in use
in production anywhere, unlike e.g. uninit_groups which have 6 months *
50 servers of testing or more.

> #########
> #FLEX_BG
> ########
> flex_bg_kernel.patch

This should probably go into the "stable" part of the patches - it
is a conceptually simple patch, and the sooner INCOMPAT_FLEX_BG gets
upstream the better.

Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.

2007-09-21 00:39:08

by Mingming Cao

[permalink] [raw]
Subject: Ext4 patch queue updated(2.6.23-rc6)

http://repo.or.cz/w/ext4-patch-queue.git

Changes since last time

Updated uninit block group patch
Updated mballoc core patch
Update jbd cleanup patch

Removed large block support patch (as the 64k blk size rec_len overflow
patch might be updated later)

reordered serise file

Appreciate any testing!!


Ted,Please review and pull them to your git tree. Thanks

series

# Rebased the patches to 2.6.23-rc6
#
# Note the next two are in mm tree
jbd_slab_cleanup.patch
jbd_GFP_NOFAIL_flag_cleanup.patch

#below are not in mm tree
sparse-fix.patch

# Add unused inode watermark and checksum to blockgroup descriptors
# Need e2fsprogs changes to mkfs to use this featur
ext4_uninit_blockgroup.patch

#FLEX_BG
flex_bg_kernel.patch
####################################################
# unstable patches still have outstanding comments from lkml
####################################################
# Add journal checksums
ext4-journal_chksum-2.6.20.patch
ext4-journal-chksum-review-fix.patch

# inode verion patch series
# inode versioning is needed for NFSv4
# Need to address overwrite case and performance concerns
# Need to repost to lkml for comments before submit
#
# vfs changes, 64 bit inode->i_version
64-bit-i_version.patch
# reserve hi 32 bit inode version on ext4 on-disk inode
i_version_hi.patch
# ext4 inode version read/store
ext4_i_version_hi_2.patch
# ext4 inode version update
i_version_update_ext4.patch

# Export jbd stats through procfs
# Shall this move to debugfs?
# Still need to address akpm's comments.
jbd-stats-through-procfs
jbd-stats-through-procfs_fix.patch

####################################################
#Unstable patches
####################################################
# New delayed allocation patch
delalloc-vfs.patch
delalloc-ext4.patch

ext-truncate-mutex.patch
ext3-4-migrate.patch
new-extent-function.patch
###################################################
#mballoc
###################################################
generic-find-next-le-bit
mballoc-core.patch

2007-09-27 01:36:36

by Mingming Cao

[permalink] [raw]
Subject: Ext4 patch queue updated(2.6.23-rc8)

http://repo.or.cz/w/ext4-patch-queue.git

Changes

+ Add large block support back,
updated patches to fix rec_len overflow issue with 64k blk size from Jan
Kara

split ext234_enlarge_blocksize.patch to three patches, one for each
filesystem type


Fix compile warning with jbd-stats-through-procfs


split jbd_kmalloc_kzalloc.patch into two patches for ext3/jbd and
ext4/jbd2 to sync with what in mm tree


+Add jbd2-fix-commit-code-to-properly-abort-journal.patch from Jan kara

+Added New patch set :Introduce le32_t and le16_t, from Aneesh

2007-10-24 01:04:17

by Mingming Cao

[permalink] [raw]
Subject: Ext4 patch queue updated(2.6.23-git17)

http://repo.or.cz/w/ext4-patch-queue.git
This patch queue is against mainline.

Changes:

Rebase ext4 patch queue after Linus pull patches from ext4 git tree.
Added ext4-Return-after-ext4_error-in-case-of-failures.patch from Aneesh
Added mballoc-compilebench-fix.patch from Aneesh
Reordered series to move some cleanup patches to stable series.


# This series applies on 2.6.24-git17
#

#
# Large blocksize support for ext4
#
ext4_large_blocksize_support.patch
ext4_rec_len_overflow_with_64kblk_fix-v2.patch

large-file-blocktype.patch

#block group varibles ext4_grpnum_t
ext4_grpnum_t.patch
ext4_grpnum_t_int_fix.patch

#large file support
ext4-cleanup.patch
ext4-cleanup-2.patch
ext4-cleanup-3.patch
ext4-cleanup-4.patch
48-bit-i_blocks.patch
large-file.patch
ext2_fix_max_size.patch
ext3_fix_max_size.patch

ext4_sync_group_desciptor_with_e2fsprogs.patch
ext4-Return-after-ext4_error-in-case-of-failures.patch
####################################################
# unstable patches still have outstanding comments from lkml
####################################################
stable-boundary
stable-boundary-undo.patch

# Export jbd stats through procfs
# Fold together:
# ext4-jbd-stats-through-procfs.patch
# ext4-jbd-stats-through-procfs_fix.patch
# ext4-fs-jbd2-journalc-kmalloc-memset-conversion-to-kzalloc.patch
# still have comments from akpm to be addressed
jbd-stats-through-procfs

# Add journal checksums
ext4-journal_chksum-2.6.20.patch
ext4-journal-chksum-review-fix.patch

# inode verion patch series
# inode versioning is needed for NFSv4
# Need to address overwrite case and performance concerns
# Need to repost to lkml for comments before submit
#
# vfs changes, 64 bit inode->i_version
64-bit-i_version.patch
# reserve hi 32 bit inode version on ext4 on-disk inode
i_version_hi.patch
# ext4 inode version read/store
ext4_i_version_hi_2.patch
# ext4 inode version update
i_version_update_ext4.patch

# New delayed allocation patch
delalloc-vfs.patch
delalloc-ext4.patch

ext-truncate-mutex.patch
ext3-4-migrate.patch

###################################################
#mballoc
###################################################
# n.b. in the rc7-mm1 tree as introduce-ext4_find_next_bit.patch
generic-find-next-le-bit
new-extent-function.patch
mballoc-core.patch
mballoc-bug-workaround.patch
ext4_grpnumt-mballoc-fix.patch
mballoc-compilebench-fix.patch

# Large block support for blocksize > pagesize
# Needed for Christoph Lameter's largeblock patchset
# to support large block on system that
# blocksize > pagesize
jbd-blocks-reservation-fix-for-large-blk.patch
jbd2-blocks-reservation-fix-for-large-blk.patch