Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 195738
b: refs/heads/master
c: c901fb0
h: refs/heads/master
v: v3
  • Loading branch information
Tao Ma authored and Joel Becker committed May 6, 2010
1 parent bfac4e7 commit 42a12b1
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 40 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3e4218df3176657be72ad2fa199779be6c11fe4f
refs/heads/master: c901fb00731e307c2c6e8c7d5eee005df5835f9d
30 changes: 9 additions & 21 deletions trunk/fs/ocfs2/alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1125,8 +1125,7 @@ static int ocfs2_adjust_rightmost_branch(handle_t *handle,
goto out;
}

status = ocfs2_extend_trans(handle, path_num_items(path) +
handle->h_buffer_credits);
status = ocfs2_extend_trans(handle, path_num_items(path));
if (status < 0) {
mlog_errno(status);
goto out;
Expand Down Expand Up @@ -2288,20 +2287,14 @@ static int ocfs2_extend_rotate_transaction(handle_t *handle, int subtree_depth,
int op_credits,
struct ocfs2_path *path)
{
int ret;
int ret = 0;
int credits = (path->p_tree_depth - subtree_depth) * 2 + 1 + op_credits;

if (handle->h_buffer_credits < credits) {
if (handle->h_buffer_credits < credits)
ret = ocfs2_extend_trans(handle,
credits - handle->h_buffer_credits);
if (ret)
return ret;

if (unlikely(handle->h_buffer_credits < credits))
return ocfs2_extend_trans(handle, credits);
}

return 0;
return ret;
}

/*
Expand Down Expand Up @@ -2545,8 +2538,7 @@ static int ocfs2_update_edge_lengths(handle_t *handle,
* records for all the bh in the path.
* So we have to allocate extra credits and access them.
*/
ret = ocfs2_extend_trans(handle,
handle->h_buffer_credits + subtree_index);
ret = ocfs2_extend_trans(handle, subtree_index);
if (ret) {
mlog_errno(ret);
goto out;
Expand Down Expand Up @@ -4141,17 +4133,13 @@ static int ocfs2_insert_path(handle_t *handle,
struct buffer_head *leaf_bh = path_leaf_bh(right_path);

if (left_path) {
int credits = handle->h_buffer_credits;

/*
* There's a chance that left_path got passed back to
* us without being accounted for in the
* journal. Extend our transaction here to be sure we
* can change those blocks.
*/
credits += left_path->p_tree_depth;

ret = ocfs2_extend_trans(handle, credits);
ret = ocfs2_extend_trans(handle, left_path->p_tree_depth);
if (ret < 0) {
mlog_errno(ret);
goto out;
Expand Down Expand Up @@ -5237,7 +5225,7 @@ static int ocfs2_split_tree(handle_t *handle, struct ocfs2_extent_tree *et,
int index, u32 new_range,
struct ocfs2_alloc_context *meta_ac)
{
int ret, depth, credits = handle->h_buffer_credits;
int ret, depth, credits;
struct buffer_head *last_eb_bh = NULL;
struct ocfs2_extent_block *eb;
struct ocfs2_extent_list *rightmost_el, *el;
Expand Down Expand Up @@ -5268,8 +5256,8 @@ static int ocfs2_split_tree(handle_t *handle, struct ocfs2_extent_tree *et,
} else
rightmost_el = path_leaf_el(path);

credits += path->p_tree_depth +
ocfs2_extend_meta_needed(et->et_root_el);
credits = path->p_tree_depth +
ocfs2_extend_meta_needed(et->et_root_el);
ret = ocfs2_extend_trans(handle, credits);
if (ret) {
mlog_errno(ret);
Expand Down
15 changes: 9 additions & 6 deletions trunk/fs/ocfs2/journal.c
Original file line number Diff line number Diff line change
Expand Up @@ -402,9 +402,7 @@ int ocfs2_commit_trans(struct ocfs2_super *osb,
}

/*
* 'nblocks' is what you want to add to the current
* transaction. extend_trans will either extend the current handle by
* nblocks, or commit it and start a new one with nblocks credits.
* 'nblocks' is what you want to add to the current transaction.
*
* This might call jbd2_journal_restart() which will commit dirty buffers
* and then restart the transaction. Before calling
Expand All @@ -422,11 +420,15 @@ int ocfs2_commit_trans(struct ocfs2_super *osb,
*/
int ocfs2_extend_trans(handle_t *handle, int nblocks)
{
int status;
int status, old_nblocks;

BUG_ON(!handle);
BUG_ON(!nblocks);
BUG_ON(nblocks < 0);

if (!nblocks)
return 0;

old_nblocks = handle->h_buffer_credits;
mlog_entry_void();

mlog(0, "Trying to extend transaction by %d blocks\n", nblocks);
Expand All @@ -445,7 +447,8 @@ int ocfs2_extend_trans(handle_t *handle, int nblocks)
mlog(0,
"jbd2_journal_extend failed, trying "
"jbd2_journal_restart\n");
status = jbd2_journal_restart(handle, nblocks);
status = jbd2_journal_restart(handle,
old_nblocks + nblocks);
if (status < 0) {
mlog_errno(status);
goto bail;
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/ocfs2/refcounttree.c
Original file line number Diff line number Diff line change
Expand Up @@ -1693,7 +1693,7 @@ static int ocfs2_adjust_refcount_rec(handle_t *handle,
* 2 more credits, one for the leaf refcount block, one for
* the extent block contains the extent rec.
*/
ret = ocfs2_extend_trans(handle, handle->h_buffer_credits + 2);
ret = ocfs2_extend_trans(handle, 2);
if (ret < 0) {
mlog_errno(ret);
goto out;
Expand Down
17 changes: 6 additions & 11 deletions trunk/fs/ocfs2/xattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -3295,8 +3295,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
goto out;
}

ret = ocfs2_extend_trans(ctxt->handle, credits +
ctxt->handle->h_buffer_credits);
ret = ocfs2_extend_trans(ctxt->handle, credits);
if (ret) {
mlog_errno(ret);
goto out;
Expand Down Expand Up @@ -3326,8 +3325,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
goto out;
}

ret = ocfs2_extend_trans(ctxt->handle, credits +
ctxt->handle->h_buffer_credits);
ret = ocfs2_extend_trans(ctxt->handle, credits);
if (ret) {
mlog_errno(ret);
goto out;
Expand Down Expand Up @@ -3361,8 +3359,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
goto out;
}

ret = ocfs2_extend_trans(ctxt->handle, credits +
ctxt->handle->h_buffer_credits);
ret = ocfs2_extend_trans(ctxt->handle, credits);
if (ret) {
mlog_errno(ret);
goto out;
Expand Down Expand Up @@ -4870,8 +4867,7 @@ static int ocfs2_mv_xattr_buckets(struct inode *inode, handle_t *handle,
* We need to update the first bucket of the old extent and all
* the buckets going to the new extent.
*/
credits = ((num_buckets + 1) * blks_per_bucket) +
handle->h_buffer_credits;
credits = ((num_buckets + 1) * blks_per_bucket);
ret = ocfs2_extend_trans(handle, credits);
if (ret) {
mlog_errno(ret);
Expand Down Expand Up @@ -4941,7 +4937,7 @@ static int ocfs2_divide_xattr_cluster(struct inode *inode,
u32 *first_hash)
{
u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode->i_sb);
int ret, credits = 2 * blk_per_bucket + handle->h_buffer_credits;
int ret, credits = 2 * blk_per_bucket;

BUG_ON(OCFS2_XATTR_BUCKET_SIZE < OCFS2_SB(inode->i_sb)->s_clustersize);

Expand Down Expand Up @@ -5181,8 +5177,7 @@ static int ocfs2_extend_xattr_bucket(struct inode *inode,
* existing bucket. Then we add the last existing bucket, the
* new bucket, and the first bucket (3 * blk_per_bucket).
*/
credits = (end_blk - target_blk) + (3 * blk_per_bucket) +
handle->h_buffer_credits;
credits = (end_blk - target_blk) + (3 * blk_per_bucket);
ret = ocfs2_extend_trans(handle, credits);
if (ret) {
mlog_errno(ret);
Expand Down

0 comments on commit 42a12b1

Please sign in to comment.