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

@ -52,14 +52,14 @@ static int ocfs2_extent_contig(struct inode *inode,
u64 blkno); u64 blkno);
static int ocfs2_create_new_meta_bhs(struct ocfs2_super *osb, static int ocfs2_create_new_meta_bhs(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
int wanted, int wanted,
struct ocfs2_alloc_context *meta_ac, struct ocfs2_alloc_context *meta_ac,
struct buffer_head *bhs[]); struct buffer_head *bhs[]);
static int ocfs2_add_branch(struct ocfs2_super *osb, static int ocfs2_add_branch(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct buffer_head *eb_bh, struct buffer_head *eb_bh,
@ -67,14 +67,14 @@ static int ocfs2_add_branch(struct ocfs2_super *osb,
struct ocfs2_alloc_context *meta_ac); struct ocfs2_alloc_context *meta_ac);
static int ocfs2_shift_tree_depth(struct ocfs2_super *osb, static int ocfs2_shift_tree_depth(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct ocfs2_alloc_context *meta_ac, struct ocfs2_alloc_context *meta_ac,
struct buffer_head **ret_new_eb_bh); struct buffer_head **ret_new_eb_bh);
static int ocfs2_do_insert_extent(struct ocfs2_super *osb, static int ocfs2_do_insert_extent(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
u64 blkno, u64 blkno,
@ -152,7 +152,7 @@ bail:
* l_count for you * l_count for you
*/ */
static int ocfs2_create_new_meta_bhs(struct ocfs2_super *osb, static int ocfs2_create_new_meta_bhs(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
int wanted, int wanted,
struct ocfs2_alloc_context *meta_ac, struct ocfs2_alloc_context *meta_ac,
@ -253,7 +253,7 @@ bail:
* contain a single record with e_clusters == 0. * contain a single record with e_clusters == 0.
*/ */
static int ocfs2_add_branch(struct ocfs2_super *osb, static int ocfs2_add_branch(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct buffer_head *eb_bh, struct buffer_head *eb_bh,
@ -418,7 +418,7 @@ bail:
* after this call. * after this call.
*/ */
static int ocfs2_shift_tree_depth(struct ocfs2_super *osb, static int ocfs2_shift_tree_depth(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct ocfs2_alloc_context *meta_ac, struct ocfs2_alloc_context *meta_ac,
@ -520,7 +520,7 @@ bail:
* down. * down.
*/ */
static int ocfs2_do_insert_extent(struct ocfs2_super *osb, static int ocfs2_do_insert_extent(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
u64 start_blk, u64 start_blk,
@ -809,7 +809,7 @@ bail:
/* the caller needs to update fe->i_clusters */ /* the caller needs to update fe->i_clusters */
int ocfs2_insert_extent(struct ocfs2_super *osb, int ocfs2_insert_extent(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
u64 start_blk, u64 start_blk,
@ -951,7 +951,7 @@ static int ocfs2_truncate_log_can_coalesce(struct ocfs2_truncate_log *tl,
} }
static int ocfs2_truncate_log_append(struct ocfs2_super *osb, static int ocfs2_truncate_log_append(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
u64 start_blk, u64 start_blk,
unsigned int num_clusters) unsigned int num_clusters)
{ {
@ -1034,7 +1034,7 @@ bail:
} }
static int ocfs2_replay_truncate_records(struct ocfs2_super *osb, static int ocfs2_replay_truncate_records(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *data_alloc_inode, struct inode *data_alloc_inode,
struct buffer_head *data_alloc_bh) struct buffer_head *data_alloc_bh)
{ {
@ -1074,7 +1074,7 @@ static int ocfs2_replay_truncate_records(struct ocfs2_super *osb,
/* TODO: Perhaps we can calculate the bulk of the /* TODO: Perhaps we can calculate the bulk of the
* credits up front rather than extending like * credits up front rather than extending like
* this. */ * this. */
status = ocfs2_extend_trans(handle->k_handle, status = ocfs2_extend_trans(handle,
OCFS2_TRUNCATE_LOG_FLUSH_ONE_REC); OCFS2_TRUNCATE_LOG_FLUSH_ONE_REC);
if (status < 0) { if (status < 0) {
mlog_errno(status); mlog_errno(status);
@ -1113,7 +1113,7 @@ static int __ocfs2_flush_truncate_log(struct ocfs2_super *osb)
{ {
int status; int status;
unsigned int num_to_flush; unsigned int num_to_flush;
struct ocfs2_journal_handle *handle; handle_t *handle;
struct inode *tl_inode = osb->osb_tl_inode; struct inode *tl_inode = osb->osb_tl_inode;
struct inode *data_alloc_inode = NULL; struct inode *data_alloc_inode = NULL;
struct buffer_head *tl_bh = osb->osb_tl_bh; struct buffer_head *tl_bh = osb->osb_tl_bh;
@ -1339,7 +1339,7 @@ int ocfs2_complete_truncate_log_recovery(struct ocfs2_super *osb,
int i; int i;
unsigned int clusters, num_recs, start_cluster; unsigned int clusters, num_recs, start_cluster;
u64 start_blk; u64 start_blk;
struct ocfs2_journal_handle *handle; handle_t *handle;
struct inode *tl_inode = osb->osb_tl_inode; struct inode *tl_inode = osb->osb_tl_inode;
struct ocfs2_truncate_log *tl; struct ocfs2_truncate_log *tl;
@ -1534,7 +1534,7 @@ static int ocfs2_do_truncate(struct ocfs2_super *osb,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct buffer_head *old_last_eb_bh, struct buffer_head *old_last_eb_bh,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_truncate_context *tc) struct ocfs2_truncate_context *tc)
{ {
int status, i, depth; int status, i, depth;
@ -1773,7 +1773,7 @@ int ocfs2_commit_truncate(struct ocfs2_super *osb,
struct ocfs2_extent_block *eb; struct ocfs2_extent_block *eb;
struct ocfs2_extent_list *el; struct ocfs2_extent_list *el;
struct buffer_head *last_eb_bh; struct buffer_head *last_eb_bh;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct inode *tl_inode = osb->osb_tl_inode; struct inode *tl_inode = osb->osb_tl_inode;
mlog_entry_void(); mlog_entry_void();

View file

@ -28,7 +28,7 @@
struct ocfs2_alloc_context; struct ocfs2_alloc_context;
int ocfs2_insert_extent(struct ocfs2_super *osb, int ocfs2_insert_extent(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
u64 blkno, u64 blkno,

View file

@ -355,13 +355,13 @@ static int walk_page_buffers( handle_t *handle,
return ret; return ret;
} }
struct ocfs2_journal_handle *ocfs2_start_walk_page_trans(struct inode *inode, handle_t *ocfs2_start_walk_page_trans(struct inode *inode,
struct page *page, struct page *page,
unsigned from, unsigned from,
unsigned to) unsigned to)
{ {
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
int ret = 0; int ret = 0;
handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS); handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
@ -372,7 +372,7 @@ struct ocfs2_journal_handle *ocfs2_start_walk_page_trans(struct inode *inode,
} }
if (ocfs2_should_order_data(inode)) { if (ocfs2_should_order_data(inode)) {
ret = walk_page_buffers(handle->k_handle, ret = walk_page_buffers(handle,
page_buffers(page), page_buffers(page),
from, to, NULL, from, to, NULL,
ocfs2_journal_dirty_data); ocfs2_journal_dirty_data);
@ -394,7 +394,7 @@ static int ocfs2_commit_write(struct file *file, struct page *page,
int ret; int ret;
struct buffer_head *di_bh = NULL; struct buffer_head *di_bh = NULL;
struct inode *inode = page->mapping->host; struct inode *inode = page->mapping->host;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct ocfs2_dinode *di; struct ocfs2_dinode *di;
mlog_entry("(0x%p, 0x%p, %u, %u)\n", file, page, from, to); mlog_entry("(0x%p, 0x%p, %u, %u)\n", file, page, from, to);

View file

@ -25,7 +25,7 @@
int ocfs2_prepare_write_nolock(struct inode *inode, struct page *page, int ocfs2_prepare_write_nolock(struct inode *inode, struct page *page,
unsigned from, unsigned to); unsigned from, unsigned to);
struct ocfs2_journal_handle *ocfs2_start_walk_page_trans(struct inode *inode, handle_t *ocfs2_start_walk_page_trans(struct inode *inode,
struct page *page, struct page *page,
unsigned from, unsigned from,
unsigned to); unsigned to);

View file

@ -340,7 +340,7 @@ int ocfs2_empty_dir(struct inode *inode)
/* returns a bh of the 1st new block in the allocation. */ /* returns a bh of the 1st new block in the allocation. */
int ocfs2_do_extend_dir(struct super_block *sb, int ocfs2_do_extend_dir(struct super_block *sb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *dir, struct inode *dir,
struct buffer_head *parent_fe_bh, struct buffer_head *parent_fe_bh,
struct ocfs2_alloc_context *data_ac, struct ocfs2_alloc_context *data_ac,
@ -398,7 +398,7 @@ static int ocfs2_extend_dir(struct ocfs2_super *osb,
struct ocfs2_dinode *fe = (struct ocfs2_dinode *) parent_fe_bh->b_data; struct ocfs2_dinode *fe = (struct ocfs2_dinode *) parent_fe_bh->b_data;
struct ocfs2_alloc_context *data_ac = NULL; struct ocfs2_alloc_context *data_ac = NULL;
struct ocfs2_alloc_context *meta_ac = NULL; struct ocfs2_alloc_context *meta_ac = NULL;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct buffer_head *new_bh = NULL; struct buffer_head *new_bh = NULL;
struct ocfs2_dir_entry * de; struct ocfs2_dir_entry * de;
struct super_block *sb = osb->sb; struct super_block *sb = osb->sb;

View file

@ -45,7 +45,7 @@ int ocfs2_prepare_dir_for_insert(struct ocfs2_super *osb,
struct buffer_head **ret_de_bh); struct buffer_head **ret_de_bh);
struct ocfs2_alloc_context; struct ocfs2_alloc_context;
int ocfs2_do_extend_dir(struct super_block *sb, int ocfs2_do_extend_dir(struct super_block *sb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *dir, struct inode *dir,
struct buffer_head *parent_fe_bh, struct buffer_head *parent_fe_bh,
struct ocfs2_alloc_context *data_ac, struct ocfs2_alloc_context *data_ac,

View file

@ -134,7 +134,7 @@ bail:
return (err < 0) ? -EIO : 0; return (err < 0) ? -EIO : 0;
} }
int ocfs2_set_inode_size(struct ocfs2_journal_handle *handle, int ocfs2_set_inode_size(handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
u64 new_i_size) u64 new_i_size)
@ -163,7 +163,7 @@ static int ocfs2_simple_size_update(struct inode *inode,
{ {
int ret; int ret;
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS); handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
if (handle == NULL) { if (handle == NULL) {
@ -188,7 +188,7 @@ static int ocfs2_orphan_for_truncate(struct ocfs2_super *osb,
u64 new_i_size) u64 new_i_size)
{ {
int status; int status;
struct ocfs2_journal_handle *handle; handle_t *handle;
mlog_entry_void(); mlog_entry_void();
@ -327,7 +327,7 @@ int ocfs2_do_extend_allocation(struct ocfs2_super *osb,
struct inode *inode, struct inode *inode,
u32 clusters_to_add, u32 clusters_to_add,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *data_ac, struct ocfs2_alloc_context *data_ac,
struct ocfs2_alloc_context *meta_ac, struct ocfs2_alloc_context *meta_ac,
enum ocfs2_alloc_restarted *reason_ret) enum ocfs2_alloc_restarted *reason_ret)
@ -432,7 +432,7 @@ static int ocfs2_extend_allocation(struct inode *inode,
u32 prev_clusters; u32 prev_clusters;
struct buffer_head *bh = NULL; struct buffer_head *bh = NULL;
struct ocfs2_dinode *fe = NULL; struct ocfs2_dinode *fe = NULL;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct ocfs2_alloc_context *data_ac = NULL; struct ocfs2_alloc_context *data_ac = NULL;
struct ocfs2_alloc_context *meta_ac = NULL; struct ocfs2_alloc_context *meta_ac = NULL;
enum ocfs2_alloc_restarted why; enum ocfs2_alloc_restarted why;
@ -552,7 +552,7 @@ restarted_transaction:
credits = ocfs2_calc_extend_credits(osb->sb, credits = ocfs2_calc_extend_credits(osb->sb,
fe, fe,
clusters_to_add); clusters_to_add);
status = ocfs2_extend_trans(handle->k_handle, credits); status = ocfs2_extend_trans(handle, credits);
if (status < 0) { if (status < 0) {
/* handle still has to be committed at /* handle still has to be committed at
* this point. */ * this point. */
@ -610,7 +610,7 @@ static int ocfs2_write_zero_page(struct inode *inode,
struct page *page; struct page *page;
unsigned long index; unsigned long index;
unsigned int offset; unsigned int offset;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
int ret; int ret;
offset = (size & (PAGE_CACHE_SIZE-1)); /* Within page */ offset = (size & (PAGE_CACHE_SIZE-1)); /* Within page */
@ -775,7 +775,7 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
struct super_block *sb = inode->i_sb; struct super_block *sb = inode->i_sb;
struct ocfs2_super *osb = OCFS2_SB(sb); struct ocfs2_super *osb = OCFS2_SB(sb);
struct buffer_head *bh = NULL; struct buffer_head *bh = NULL;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
mlog_entry("(0x%p, '%.*s')\n", dentry, mlog_entry("(0x%p, '%.*s')\n", dentry,
dentry->d_name.len, dentry->d_name.name); dentry->d_name.len, dentry->d_name.name);
@ -897,7 +897,7 @@ static int ocfs2_write_remove_suid(struct inode *inode)
int ret; int ret;
struct buffer_head *bh = NULL; struct buffer_head *bh = NULL;
struct ocfs2_inode_info *oi = OCFS2_I(inode); struct ocfs2_inode_info *oi = OCFS2_I(inode);
struct ocfs2_journal_handle *handle; handle_t *handle;
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
struct ocfs2_dinode *di; struct ocfs2_dinode *di;

View file

@ -41,7 +41,7 @@ int ocfs2_do_extend_allocation(struct ocfs2_super *osb,
struct inode *inode, struct inode *inode,
u32 clusters_to_add, u32 clusters_to_add,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *data_ac, struct ocfs2_alloc_context *data_ac,
struct ocfs2_alloc_context *meta_ac, struct ocfs2_alloc_context *meta_ac,
enum ocfs2_alloc_restarted *reason); enum ocfs2_alloc_restarted *reason);
@ -49,7 +49,7 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr);
int ocfs2_getattr(struct vfsmount *mnt, struct dentry *dentry, int ocfs2_getattr(struct vfsmount *mnt, struct dentry *dentry,
struct kstat *stat); struct kstat *stat);
int ocfs2_set_inode_size(struct ocfs2_journal_handle *handle, int ocfs2_set_inode_size(handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
u64 new_i_size); u64 new_i_size);

View file

@ -512,7 +512,7 @@ static int ocfs2_truncate_for_delete(struct ocfs2_super *osb,
struct buffer_head *fe_bh) struct buffer_head *fe_bh)
{ {
int status = 0; int status = 0;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct ocfs2_truncate_context *tc = NULL; struct ocfs2_truncate_context *tc = NULL;
struct ocfs2_dinode *fe; struct ocfs2_dinode *fe;
@ -568,7 +568,7 @@ static int ocfs2_remove_inode(struct inode *inode,
int status; int status;
struct inode *inode_alloc_inode = NULL; struct inode *inode_alloc_inode = NULL;
struct buffer_head *inode_alloc_bh = NULL; struct buffer_head *inode_alloc_bh = NULL;
struct ocfs2_journal_handle *handle; handle_t *handle;
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
struct ocfs2_dinode *di = (struct ocfs2_dinode *) di_bh->b_data; struct ocfs2_dinode *di = (struct ocfs2_dinode *) di_bh->b_data;
@ -1198,7 +1198,7 @@ bail:
* struct inode. * struct inode.
* Only takes ip_lock. * Only takes ip_lock.
*/ */
int ocfs2_mark_inode_dirty(struct ocfs2_journal_handle *handle, int ocfs2_mark_inode_dirty(handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *bh) struct buffer_head *bh)
{ {

View file

@ -136,7 +136,7 @@ ssize_t ocfs2_rw_direct(int rw, struct file *filp, char *buf,
void ocfs2_sync_blockdev(struct super_block *sb); void ocfs2_sync_blockdev(struct super_block *sb);
void ocfs2_refresh_inode(struct inode *inode, void ocfs2_refresh_inode(struct inode *inode,
struct ocfs2_dinode *fe); struct ocfs2_dinode *fe);
int ocfs2_mark_inode_dirty(struct ocfs2_journal_handle *handle, int ocfs2_mark_inode_dirty(handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *bh); struct buffer_head *bh);
int ocfs2_aio_read(struct file *file, struct kiocb *req, struct iocb *iocb); int ocfs2_aio_read(struct file *file, struct kiocb *req, struct iocb *iocb);

View file

@ -43,7 +43,7 @@ static int ocfs2_set_inode_attr(struct inode *inode, unsigned flags,
{ {
struct ocfs2_inode_info *ocfs2_inode = OCFS2_I(inode); struct ocfs2_inode_info *ocfs2_inode = OCFS2_I(inode);
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct buffer_head *bh = NULL; struct buffer_head *bh = NULL;
unsigned oldflags; unsigned oldflags;
int status; int status;

View file

@ -110,30 +110,13 @@ finally:
return status; 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 /* 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 * you pass it a handle however, it may still return error, in which
* case it has free'd the passed handle for you. */ * case it has free'd the passed handle for you. */
struct ocfs2_journal_handle *ocfs2_start_trans(struct ocfs2_super *osb, handle_t *ocfs2_start_trans(struct ocfs2_super *osb, int max_buffs)
int max_buffs)
{ {
int ret;
journal_t *journal = osb->journal->j_journal; journal_t *journal = osb->journal->j_journal;
struct ocfs2_journal_handle *handle; handle_t *handle;
BUG_ON(!osb || !osb->journal->j_journal); BUG_ON(!osb || !osb->journal->j_journal);
@ -149,77 +132,39 @@ struct ocfs2_journal_handle *ocfs2_start_trans(struct ocfs2_super *osb,
BUG(); BUG();
} }
handle = ocfs2_alloc_handle(osb);
if (!handle) {
ret = -ENOMEM;
mlog_errno(ret);
return ERR_PTR(ret);
}
down_read(&osb->journal->j_trans_barrier); down_read(&osb->journal->j_trans_barrier);
/* actually start the transaction now */ handle = journal_start(journal, max_buffs);
handle->k_handle = journal_start(journal, max_buffs); if (IS_ERR(handle)) {
if (IS_ERR(handle->k_handle)) {
up_read(&osb->journal->j_trans_barrier); up_read(&osb->journal->j_trans_barrier);
kfree(handle);
ret = PTR_ERR(handle->k_handle); mlog_errno(PTR_ERR(handle));
handle->k_handle = NULL;
mlog_errno(ret);
if (is_journal_aborted(journal)) { if (is_journal_aborted(journal)) {
ocfs2_abort(osb->sb, "Detected aborted journal"); ocfs2_abort(osb->sb, "Detected aborted journal");
ret = -EROFS; handle = ERR_PTR(-EROFS);
} }
return ERR_PTR(ret); } else
}
atomic_inc(&(osb->journal->j_num_trans)); atomic_inc(&(osb->journal->j_num_trans));
return handle; return handle;
} }
void ocfs2_commit_trans(struct ocfs2_super *osb, int ocfs2_commit_trans(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle) handle_t *handle)
{ {
handle_t *jbd_handle; int ret;
int retval;
struct ocfs2_journal *journal = osb->journal; struct ocfs2_journal *journal = osb->journal;
mlog_entry_void();
BUG_ON(!handle); BUG_ON(!handle);
if (!handle->k_handle) { ret = journal_stop(handle);
kfree(handle); if (ret < 0)
mlog_exit_void(); mlog_errno(ret);
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 */
}
up_read(&journal->j_trans_barrier); up_read(&journal->j_trans_barrier);
kfree(handle); return ret;
mlog_exit_void();
} }
/* /*
@ -268,7 +213,7 @@ bail:
return status; return status;
} }
int ocfs2_journal_access(struct ocfs2_journal_handle *handle, int ocfs2_journal_access(handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *bh, struct buffer_head *bh,
int type) int type)
@ -306,11 +251,11 @@ int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
switch (type) { switch (type) {
case OCFS2_JOURNAL_ACCESS_CREATE: case OCFS2_JOURNAL_ACCESS_CREATE:
case OCFS2_JOURNAL_ACCESS_WRITE: case OCFS2_JOURNAL_ACCESS_WRITE:
status = journal_get_write_access(handle->k_handle, bh); status = journal_get_write_access(handle, bh);
break; break;
case OCFS2_JOURNAL_ACCESS_UNDO: case OCFS2_JOURNAL_ACCESS_UNDO:
status = journal_get_undo_access(handle->k_handle, bh); status = journal_get_undo_access(handle, bh);
break; break;
default: default:
@ -327,7 +272,7 @@ int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
return status; return status;
} }
int ocfs2_journal_dirty(struct ocfs2_journal_handle *handle, int ocfs2_journal_dirty(handle_t *handle,
struct buffer_head *bh) struct buffer_head *bh)
{ {
int status; int status;
@ -335,7 +280,7 @@ int ocfs2_journal_dirty(struct ocfs2_journal_handle *handle,
mlog_entry("(bh->b_blocknr=%llu)\n", mlog_entry("(bh->b_blocknr=%llu)\n",
(unsigned long long)bh->b_blocknr); (unsigned long long)bh->b_blocknr);
status = journal_dirty_metadata(handle->k_handle, bh); status = journal_dirty_metadata(handle, bh);
if (status < 0) if (status < 0)
mlog(ML_ERROR, "Could not dirty metadata buffer. " mlog(ML_ERROR, "Could not dirty metadata buffer. "
"(bh->b_blocknr=%llu)\n", "(bh->b_blocknr=%llu)\n",

View file

@ -37,7 +37,6 @@ enum ocfs2_journal_state {
struct ocfs2_super; struct ocfs2_super;
struct ocfs2_dinode; struct ocfs2_dinode;
struct ocfs2_journal_handle;
struct ocfs2_journal { struct ocfs2_journal {
enum ocfs2_journal_state j_state; /* Journals current state */ enum ocfs2_journal_state j_state; /* Journals current state */
@ -133,10 +132,6 @@ static inline void ocfs2_inode_set_new(struct ocfs2_super *osb,
spin_unlock(&trans_inc_lock); spin_unlock(&trans_inc_lock);
} }
struct ocfs2_journal_handle {
handle_t *k_handle; /* kernel handle. */
};
/* Exported only for the journal struct init code in super.c. Do not call. */ /* Exported only for the journal struct init code in super.c. Do not call. */
void ocfs2_complete_recovery(void *data); void ocfs2_complete_recovery(void *data);
@ -200,7 +195,11 @@ static inline void ocfs2_checkpoint_inode(struct inode *inode)
* ocfs2_start_trans - Begin a transaction. Give it an upper estimate of * ocfs2_start_trans - Begin a transaction. Give it an upper estimate of
* the number of blocks that will be changed during * the number of blocks that will be changed during
* this handle. * this handle.
* ocfs2_commit_trans - Complete a handle. * ocfs2_commit_trans - Complete a handle. It might return -EIO if
* the journal was aborted. The majority of paths don't
* check the return value as an error there comes too
* late to do anything (and will be picked up in a
* later transaction).
* ocfs2_extend_trans - Extend a handle by nblocks credits. This may * ocfs2_extend_trans - Extend a handle by nblocks credits. This may
* commit the handle to disk in the process, but will * commit the handle to disk in the process, but will
* not release any locks taken during the transaction. * not release any locks taken during the transaction.
@ -215,10 +214,10 @@ static inline void ocfs2_checkpoint_inode(struct inode *inode)
/* You must always start_trans with a number of buffs > 0, but it's /* You must always start_trans with a number of buffs > 0, but it's
* perfectly legal to go through an entire transaction without having * perfectly legal to go through an entire transaction without having
* dirtied any buffers. */ * dirtied any buffers. */
struct ocfs2_journal_handle *ocfs2_start_trans(struct ocfs2_super *osb, handle_t *ocfs2_start_trans(struct ocfs2_super *osb,
int max_buffs); int max_buffs);
void ocfs2_commit_trans(struct ocfs2_super *osb, int ocfs2_commit_trans(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle); handle_t *handle);
int ocfs2_extend_trans(handle_t *handle, int nblocks); int ocfs2_extend_trans(handle_t *handle, int nblocks);
/* /*
@ -236,7 +235,7 @@ int ocfs2_extend_trans(handle_t *handle, int nblocks);
#define OCFS2_JOURNAL_ACCESS_WRITE 1 #define OCFS2_JOURNAL_ACCESS_WRITE 1
#define OCFS2_JOURNAL_ACCESS_UNDO 2 #define OCFS2_JOURNAL_ACCESS_UNDO 2
int ocfs2_journal_access(struct ocfs2_journal_handle *handle, int ocfs2_journal_access(handle_t *handle,
struct inode *inode, struct inode *inode,
struct buffer_head *bh, struct buffer_head *bh,
int type); int type);
@ -259,7 +258,7 @@ int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
* <modify the bh> * <modify the bh>
* ocfs2_journal_dirty(handle, bh); * ocfs2_journal_dirty(handle, bh);
*/ */
int ocfs2_journal_dirty(struct ocfs2_journal_handle *handle, int ocfs2_journal_dirty(handle_t *handle,
struct buffer_head *bh); struct buffer_head *bh);
int ocfs2_journal_dirty_data(handle_t *handle, int ocfs2_journal_dirty_data(handle_t *handle,
struct buffer_head *bh); struct buffer_head *bh);

View file

@ -58,7 +58,7 @@ static int ocfs2_local_alloc_find_clear_bits(struct ocfs2_super *osb,
static void ocfs2_clear_local_alloc(struct ocfs2_dinode *alloc); static void ocfs2_clear_local_alloc(struct ocfs2_dinode *alloc);
static int ocfs2_sync_local_to_main(struct ocfs2_super *osb, static int ocfs2_sync_local_to_main(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_dinode *alloc, struct ocfs2_dinode *alloc,
struct inode *main_bm_inode, struct inode *main_bm_inode,
struct buffer_head *main_bm_bh); struct buffer_head *main_bm_bh);
@ -69,7 +69,7 @@ static int ocfs2_local_alloc_reserve_for_window(struct ocfs2_super *osb,
struct buffer_head **bitmap_bh); struct buffer_head **bitmap_bh);
static int ocfs2_local_alloc_new_window(struct ocfs2_super *osb, static int ocfs2_local_alloc_new_window(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac); struct ocfs2_alloc_context *ac);
static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb, static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb,
@ -195,7 +195,7 @@ bail:
void ocfs2_shutdown_local_alloc(struct ocfs2_super *osb) void ocfs2_shutdown_local_alloc(struct ocfs2_super *osb)
{ {
int status; int status;
struct ocfs2_journal_handle *handle; handle_t *handle;
struct inode *local_alloc_inode = NULL; struct inode *local_alloc_inode = NULL;
struct buffer_head *bh = NULL; struct buffer_head *bh = NULL;
struct buffer_head *main_bm_bh = NULL; struct buffer_head *main_bm_bh = NULL;
@ -382,7 +382,7 @@ int ocfs2_complete_local_alloc_recovery(struct ocfs2_super *osb,
struct ocfs2_dinode *alloc) struct ocfs2_dinode *alloc)
{ {
int status; int status;
struct ocfs2_journal_handle *handle; handle_t *handle;
struct buffer_head *main_bm_bh = NULL; struct buffer_head *main_bm_bh = NULL;
struct inode *main_bm_inode; struct inode *main_bm_inode;
@ -414,7 +414,7 @@ int ocfs2_complete_local_alloc_recovery(struct ocfs2_super *osb,
} }
/* we want the bitmap change to be recorded on disk asap */ /* we want the bitmap change to be recorded on disk asap */
handle->k_handle->h_sync = 1; handle->h_sync = 1;
status = ocfs2_sync_local_to_main(osb, handle, alloc, status = ocfs2_sync_local_to_main(osb, handle, alloc,
main_bm_inode, main_bm_bh); main_bm_inode, main_bm_bh);
@ -521,7 +521,7 @@ bail:
} }
int ocfs2_claim_local_alloc_bits(struct ocfs2_super *osb, int ocfs2_claim_local_alloc_bits(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u32 min_bits, u32 min_bits,
u32 *bit_off, u32 *bit_off,
@ -699,7 +699,7 @@ static void ocfs2_verify_zero_bits(unsigned long *bitmap,
* passed is used for caching. * passed is used for caching.
*/ */
static int ocfs2_sync_local_to_main(struct ocfs2_super *osb, static int ocfs2_sync_local_to_main(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_dinode *alloc, struct ocfs2_dinode *alloc,
struct inode *main_bm_inode, struct inode *main_bm_inode,
struct buffer_head *main_bm_bh) struct buffer_head *main_bm_bh)
@ -811,7 +811,7 @@ bail:
* pass it the bitmap lock in lock_bh if you have it. * pass it the bitmap lock in lock_bh if you have it.
*/ */
static int ocfs2_local_alloc_new_window(struct ocfs2_super *osb, static int ocfs2_local_alloc_new_window(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac) struct ocfs2_alloc_context *ac)
{ {
int status = 0; int status = 0;
@ -878,7 +878,7 @@ static int ocfs2_local_alloc_slide_window(struct ocfs2_super *osb,
int status = 0; int status = 0;
struct buffer_head *main_bm_bh = NULL; struct buffer_head *main_bm_bh = NULL;
struct inode *main_bm_inode = NULL; struct inode *main_bm_inode = NULL;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct ocfs2_dinode *alloc; struct ocfs2_dinode *alloc;
struct ocfs2_dinode *alloc_copy = NULL; struct ocfs2_dinode *alloc_copy = NULL;
struct ocfs2_alloc_context *ac = NULL; struct ocfs2_alloc_context *ac = NULL;

View file

@ -46,7 +46,7 @@ int ocfs2_reserve_local_alloc_bits(struct ocfs2_super *osb,
struct ocfs2_alloc_context *ac); struct ocfs2_alloc_context *ac);
int ocfs2_claim_local_alloc_bits(struct ocfs2_super *osb, int ocfs2_claim_local_alloc_bits(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u32 min_bits, u32 min_bits,
u32 *bit_off, u32 *bit_off,

View file

@ -75,12 +75,12 @@ static int inline ocfs2_search_dirblock(struct buffer_head *bh,
unsigned long offset, unsigned long offset,
struct ocfs2_dir_entry **res_dir); struct ocfs2_dir_entry **res_dir);
static int ocfs2_delete_entry(struct ocfs2_journal_handle *handle, static int ocfs2_delete_entry(handle_t *handle,
struct inode *dir, struct inode *dir,
struct ocfs2_dir_entry *de_del, struct ocfs2_dir_entry *de_del,
struct buffer_head *bh); struct buffer_head *bh);
static int __ocfs2_add_entry(struct ocfs2_journal_handle *handle, static int __ocfs2_add_entry(handle_t *handle,
struct inode *dir, struct inode *dir,
const char *name, int namelen, const char *name, int namelen,
struct inode *inode, u64 blkno, struct inode *inode, u64 blkno,
@ -93,12 +93,12 @@ static int ocfs2_mknod_locked(struct ocfs2_super *osb,
dev_t dev, dev_t dev,
struct buffer_head **new_fe_bh, struct buffer_head **new_fe_bh,
struct buffer_head *parent_fe_bh, struct buffer_head *parent_fe_bh,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode **ret_inode, struct inode **ret_inode,
struct ocfs2_alloc_context *inode_ac); struct ocfs2_alloc_context *inode_ac);
static int ocfs2_fill_new_dir(struct ocfs2_super *osb, static int ocfs2_fill_new_dir(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *parent, struct inode *parent,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
@ -111,7 +111,7 @@ static int ocfs2_prepare_orphan_dir(struct ocfs2_super *osb,
struct buffer_head **de_bh); struct buffer_head **de_bh);
static int ocfs2_orphan_add(struct ocfs2_super *osb, static int ocfs2_orphan_add(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct ocfs2_dinode *fe, struct ocfs2_dinode *fe,
char *name, char *name,
@ -119,11 +119,11 @@ static int ocfs2_orphan_add(struct ocfs2_super *osb,
struct inode *orphan_dir_inode); struct inode *orphan_dir_inode);
static int ocfs2_create_symlink_data(struct ocfs2_super *osb, static int ocfs2_create_symlink_data(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
const char *symname); const char *symname);
static inline int ocfs2_add_entry(struct ocfs2_journal_handle *handle, static inline int ocfs2_add_entry(handle_t *handle,
struct dentry *dentry, struct dentry *dentry,
struct inode *inode, u64 blkno, struct inode *inode, u64 blkno,
struct buffer_head *parent_fe_bh, struct buffer_head *parent_fe_bh,
@ -236,7 +236,7 @@ bail:
} }
static int ocfs2_fill_new_dir(struct ocfs2_super *osb, static int ocfs2_fill_new_dir(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *parent, struct inode *parent,
struct inode *inode, struct inode *inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
@ -311,7 +311,7 @@ static int ocfs2_mknod(struct inode *dir,
{ {
int status = 0; int status = 0;
struct buffer_head *parent_fe_bh = NULL; struct buffer_head *parent_fe_bh = NULL;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct ocfs2_super *osb; struct ocfs2_super *osb;
struct ocfs2_dinode *dirfe; struct ocfs2_dinode *dirfe;
struct buffer_head *new_fe_bh = NULL; struct buffer_head *new_fe_bh = NULL;
@ -476,7 +476,7 @@ static int ocfs2_mknod_locked(struct ocfs2_super *osb,
dev_t dev, dev_t dev,
struct buffer_head **new_fe_bh, struct buffer_head **new_fe_bh,
struct buffer_head *parent_fe_bh, struct buffer_head *parent_fe_bh,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode **ret_inode, struct inode **ret_inode,
struct ocfs2_alloc_context *inode_ac) struct ocfs2_alloc_context *inode_ac)
{ {
@ -642,7 +642,7 @@ static int ocfs2_link(struct dentry *old_dentry,
struct inode *dir, struct inode *dir,
struct dentry *dentry) struct dentry *dentry)
{ {
struct ocfs2_journal_handle *handle; handle_t *handle;
struct inode *inode = old_dentry->d_inode; struct inode *inode = old_dentry->d_inode;
int err; int err;
struct buffer_head *fe_bh = NULL; struct buffer_head *fe_bh = NULL;
@ -807,7 +807,7 @@ static int ocfs2_unlink(struct inode *dir,
struct ocfs2_dinode *fe = NULL; struct ocfs2_dinode *fe = NULL;
struct buffer_head *fe_bh = NULL; struct buffer_head *fe_bh = NULL;
struct buffer_head *parent_node_bh = NULL; struct buffer_head *parent_node_bh = NULL;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct ocfs2_dir_entry *dirent = NULL; struct ocfs2_dir_entry *dirent = NULL;
struct buffer_head *dirent_bh = NULL; struct buffer_head *dirent_bh = NULL;
char orphan_name[OCFS2_ORPHAN_NAMELEN + 1]; char orphan_name[OCFS2_ORPHAN_NAMELEN + 1];
@ -1069,7 +1069,7 @@ static int ocfs2_rename(struct inode *old_dir,
struct buffer_head *insert_entry_bh = NULL; struct buffer_head *insert_entry_bh = NULL;
struct ocfs2_super *osb = NULL; struct ocfs2_super *osb = NULL;
u64 newfe_blkno; u64 newfe_blkno;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct buffer_head *old_dir_bh = NULL; struct buffer_head *old_dir_bh = NULL;
struct buffer_head *new_dir_bh = NULL; struct buffer_head *new_dir_bh = NULL;
struct ocfs2_dir_entry *old_de = NULL, *new_de = NULL; // dirent for old_dentry struct ocfs2_dir_entry *old_de = NULL, *new_de = NULL; // dirent for old_dentry
@ -1478,7 +1478,7 @@ bail:
* data, including the null terminator. * data, including the null terminator.
*/ */
static int ocfs2_create_symlink_data(struct ocfs2_super *osb, static int ocfs2_create_symlink_data(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
const char *symname) const char *symname)
{ {
@ -1593,7 +1593,7 @@ static int ocfs2_symlink(struct inode *dir,
struct buffer_head *parent_fe_bh = NULL; struct buffer_head *parent_fe_bh = NULL;
struct ocfs2_dinode *fe = NULL; struct ocfs2_dinode *fe = NULL;
struct ocfs2_dinode *dirfe; struct ocfs2_dinode *dirfe;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
struct ocfs2_alloc_context *inode_ac = NULL; struct ocfs2_alloc_context *inode_ac = NULL;
struct ocfs2_alloc_context *data_ac = NULL; struct ocfs2_alloc_context *data_ac = NULL;
@ -1784,7 +1784,7 @@ int ocfs2_check_dir_entry(struct inode * dir,
* If you pass me insert_bh, I'll skip the search of the other dir * If you pass me insert_bh, I'll skip the search of the other dir
* blocks and put the record in there. * blocks and put the record in there.
*/ */
static int __ocfs2_add_entry(struct ocfs2_journal_handle *handle, static int __ocfs2_add_entry(handle_t *handle,
struct inode *dir, struct inode *dir,
const char *name, int namelen, const char *name, int namelen,
struct inode *inode, u64 blkno, struct inode *inode, u64 blkno,
@ -1870,7 +1870,7 @@ bail:
* ocfs2_delete_entry deletes a directory entry by merging it with the * ocfs2_delete_entry deletes a directory entry by merging it with the
* previous entry * previous entry
*/ */
static int ocfs2_delete_entry(struct ocfs2_journal_handle *handle, static int ocfs2_delete_entry(handle_t *handle,
struct inode *dir, struct inode *dir,
struct ocfs2_dir_entry *de_del, struct ocfs2_dir_entry *de_del,
struct buffer_head *bh) struct buffer_head *bh)
@ -2159,7 +2159,7 @@ leave:
} }
static int ocfs2_orphan_add(struct ocfs2_super *osb, static int ocfs2_orphan_add(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *inode, struct inode *inode,
struct ocfs2_dinode *fe, struct ocfs2_dinode *fe,
char *name, char *name,
@ -2232,7 +2232,7 @@ leave:
/* unlike orphan_add, we expect the orphan dir to already be locked here. */ /* unlike orphan_add, we expect the orphan dir to already be locked here. */
int ocfs2_orphan_del(struct ocfs2_super *osb, int ocfs2_orphan_del(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *orphan_dir_inode, struct inode *orphan_dir_inode,
struct inode *inode, struct inode *inode,
struct buffer_head *orphan_dir_bh) struct buffer_head *orphan_dir_bh)

View file

@ -39,7 +39,7 @@ struct buffer_head *ocfs2_find_entry(const char *name,
struct inode *dir, struct inode *dir,
struct ocfs2_dir_entry **res_dir); struct ocfs2_dir_entry **res_dir);
int ocfs2_orphan_del(struct ocfs2_super *osb, int ocfs2_orphan_del(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct inode *orphan_dir_inode, struct inode *orphan_dir_inode,
struct inode *inode, struct inode *inode,
struct buffer_head *orphan_dir_bh); struct buffer_head *orphan_dir_bh);

View file

@ -34,6 +34,7 @@
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/kref.h> #include <linux/kref.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/jbd.h>
#include "cluster/nodemanager.h" #include "cluster/nodemanager.h"
#include "cluster/heartbeat.h" #include "cluster/heartbeat.h"
@ -181,7 +182,6 @@ enum ocfs2_mount_options
#define OCFS2_OSB_ERROR_FS 0x0004 #define OCFS2_OSB_ERROR_FS 0x0004
struct ocfs2_journal; struct ocfs2_journal;
struct ocfs2_journal_handle;
struct ocfs2_super struct ocfs2_super
{ {
struct task_struct *commit_task; struct task_struct *commit_task;

View file

@ -49,7 +49,7 @@
static inline void ocfs2_debug_bg(struct ocfs2_group_desc *bg); static inline void ocfs2_debug_bg(struct ocfs2_group_desc *bg);
static inline void ocfs2_debug_suballoc_inode(struct ocfs2_dinode *fe); static inline void ocfs2_debug_suballoc_inode(struct ocfs2_dinode *fe);
static inline u16 ocfs2_find_victim_chain(struct ocfs2_chain_list *cl); static inline u16 ocfs2_find_victim_chain(struct ocfs2_chain_list *cl);
static int ocfs2_block_group_fill(struct ocfs2_journal_handle *handle, static int ocfs2_block_group_fill(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct buffer_head *bg_bh, struct buffer_head *bg_bh,
u64 group_blkno, u64 group_blkno,
@ -69,7 +69,7 @@ static int ocfs2_block_group_search(struct inode *inode,
u16 *bit_off, u16 *bits_found); u16 *bit_off, u16 *bits_found);
static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb, static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
struct ocfs2_journal_handle *handle, handle_t *handle,
u32 bits_wanted, u32 bits_wanted,
u32 min_bits, u32 min_bits,
u16 *bit_off, u16 *bit_off,
@ -77,20 +77,20 @@ static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
u64 *bg_blkno); u64 *bg_blkno);
static int ocfs2_test_bg_bit_allocatable(struct buffer_head *bg_bh, static int ocfs2_test_bg_bit_allocatable(struct buffer_head *bg_bh,
int nr); int nr);
static inline int ocfs2_block_group_set_bits(struct ocfs2_journal_handle *handle, static inline int ocfs2_block_group_set_bits(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct ocfs2_group_desc *bg, struct ocfs2_group_desc *bg,
struct buffer_head *group_bh, struct buffer_head *group_bh,
unsigned int bit_off, unsigned int bit_off,
unsigned int num_bits); unsigned int num_bits);
static inline int ocfs2_block_group_clear_bits(struct ocfs2_journal_handle *handle, static inline int ocfs2_block_group_clear_bits(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct ocfs2_group_desc *bg, struct ocfs2_group_desc *bg,
struct buffer_head *group_bh, struct buffer_head *group_bh,
unsigned int bit_off, unsigned int bit_off,
unsigned int num_bits); unsigned int num_bits);
static int ocfs2_relink_block_group(struct ocfs2_journal_handle *handle, static int ocfs2_relink_block_group(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct buffer_head *bg_bh, struct buffer_head *bg_bh,
@ -98,7 +98,7 @@ static int ocfs2_relink_block_group(struct ocfs2_journal_handle *handle,
u16 chain); u16 chain);
static inline int ocfs2_block_group_reasonably_empty(struct ocfs2_group_desc *bg, static inline int ocfs2_block_group_reasonably_empty(struct ocfs2_group_desc *bg,
u32 wanted); u32 wanted);
static int ocfs2_free_suballoc_bits(struct ocfs2_journal_handle *handle, static int ocfs2_free_suballoc_bits(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct buffer_head *alloc_bh, struct buffer_head *alloc_bh,
unsigned int start_bit, unsigned int start_bit,
@ -196,7 +196,7 @@ static int ocfs2_check_group_descriptor(struct super_block *sb,
return 0; return 0;
} }
static int ocfs2_block_group_fill(struct ocfs2_journal_handle *handle, static int ocfs2_block_group_fill(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct buffer_head *bg_bh, struct buffer_head *bg_bh,
u64 group_blkno, u64 group_blkno,
@ -279,7 +279,7 @@ static int ocfs2_block_group_alloc(struct ocfs2_super *osb,
struct ocfs2_dinode *fe = (struct ocfs2_dinode *) bh->b_data; struct ocfs2_dinode *fe = (struct ocfs2_dinode *) bh->b_data;
struct ocfs2_chain_list *cl; struct ocfs2_chain_list *cl;
struct ocfs2_alloc_context *ac = NULL; struct ocfs2_alloc_context *ac = NULL;
struct ocfs2_journal_handle *handle = NULL; handle_t *handle = NULL;
u32 bit_off, num_bits; u32 bit_off, num_bits;
u16 alloc_rec; u16 alloc_rec;
u64 bg_blkno; u64 bg_blkno;
@ -747,7 +747,7 @@ static int ocfs2_block_group_find_clear_bits(struct ocfs2_super *osb,
return status; return status;
} }
static inline int ocfs2_block_group_set_bits(struct ocfs2_journal_handle *handle, static inline int ocfs2_block_group_set_bits(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct ocfs2_group_desc *bg, struct ocfs2_group_desc *bg,
struct buffer_head *group_bh, struct buffer_head *group_bh,
@ -818,7 +818,7 @@ static inline u16 ocfs2_find_victim_chain(struct ocfs2_chain_list *cl)
return best; return best;
} }
static int ocfs2_relink_block_group(struct ocfs2_journal_handle *handle, static int ocfs2_relink_block_group(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct buffer_head *fe_bh, struct buffer_head *fe_bh,
struct buffer_head *bg_bh, struct buffer_head *bg_bh,
@ -998,7 +998,7 @@ static int ocfs2_block_group_search(struct inode *inode,
} }
static int ocfs2_alloc_dinode_update_counts(struct inode *inode, static int ocfs2_alloc_dinode_update_counts(struct inode *inode,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct buffer_head *di_bh, struct buffer_head *di_bh,
u32 num_bits, u32 num_bits,
u16 chain) u16 chain)
@ -1028,7 +1028,7 @@ out:
} }
static int ocfs2_search_one_group(struct ocfs2_alloc_context *ac, static int ocfs2_search_one_group(struct ocfs2_alloc_context *ac,
struct ocfs2_journal_handle *handle, handle_t *handle,
u32 bits_wanted, u32 bits_wanted,
u32 min_bits, u32 min_bits,
u16 *bit_off, u16 *bit_off,
@ -1088,7 +1088,7 @@ out:
} }
static int ocfs2_search_chain(struct ocfs2_alloc_context *ac, static int ocfs2_search_chain(struct ocfs2_alloc_context *ac,
struct ocfs2_journal_handle *handle, handle_t *handle,
u32 bits_wanted, u32 bits_wanted,
u32 min_bits, u32 min_bits,
u16 *bit_off, u16 *bit_off,
@ -1245,7 +1245,7 @@ bail:
/* will give out up to bits_wanted contiguous bits. */ /* will give out up to bits_wanted contiguous bits. */
static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb, static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
struct ocfs2_journal_handle *handle, handle_t *handle,
u32 bits_wanted, u32 bits_wanted,
u32 min_bits, u32 min_bits,
u16 *bit_off, u16 *bit_off,
@ -1362,7 +1362,7 @@ bail:
} }
int ocfs2_claim_metadata(struct ocfs2_super *osb, int ocfs2_claim_metadata(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u32 bits_wanted, u32 bits_wanted,
u16 *suballoc_bit_start, u16 *suballoc_bit_start,
@ -1399,7 +1399,7 @@ bail:
} }
int ocfs2_claim_new_inode(struct ocfs2_super *osb, int ocfs2_claim_new_inode(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u16 *suballoc_bit, u16 *suballoc_bit,
u64 *fe_blkno) u64 *fe_blkno)
@ -1502,7 +1502,7 @@ static inline void ocfs2_block_to_cluster_group(struct inode *inode,
* of any size. * of any size.
*/ */
int ocfs2_claim_clusters(struct ocfs2_super *osb, int ocfs2_claim_clusters(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u32 min_clusters, u32 min_clusters,
u32 *cluster_start, u32 *cluster_start,
@ -1572,7 +1572,7 @@ bail:
return status; return status;
} }
static inline int ocfs2_block_group_clear_bits(struct ocfs2_journal_handle *handle, static inline int ocfs2_block_group_clear_bits(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct ocfs2_group_desc *bg, struct ocfs2_group_desc *bg,
struct buffer_head *group_bh, struct buffer_head *group_bh,
@ -1627,7 +1627,7 @@ bail:
/* /*
* expects the suballoc inode to already be locked. * expects the suballoc inode to already be locked.
*/ */
static int ocfs2_free_suballoc_bits(struct ocfs2_journal_handle *handle, static int ocfs2_free_suballoc_bits(handle_t *handle,
struct inode *alloc_inode, struct inode *alloc_inode,
struct buffer_head *alloc_bh, struct buffer_head *alloc_bh,
unsigned int start_bit, unsigned int start_bit,
@ -1711,7 +1711,7 @@ static inline u64 ocfs2_which_suballoc_group(u64 block, unsigned int bit)
return group; return group;
} }
int ocfs2_free_dinode(struct ocfs2_journal_handle *handle, int ocfs2_free_dinode(handle_t *handle,
struct inode *inode_alloc_inode, struct inode *inode_alloc_inode,
struct buffer_head *inode_alloc_bh, struct buffer_head *inode_alloc_bh,
struct ocfs2_dinode *di) struct ocfs2_dinode *di)
@ -1724,7 +1724,7 @@ int ocfs2_free_dinode(struct ocfs2_journal_handle *handle,
inode_alloc_bh, bit, bg_blkno, 1); inode_alloc_bh, bit, bg_blkno, 1);
} }
int ocfs2_free_extent_block(struct ocfs2_journal_handle *handle, int ocfs2_free_extent_block(handle_t *handle,
struct inode *eb_alloc_inode, struct inode *eb_alloc_inode,
struct buffer_head *eb_alloc_bh, struct buffer_head *eb_alloc_bh,
struct ocfs2_extent_block *eb) struct ocfs2_extent_block *eb)
@ -1737,7 +1737,7 @@ int ocfs2_free_extent_block(struct ocfs2_journal_handle *handle,
bit, bg_blkno, 1); bit, bg_blkno, 1);
} }
int ocfs2_free_clusters(struct ocfs2_journal_handle *handle, int ocfs2_free_clusters(handle_t *handle,
struct inode *bitmap_inode, struct inode *bitmap_inode,
struct buffer_head *bitmap_bh, struct buffer_head *bitmap_bh,
u64 start_blk, u64 start_blk,

View file

@ -68,33 +68,33 @@ int ocfs2_reserve_clusters(struct ocfs2_super *osb,
struct ocfs2_alloc_context **ac); struct ocfs2_alloc_context **ac);
int ocfs2_claim_metadata(struct ocfs2_super *osb, int ocfs2_claim_metadata(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u32 bits_wanted, u32 bits_wanted,
u16 *suballoc_bit_start, u16 *suballoc_bit_start,
u32 *num_bits, u32 *num_bits,
u64 *blkno_start); u64 *blkno_start);
int ocfs2_claim_new_inode(struct ocfs2_super *osb, int ocfs2_claim_new_inode(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u16 *suballoc_bit, u16 *suballoc_bit,
u64 *fe_blkno); u64 *fe_blkno);
int ocfs2_claim_clusters(struct ocfs2_super *osb, int ocfs2_claim_clusters(struct ocfs2_super *osb,
struct ocfs2_journal_handle *handle, handle_t *handle,
struct ocfs2_alloc_context *ac, struct ocfs2_alloc_context *ac,
u32 min_clusters, u32 min_clusters,
u32 *cluster_start, u32 *cluster_start,
u32 *num_clusters); u32 *num_clusters);
int ocfs2_free_dinode(struct ocfs2_journal_handle *handle, int ocfs2_free_dinode(handle_t *handle,
struct inode *inode_alloc_inode, struct inode *inode_alloc_inode,
struct buffer_head *inode_alloc_bh, struct buffer_head *inode_alloc_bh,
struct ocfs2_dinode *di); struct ocfs2_dinode *di);
int ocfs2_free_extent_block(struct ocfs2_journal_handle *handle, int ocfs2_free_extent_block(handle_t *handle,
struct inode *eb_alloc_inode, struct inode *eb_alloc_inode,
struct buffer_head *eb_alloc_bh, struct buffer_head *eb_alloc_bh,
struct ocfs2_extent_block *eb); struct ocfs2_extent_block *eb);
int ocfs2_free_clusters(struct ocfs2_journal_handle *handle, int ocfs2_free_clusters(handle_t *handle,
struct inode *bitmap_inode, struct inode *bitmap_inode,
struct buffer_head *bitmap_bh, struct buffer_head *bitmap_bh,
u64 start_blk, u64 start_blk,