Thread (5 messages) 5 messages, 4 authors, 2012-02-03

Re: Delayed Extent Tree and Extent Lock Tree

From: Andreas Dilger <hidden>
Date: 2012-02-01 17:47:38

On 2012-02-01, at 12:26 AM, Tao Ma wrote:
On 02/01/2012 06:33 AM, Allison Henderson wrote:
quoted
Hi Yongqiang,

I've have been working on an extent lock implementation that uses an
rbtree to keep track of locked extents, and I think I will probably end
up with a something similar to the tree that you've already set up for
delayed extents.  So I wanted to send a note out to see what folks would
think about the idea of merging the two solutions.

If we did this, the tree would get a little more complex in that it
would have to keep track of more than just delayed extents. It would
have to keep track of all extents and the processes that are waiting on
them.  So I guess it would kind of turn into an extent status tree.  I
also realize that some folks wanted to see range locks go into /lib as
general purpose code so that other filesystems or kernel code could use
it too, but the advantage to this approach would be one less tree for
ext4 to keep track of.  Any thoughts?
We (Taobao) are very interested in this stuff and it should benefit
several of our workload(It is on our todo list for a long time). I guess
Yongqiang's solution is a little bit limited to the only delayed extent
case, and your new solution at least has 2 more benefits:
1. improve the direct i/o read/write
2. speed up the extent search since now we only cache one in
ei_cached_extent.
Another related usage is to use a tree to track free extents in the
block allocation bitmaps.  We already have a thread starting at mount
time to do itable_init, and it would be possible to have that same
thread read block bitmaps from disk and generate a free extents tree.

That would allow much faster extent allocation without changing the
on-disk format.

Cheers, Andreas




Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help