summaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/refcounttree.c
AgeCommit message (Collapse)Author
2009-09-22ocfs2: CoW refcount tree improvement.Tao Ma
During CoW, if the old extent record is refcounted, we allocate som new clusters and do CoW. Actually we can have some improvement here. If the old extent has refcount=1, that means now it is only used by this file. So we don't need to allocate new clusters, just remove the refcounted flag and it is OK. We also have to remove it from the refcount tree while not deleting it. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Add CoW support.Tao Ma
This patch try CoW support for a refcounted record. the whole process will be: 1. Calculate how many clusters we need to CoW and where we start. Extents that are not completely encompassed by the write will be broken on 1MB boundaries. 2. Do CoW for the clusters with the help of page cache. 3. Change the b-tree structure with the new allocated clusters. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Decrement refcount when truncating refcounted extents.Tao Ma
Add 'Decrement refcount for delete' in to the normal truncate process. So for a refcounted extent record, call refcount rec decrementation instead of cluster free. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Add functions for extents refcounted.Tao Ma
Add function ocfs2_mark_extent_refcounted which can mark an extent refcounted. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Add support of decrementing refcount for delete.Tao Ma
Given a physical cpos and length, decrement the refcount in the tree. If the refcount for any portion of the extent goes to zero, that portion is queued for freeing. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Add support for incrementing refcount in the tree.Tao Ma
Given a physical cpos and length, increment the refcount in the tree. If the extent has not been seen before, a refcount record is created for it. Refcount records may be merged or split by this operation. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Basic tree root operation.Tao Ma
Add basic refcount tree root operation. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Add refcount tree lock mechanism.Tao Ma
Implement locking around struct ocfs2_refcount_tree. This protects all read/write operations on refcount trees. ocfs2_refcount_tree has its own lock and its own caching_info, protecting buffers among multiple nodes. User must call ocfs2_lock_refcount_tree before his operation on the tree and unlock it after that. ocfs2_refcount_trees are referenced by the block number of the refcount tree root block, So we create an rb-tree on the ocfs2_super to look them up. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Add caching info for refcount tree.Tao Ma
refcount tree should use its own caching info so that when we downconvert the refcount tree lock, we can drop all the cached buffer head. Signed-off-by: Tao Ma <tao.ma@oracle.com>
2009-09-22ocfs2: Add ocfs2_read_refcount_block.Tao Ma
Signed-off-by: Tao Ma <tao.ma@oracle.com>