[PATCH 0/8 v3] ext4: extent status tree (step 1)

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

 



Hi all,

Here is the v3 of extent status tree.  In this version, the biggest change is
the i_es_lock (a rwlock_t) instead of i_data_sem, which is introduced to protect
extent status tree.  Moreover I improve the SEEK_DATA/SEEK_HOLE.  In previous
version, the unwritten extent is as a data, and now it will lookup page cache to
determine it as a data or a hole.  When it has some data at the given range, the
unwritten extent will be as a data.  Otherwise, it will be as a hole.  Other
changes contain some bug fixes.

About introduction of extent status tree and future works in step2, please see
the comments in patch 2.

Here is a defect after introducing SEEK_DATA/SEEK_HOLE support, which will cause
xfstest #285 failure when the file is block-mapped because in ext4 fallocate(2)
is not supported by block-mapped file.  However, in current version of xfstest,
it cannot trigger any failure because in xfstest the test case has a bug that
will cause no error is reported from #285.  I have submitted a patch to fix it,
but it still doesn't be applied.  Thus, if someone are willing to test
SEEK_DATA/SEEK_HOLE patch, please apply this patch firstly [1].

1. http://patchwork.xfs.org/patch/4276/

I really thanks Jeff Liu, who gives me some advices and inspires me about
SEEK_DATA/SEEK_HOLE improvement, and the function, which looks up page cache to
determine whether an unwritten extent is as a data or a hole, is inspired by
his work for xfs (d126d43f631f996daeee5006714fed914be32368).  Thus, I add a
Signed-off-by for his crediting.

Jeff, I really appreicate if you could allow me to add Signed-off-by in patch 8.
If doing like this is incorrect, please let me know.  Thanks!

v3 <- v2:
 - add rwlock to protect extent status tree
 - improve SEEK_DATA/SEEK_HOLE
 - fix some bugs

Here is the second version:
http://lwn.net/Articles/512899/ 

v2 <- v1:
 - add a BUG_ON to do a sanity check in extent_status_end
 - fix off-by-one problem in extent_status_end accroding to Lukas's comment
 - add more detailed comments in ext4_es_find_extent
 - try to lookup in extent tree cache firstly in ext4_es_find_extent
 - rename ext4_es_add_space to ext4_es_insert_extent
 - rename ext4_es_remove_space to ext4_es_remove_extent

The first version is in this link:
http://www.spinics.net/lists/linux-ext4/msg33101.html

Any feedbacks are appreciated.  Thanks!

Regards,
Zheng
---
Zheng Liu (8):
      ext4: add two structures supporting extent status tree
      ext4: add operations on extent status tree
      ext4: initialize extent status tree
      ext4: let ext4 maintain extent status tree
      ext4: add some tracepoints in extent status tree
      ext4: reimplement ext4_find_delay_alloc_range on extent status tree
      ext4: reimplement fiemap on extent status tree
      ext4: introduce lseek SEEK_DATA/SEEK_HOLE support

 fs/ext4/Makefile            |   2 +-
 fs/ext4/ext4.h              |  10 +-
 fs/ext4/ext4_extents.h      |   3 +-
 fs/ext4/extents.c           | 305 +++++-----------------------------
 fs/ext4/extents_status.c    | 499 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 fs/ext4/extents_status.h    |  45 +++++
 fs/ext4/file.c              | 334 ++++++++++++++++++++++++++++++++++++-
 fs/ext4/indirect.c          |   1 +
 fs/ext4/inode.c             |  91 ++++------
 fs/ext4/super.c             |  14 +-
 include/trace/events/ext4.h | 101 +++++++++++
 11 files changed, 1078 insertions(+), 327 deletions(-)
--
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