ocfs2: Remove struct ocfs2_journal_handle in favor of handle_t

This is mostly a search and replace as ocfs2_journal_handle is now no more
than a container for a handle_t pointer.

ocfs2_commit_trans() becomes very straight forward, and we remove some out
of date comments / code.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
This commit is contained in:
Mark Fasheh
2006-10-09 18:11:45 -07:00
parent 65eff9ccf8
commit 1fabe1481f
20 changed files with 130 additions and 186 deletions

View File

@@ -110,30 +110,13 @@ finally:
return status;
}
static struct ocfs2_journal_handle *ocfs2_alloc_handle(struct ocfs2_super *osb)
{
struct ocfs2_journal_handle *retval = NULL;
retval = kcalloc(1, sizeof(*retval), GFP_NOFS);
if (!retval) {
mlog(ML_ERROR, "Failed to allocate memory for journal "
"handle!\n");
return NULL;
}
retval->k_handle = NULL;
return retval;
}
/* pass it NULL and it will allocate a new handle object for you. If
* you pass it a handle however, it may still return error, in which
* case it has free'd the passed handle for you. */
struct ocfs2_journal_handle *ocfs2_start_trans(struct ocfs2_super *osb,
int max_buffs)
handle_t *ocfs2_start_trans(struct ocfs2_super *osb, int max_buffs)
{
int ret;
journal_t *journal = osb->journal->j_journal;
struct ocfs2_journal_handle *handle;
handle_t *handle;
BUG_ON(!osb || !osb->journal->j_journal);
@@ -149,77 +132,39 @@ struct ocfs2_journal_handle *ocfs2_start_trans(struct ocfs2_super *osb,
BUG();
}
handle = ocfs2_alloc_handle(osb);
if (!handle) {
ret = -ENOMEM;
mlog_errno(ret);
return ERR_PTR(ret);
}
down_read(&osb->journal->j_trans_barrier);
/* actually start the transaction now */
handle->k_handle = journal_start(journal, max_buffs);
if (IS_ERR(handle->k_handle)) {
handle = journal_start(journal, max_buffs);
if (IS_ERR(handle)) {
up_read(&osb->journal->j_trans_barrier);
kfree(handle);
ret = PTR_ERR(handle->k_handle);
handle->k_handle = NULL;
mlog_errno(ret);
mlog_errno(PTR_ERR(handle));
if (is_journal_aborted(journal)) {
ocfs2_abort(osb->sb, "Detected aborted journal");
ret = -EROFS;
handle = ERR_PTR(-EROFS);
}
return ERR_PTR(ret);
}
atomic_inc(&(osb->journal->j_num_trans));
} else
atomic_inc(&(osb->journal->j_num_trans));
return handle;
}
void ocfs2_commit_trans(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle)
int ocfs2_commit_trans(struct ocfs2_super *osb,
handle_t *handle)
{
handle_t *jbd_handle;
int retval;
int ret;
struct ocfs2_journal *journal = osb->journal;
mlog_entry_void();
BUG_ON(!handle);
if (!handle->k_handle) {
kfree(handle);
mlog_exit_void();
return;
}
/* ocfs2_extend_trans may have had to call journal_restart
* which will always commit the transaction, but may return
* error for any number of reasons. If this is the case, we
* clear k_handle as it's not valid any more. */
if (handle->k_handle) {
jbd_handle = handle->k_handle;
/* actually stop the transaction. if we've set h_sync,
* it'll have been committed when we return */
retval = journal_stop(jbd_handle);
if (retval < 0) {
mlog_errno(retval);
mlog(ML_ERROR, "Could not commit transaction\n");
BUG();
}
handle->k_handle = NULL; /* it's been free'd in journal_stop */
}
ret = journal_stop(handle);
if (ret < 0)
mlog_errno(ret);
up_read(&journal->j_trans_barrier);
kfree(handle);
mlog_exit_void();
return ret;
}
/*
@@ -268,7 +213,7 @@ bail:
return status;
}
int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
int ocfs2_journal_access(handle_t *handle,
struct inode *inode,
struct buffer_head *bh,
int type)
@@ -306,11 +251,11 @@ int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
switch (type) {
case OCFS2_JOURNAL_ACCESS_CREATE:
case OCFS2_JOURNAL_ACCESS_WRITE:
status = journal_get_write_access(handle->k_handle, bh);
status = journal_get_write_access(handle, bh);
break;
case OCFS2_JOURNAL_ACCESS_UNDO:
status = journal_get_undo_access(handle->k_handle, bh);
status = journal_get_undo_access(handle, bh);
break;
default:
@@ -327,7 +272,7 @@ int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
return status;
}
int ocfs2_journal_dirty(struct ocfs2_journal_handle *handle,
int ocfs2_journal_dirty(handle_t *handle,
struct buffer_head *bh)
{
int status;
@@ -335,7 +280,7 @@ int ocfs2_journal_dirty(struct ocfs2_journal_handle *handle,
mlog_entry("(bh->b_blocknr=%llu)\n",
(unsigned long long)bh->b_blocknr);
status = journal_dirty_metadata(handle->k_handle, bh);
status = journal_dirty_metadata(handle, bh);
if (status < 0)
mlog(ML_ERROR, "Could not dirty metadata buffer. "
"(bh->b_blocknr=%llu)\n",