mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
ocfs2: Abstract caching info checkpoint.
In meta downconvert, we need to checkpoint the metadata in an inode. For refcount tree, we also need it. So abstract the process out. Signed-off-by: Tao Ma <tao.ma@oracle.com>
This commit is contained in:
parent
f2c870e3b1
commit
a433848132
@ -3495,11 +3495,11 @@ out:
|
||||
return UNBLOCK_CONTINUE;
|
||||
}
|
||||
|
||||
static int ocfs2_check_meta_downconvert(struct ocfs2_lock_res *lockres,
|
||||
int new_level)
|
||||
static int ocfs2_ci_checkpointed(struct ocfs2_caching_info *ci,
|
||||
struct ocfs2_lock_res *lockres,
|
||||
int new_level)
|
||||
{
|
||||
struct inode *inode = ocfs2_lock_res_inode(lockres);
|
||||
int checkpointed = ocfs2_ci_fully_checkpointed(INODE_CACHE(inode));
|
||||
int checkpointed = ocfs2_ci_fully_checkpointed(ci);
|
||||
|
||||
BUG_ON(new_level != DLM_LOCK_NL && new_level != DLM_LOCK_PR);
|
||||
BUG_ON(lockres->l_level != DLM_LOCK_EX && !checkpointed);
|
||||
@ -3507,10 +3507,18 @@ static int ocfs2_check_meta_downconvert(struct ocfs2_lock_res *lockres,
|
||||
if (checkpointed)
|
||||
return 1;
|
||||
|
||||
ocfs2_start_checkpoint(OCFS2_SB(inode->i_sb));
|
||||
ocfs2_start_checkpoint(OCFS2_SB(ocfs2_metadata_cache_get_super(ci)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ocfs2_check_meta_downconvert(struct ocfs2_lock_res *lockres,
|
||||
int new_level)
|
||||
{
|
||||
struct inode *inode = ocfs2_lock_res_inode(lockres);
|
||||
|
||||
return ocfs2_ci_checkpointed(INODE_CACHE(inode), lockres, new_level);
|
||||
}
|
||||
|
||||
static void ocfs2_set_meta_lvb(struct ocfs2_lock_res *lockres)
|
||||
{
|
||||
struct inode *inode = ocfs2_lock_res_inode(lockres);
|
||||
|
Loading…
Reference in New Issue
Block a user