[PATCH v2 0/5] ext4: try to fix up es regressions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

The patch series tries to fixup some regressions after applied the extent
status tree.  These patches have rebased against the latest dev branch of
ext4 and have been tested by xfstests.

After rebased the latest dev branch, two patches have been dropped because
they have been applied into the branch.  A new patch is added, which tries
to fix up a wrong return value in ext4_split_extent().  Otherwise, there
are two major changes in this version.  The first one is to improve the
self-testing-infrastructure according to Dmitry's comment.  The second one
is to improve the zero out code.

After applied this patch series, I havn't seen the warning messages from
self-testing infrastructure except the following cases.

 - xfstests #13 with bigalloc or with no journal
 - xfstests #223 with dioread_nolock
The reason is that when we lookup a block mapping from status tree
i_data_sem locking won't be taken.  So there is a race window that an 
unwritten extent could be converted by end_io when we compare the result
between extent tree and status tree.

Dmitry, Ted, could you please confirm that this patch series can fix the
defrag regression?  Thank you so much.  Until now I run #300 and #301 a
lot times but I failed to hit this regression. :-(

*Big Note*
When I am testing this patch series, I found some regressions in dev branch.
Here is a note.  These regressions could be hitted by running test case
serveral times.  So If we just run xfstests one time, they could be missed.

 - xfstests #74 with data=journal
 - xfstests #83 with bigalloc
Some threads could be blocked for 120s.

 - xfstests #247 with data=journal
Some warning messages are printed by ext4_releasepage.  We hit
WARN_ON(PageChecked(page)) in this function.  But the test case itself can
pass.

 - xfstests #269 with dioread_nolock
The system will hang

I don't paste full details here to make description clearly.  I will go on
tracing these problems.  I am happy to provide full details if some one
want to take a close look at these problems.

v2 <- v1:
 * Improve self-testing infrastructure
 * Improve zero out code
 * Fix a wrong return value in ext4_split_extent

v1: http://permalink.gmane.org/gmane.comp.file-systems.ext4/37338

Thanks,
						- Zheng

Dmitry Monakhov (1):
  ext4: add self-testing infrastructure to do a sanity check

Zheng Liu (4):
  ext4: improve ext4_es_can_be_merged() to avoid a potential overflow
  ext4: fix wrong m_len value after unwritten extent conversion
  ext4: update extent status tree after an extent is zeroed out
  ext4: fix wrong the number of the allocted blocks in
    ext4_split_extent

 fs/ext4/extents.c        |  45 ++++++++--
 fs/ext4/extents_status.c | 212 +++++++++++++++++++++++++++++++++++++++++++++--
 fs/ext4/extents_status.h |   9 ++
 fs/ext4/inode.c          | 106 ++++++++++++++++++++++++
 4 files changed, 362 insertions(+), 10 deletions(-)

-- 
1.7.12.rc2.18.g61b472e

--
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


[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux