mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
ocfs2: Pass ocfs2_caching_info into ocfs_init_*_extent_tree().
With this commit, extent tree operations are divorced from inodes and rely on ocfs2_caching_info. Phew! Signed-off-by: Joel Becker <joel.becker@oracle.com>
This commit is contained in:
parent
a1cf076ba9
commit
5e404e9ed1
6 changed files with 35 additions and 30 deletions
|
@ -366,7 +366,7 @@ static struct ocfs2_extent_tree_operations ocfs2_dx_root_et_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __ocfs2_init_extent_tree(struct ocfs2_extent_tree *et,
|
static void __ocfs2_init_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct buffer_head *bh,
|
struct buffer_head *bh,
|
||||||
ocfs2_journal_access_func access,
|
ocfs2_journal_access_func access,
|
||||||
void *obj,
|
void *obj,
|
||||||
|
@ -374,7 +374,7 @@ static void __ocfs2_init_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
{
|
{
|
||||||
et->et_ops = ops;
|
et->et_ops = ops;
|
||||||
et->et_root_bh = bh;
|
et->et_root_bh = bh;
|
||||||
et->et_ci = INODE_CACHE(inode);
|
et->et_ci = ci;
|
||||||
et->et_root_journal_access = access;
|
et->et_root_journal_access = access;
|
||||||
if (!obj)
|
if (!obj)
|
||||||
obj = (void *)bh->b_data;
|
obj = (void *)bh->b_data;
|
||||||
|
@ -388,34 +388,34 @@ static void __ocfs2_init_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
}
|
}
|
||||||
|
|
||||||
void ocfs2_init_dinode_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_dinode_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct buffer_head *bh)
|
struct buffer_head *bh)
|
||||||
{
|
{
|
||||||
__ocfs2_init_extent_tree(et, inode, bh, ocfs2_journal_access_di,
|
__ocfs2_init_extent_tree(et, ci, bh, ocfs2_journal_access_di,
|
||||||
NULL, &ocfs2_dinode_et_ops);
|
NULL, &ocfs2_dinode_et_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ocfs2_init_xattr_tree_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_xattr_tree_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct buffer_head *bh)
|
struct buffer_head *bh)
|
||||||
{
|
{
|
||||||
__ocfs2_init_extent_tree(et, inode, bh, ocfs2_journal_access_xb,
|
__ocfs2_init_extent_tree(et, ci, bh, ocfs2_journal_access_xb,
|
||||||
NULL, &ocfs2_xattr_tree_et_ops);
|
NULL, &ocfs2_xattr_tree_et_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ocfs2_init_xattr_value_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_xattr_value_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct ocfs2_xattr_value_buf *vb)
|
struct ocfs2_xattr_value_buf *vb)
|
||||||
{
|
{
|
||||||
__ocfs2_init_extent_tree(et, inode, vb->vb_bh, vb->vb_access, vb,
|
__ocfs2_init_extent_tree(et, ci, vb->vb_bh, vb->vb_access, vb,
|
||||||
&ocfs2_xattr_value_et_ops);
|
&ocfs2_xattr_value_et_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ocfs2_init_dx_root_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_dx_root_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct buffer_head *bh)
|
struct buffer_head *bh)
|
||||||
{
|
{
|
||||||
__ocfs2_init_extent_tree(et, inode, bh, ocfs2_journal_access_dr,
|
__ocfs2_init_extent_tree(et, ci, bh, ocfs2_journal_access_dr,
|
||||||
NULL, &ocfs2_dx_root_et_ops);
|
NULL, &ocfs2_dx_root_et_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7241,7 +7241,7 @@ int ocfs2_convert_inline_data_to_extents(struct inode *inode,
|
||||||
* this proves to be false, we could always re-build
|
* this proves to be false, we could always re-build
|
||||||
* the in-inode data from our pages.
|
* the in-inode data from our pages.
|
||||||
*/
|
*/
|
||||||
ocfs2_init_dinode_extent_tree(&et, inode, di_bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh);
|
||||||
ret = ocfs2_insert_extent(handle, &et, 0, block, 1, 0, NULL);
|
ret = ocfs2_insert_extent(handle, &et, 0, block, 1, 0, NULL);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mlog_errno(ret);
|
mlog_errno(ret);
|
||||||
|
|
|
@ -68,17 +68,17 @@ struct ocfs2_extent_tree {
|
||||||
* specified object buffer.
|
* specified object buffer.
|
||||||
*/
|
*/
|
||||||
void ocfs2_init_dinode_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_dinode_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct buffer_head *bh);
|
struct buffer_head *bh);
|
||||||
void ocfs2_init_xattr_tree_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_xattr_tree_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct buffer_head *bh);
|
struct buffer_head *bh);
|
||||||
struct ocfs2_xattr_value_buf;
|
struct ocfs2_xattr_value_buf;
|
||||||
void ocfs2_init_xattr_value_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_xattr_value_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct ocfs2_xattr_value_buf *vb);
|
struct ocfs2_xattr_value_buf *vb);
|
||||||
void ocfs2_init_dx_root_extent_tree(struct ocfs2_extent_tree *et,
|
void ocfs2_init_dx_root_extent_tree(struct ocfs2_extent_tree *et,
|
||||||
struct inode *inode,
|
struct ocfs2_caching_info *ci,
|
||||||
struct buffer_head *bh);
|
struct buffer_head *bh);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1259,7 +1259,8 @@ static int ocfs2_write_cluster(struct address_space *mapping,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
} else if (unwritten) {
|
} else if (unwritten) {
|
||||||
ocfs2_init_dinode_extent_tree(&et, inode, wc->w_di_bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode),
|
||||||
|
wc->w_di_bh);
|
||||||
ret = ocfs2_mark_extent_written(inode, &et,
|
ret = ocfs2_mark_extent_written(inode, &et,
|
||||||
wc->w_handle, cpos, 1, phys,
|
wc->w_handle, cpos, 1, phys,
|
||||||
meta_ac, &wc->w_dealloc);
|
meta_ac, &wc->w_dealloc);
|
||||||
|
@ -1726,7 +1727,8 @@ int ocfs2_write_begin_nolock(struct address_space *mapping,
|
||||||
(long long)i_size_read(inode), le32_to_cpu(di->i_clusters),
|
(long long)i_size_read(inode), le32_to_cpu(di->i_clusters),
|
||||||
clusters_to_alloc, extents_to_split);
|
clusters_to_alloc, extents_to_split);
|
||||||
|
|
||||||
ocfs2_init_dinode_extent_tree(&et, inode, wc->w_di_bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode),
|
||||||
|
wc->w_di_bh);
|
||||||
ret = ocfs2_lock_allocators(inode, &et,
|
ret = ocfs2_lock_allocators(inode, &et,
|
||||||
clusters_to_alloc, extents_to_split,
|
clusters_to_alloc, extents_to_split,
|
||||||
&data_ac, &meta_ac);
|
&data_ac, &meta_ac);
|
||||||
|
|
|
@ -2903,7 +2903,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh,
|
||||||
struct ocfs2_extent_tree dx_et;
|
struct ocfs2_extent_tree dx_et;
|
||||||
int did_quota = 0, bytes_allocated = 0;
|
int did_quota = 0, bytes_allocated = 0;
|
||||||
|
|
||||||
ocfs2_init_dinode_extent_tree(&et, dir, di_bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(dir), di_bh);
|
||||||
|
|
||||||
alloc = ocfs2_clusters_for_bytes(sb, bytes);
|
alloc = ocfs2_clusters_for_bytes(sb, bytes);
|
||||||
dx_alloc = 0;
|
dx_alloc = 0;
|
||||||
|
@ -3125,7 +3125,9 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh,
|
||||||
ocfs2_dx_dir_index_root_block(dir, dx_root_bh,
|
ocfs2_dx_dir_index_root_block(dir, dx_root_bh,
|
||||||
dirdata_bh);
|
dirdata_bh);
|
||||||
} else {
|
} else {
|
||||||
ocfs2_init_dx_root_extent_tree(&dx_et, dir, dx_root_bh);
|
ocfs2_init_dx_root_extent_tree(&dx_et,
|
||||||
|
INODE_CACHE(dir),
|
||||||
|
dx_root_bh);
|
||||||
ret = ocfs2_insert_extent(handle, &dx_et, 0,
|
ret = ocfs2_insert_extent(handle, &dx_et, 0,
|
||||||
dx_insert_blkno, 1, 0, NULL);
|
dx_insert_blkno, 1, 0, NULL);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -3345,7 +3347,8 @@ static int ocfs2_extend_dir(struct ocfs2_super *osb,
|
||||||
spin_lock(&OCFS2_I(dir)->ip_lock);
|
spin_lock(&OCFS2_I(dir)->ip_lock);
|
||||||
if (dir_i_size == ocfs2_clusters_to_bytes(sb, OCFS2_I(dir)->ip_clusters)) {
|
if (dir_i_size == ocfs2_clusters_to_bytes(sb, OCFS2_I(dir)->ip_clusters)) {
|
||||||
spin_unlock(&OCFS2_I(dir)->ip_lock);
|
spin_unlock(&OCFS2_I(dir)->ip_lock);
|
||||||
ocfs2_init_dinode_extent_tree(&et, dir, parent_fe_bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(dir),
|
||||||
|
parent_fe_bh);
|
||||||
num_free_extents = ocfs2_num_free_extents(osb, &et);
|
num_free_extents = ocfs2_num_free_extents(osb, &et);
|
||||||
if (num_free_extents < 0) {
|
if (num_free_extents < 0) {
|
||||||
status = num_free_extents;
|
status = num_free_extents;
|
||||||
|
@ -3837,7 +3840,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir,
|
||||||
(unsigned long long)OCFS2_I(dir)->ip_blkno,
|
(unsigned long long)OCFS2_I(dir)->ip_blkno,
|
||||||
(unsigned long long)leaf_blkno, insert_hash);
|
(unsigned long long)leaf_blkno, insert_hash);
|
||||||
|
|
||||||
ocfs2_init_dx_root_extent_tree(&et, dir, dx_root_bh);
|
ocfs2_init_dx_root_extent_tree(&et, INODE_CACHE(dir), dx_root_bh);
|
||||||
|
|
||||||
dx_root = (struct ocfs2_dx_root_block *)dx_root_bh->b_data;
|
dx_root = (struct ocfs2_dx_root_block *)dx_root_bh->b_data;
|
||||||
/*
|
/*
|
||||||
|
@ -4216,7 +4219,7 @@ static int ocfs2_expand_inline_dx_root(struct inode *dir,
|
||||||
|
|
||||||
/* This should never fail considering we start with an empty
|
/* This should never fail considering we start with an empty
|
||||||
* dx_root. */
|
* dx_root. */
|
||||||
ocfs2_init_dx_root_extent_tree(&et, dir, dx_root_bh);
|
ocfs2_init_dx_root_extent_tree(&et, INODE_CACHE(dir), dx_root_bh);
|
||||||
ret = ocfs2_insert_extent(handle, &et, 0, insert_blkno, 1, 0, NULL);
|
ret = ocfs2_insert_extent(handle, &et, 0, insert_blkno, 1, 0, NULL);
|
||||||
if (ret)
|
if (ret)
|
||||||
mlog_errno(ret);
|
mlog_errno(ret);
|
||||||
|
@ -4540,7 +4543,7 @@ int ocfs2_dx_dir_truncate(struct inode *dir, struct buffer_head *di_bh)
|
||||||
if (ocfs2_dx_root_inline(dx_root))
|
if (ocfs2_dx_root_inline(dx_root))
|
||||||
goto remove_index;
|
goto remove_index;
|
||||||
|
|
||||||
ocfs2_init_dx_root_extent_tree(&et, dir, dx_root_bh);
|
ocfs2_init_dx_root_extent_tree(&et, INODE_CACHE(dir), dx_root_bh);
|
||||||
|
|
||||||
/* XXX: What if dr_clusters is too large? */
|
/* XXX: What if dr_clusters is too large? */
|
||||||
while (le32_to_cpu(dx_root->dr_clusters)) {
|
while (le32_to_cpu(dx_root->dr_clusters)) {
|
||||||
|
|
|
@ -515,7 +515,7 @@ int ocfs2_add_inode_data(struct ocfs2_super *osb,
|
||||||
int ret;
|
int ret;
|
||||||
struct ocfs2_extent_tree et;
|
struct ocfs2_extent_tree et;
|
||||||
|
|
||||||
ocfs2_init_dinode_extent_tree(&et, inode, fe_bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), fe_bh);
|
||||||
ret = ocfs2_add_clusters_in_btree(handle, &et, logical_offset,
|
ret = ocfs2_add_clusters_in_btree(handle, &et, logical_offset,
|
||||||
clusters_to_add, mark_unwritten,
|
clusters_to_add, mark_unwritten,
|
||||||
data_ac, meta_ac, reason_ret);
|
data_ac, meta_ac, reason_ret);
|
||||||
|
@ -563,7 +563,7 @@ restart_all:
|
||||||
(unsigned long long)OCFS2_I(inode)->ip_blkno,
|
(unsigned long long)OCFS2_I(inode)->ip_blkno,
|
||||||
(long long)i_size_read(inode), le32_to_cpu(fe->i_clusters),
|
(long long)i_size_read(inode), le32_to_cpu(fe->i_clusters),
|
||||||
clusters_to_add);
|
clusters_to_add);
|
||||||
ocfs2_init_dinode_extent_tree(&et, inode, bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), bh);
|
||||||
status = ocfs2_lock_allocators(inode, &et, clusters_to_add, 0,
|
status = ocfs2_lock_allocators(inode, &et, clusters_to_add, 0,
|
||||||
&data_ac, &meta_ac);
|
&data_ac, &meta_ac);
|
||||||
if (status) {
|
if (status) {
|
||||||
|
@ -1394,7 +1394,7 @@ static int ocfs2_remove_inode_range(struct inode *inode,
|
||||||
struct address_space *mapping = inode->i_mapping;
|
struct address_space *mapping = inode->i_mapping;
|
||||||
struct ocfs2_extent_tree et;
|
struct ocfs2_extent_tree et;
|
||||||
|
|
||||||
ocfs2_init_dinode_extent_tree(&et, inode, di_bh);
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh);
|
||||||
ocfs2_init_dealloc_ctxt(&dealloc);
|
ocfs2_init_dealloc_ctxt(&dealloc);
|
||||||
|
|
||||||
if (byte_len == 0)
|
if (byte_len == 0)
|
||||||
|
|
|
@ -602,7 +602,7 @@ static int ocfs2_xattr_extend_allocation(struct inode *inode,
|
||||||
|
|
||||||
mlog(0, "(clusters_to_add for xattr= %u)\n", clusters_to_add);
|
mlog(0, "(clusters_to_add for xattr= %u)\n", clusters_to_add);
|
||||||
|
|
||||||
ocfs2_init_xattr_value_extent_tree(&et, inode, vb);
|
ocfs2_init_xattr_value_extent_tree(&et, INODE_CACHE(inode), vb);
|
||||||
|
|
||||||
status = vb->vb_access(handle, INODE_CACHE(inode), vb->vb_bh,
|
status = vb->vb_access(handle, INODE_CACHE(inode), vb->vb_bh,
|
||||||
OCFS2_JOURNAL_ACCESS_WRITE);
|
OCFS2_JOURNAL_ACCESS_WRITE);
|
||||||
|
@ -654,7 +654,7 @@ static int __ocfs2_remove_xattr_range(struct inode *inode,
|
||||||
handle_t *handle = ctxt->handle;
|
handle_t *handle = ctxt->handle;
|
||||||
struct ocfs2_extent_tree et;
|
struct ocfs2_extent_tree et;
|
||||||
|
|
||||||
ocfs2_init_xattr_value_extent_tree(&et, inode, vb);
|
ocfs2_init_xattr_value_extent_tree(&et, INODE_CACHE(inode), vb);
|
||||||
|
|
||||||
ret = vb->vb_access(handle, INODE_CACHE(inode), vb->vb_bh,
|
ret = vb->vb_access(handle, INODE_CACHE(inode), vb->vb_bh,
|
||||||
OCFS2_JOURNAL_ACCESS_WRITE);
|
OCFS2_JOURNAL_ACCESS_WRITE);
|
||||||
|
@ -4266,7 +4266,7 @@ static int ocfs2_add_new_xattr_cluster(struct inode *inode,
|
||||||
(unsigned long long)OCFS2_I(inode)->ip_blkno,
|
(unsigned long long)OCFS2_I(inode)->ip_blkno,
|
||||||
prev_cpos, (unsigned long long)bucket_blkno(first));
|
prev_cpos, (unsigned long long)bucket_blkno(first));
|
||||||
|
|
||||||
ocfs2_init_xattr_tree_extent_tree(&et, inode, root_bh);
|
ocfs2_init_xattr_tree_extent_tree(&et, INODE_CACHE(inode), root_bh);
|
||||||
|
|
||||||
ret = ocfs2_journal_access_xb(handle, INODE_CACHE(inode), root_bh,
|
ret = ocfs2_journal_access_xb(handle, INODE_CACHE(inode), root_bh,
|
||||||
OCFS2_JOURNAL_ACCESS_WRITE);
|
OCFS2_JOURNAL_ACCESS_WRITE);
|
||||||
|
@ -4841,7 +4841,7 @@ static int ocfs2_rm_xattr_cluster(struct inode *inode,
|
||||||
struct ocfs2_cached_dealloc_ctxt dealloc;
|
struct ocfs2_cached_dealloc_ctxt dealloc;
|
||||||
struct ocfs2_extent_tree et;
|
struct ocfs2_extent_tree et;
|
||||||
|
|
||||||
ocfs2_init_xattr_tree_extent_tree(&et, inode, root_bh);
|
ocfs2_init_xattr_tree_extent_tree(&et, INODE_CACHE(inode), root_bh);
|
||||||
|
|
||||||
ocfs2_init_dealloc_ctxt(&dealloc);
|
ocfs2_init_dealloc_ctxt(&dealloc);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue