提交 8d5bf1cb 编写于 作者: C Chris Mason

Btrfs: Update the highest objectid in a root after log replay is done

Signed-off-by: NChris Mason <chris.mason@oracle.com>
上级 4bef0848
...@@ -2239,9 +2239,10 @@ static int btrfs_set_inode_index(struct inode *dir, struct inode *inode, ...@@ -2239,9 +2239,10 @@ static int btrfs_set_inode_index(struct inode *dir, struct inode *inode,
if (BTRFS_I(dir)->index_cnt == (u64)-1) { if (BTRFS_I(dir)->index_cnt == (u64)-1) {
ret = btrfs_set_inode_index_count(dir); ret = btrfs_set_inode_index_count(dir);
if (ret) if (ret) {
return ret; return ret;
} }
}
*index = BTRFS_I(dir)->index_cnt; *index = BTRFS_I(dir)->index_cnt;
BTRFS_I(dir)->index_cnt++; BTRFS_I(dir)->index_cnt++;
......
...@@ -1027,6 +1027,7 @@ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans, ...@@ -1027,6 +1027,7 @@ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans,
inode->i_nlink = nlink; inode->i_nlink = nlink;
btrfs_update_inode(trans, root, inode); btrfs_update_inode(trans, root, inode);
} }
BTRFS_I(inode)->index_cnt = (u64)-1;
return 0; return 0;
} }
...@@ -2714,6 +2715,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree) ...@@ -2714,6 +2715,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
struct btrfs_key tmp_key; struct btrfs_key tmp_key;
struct btrfs_root *log; struct btrfs_root *log;
struct btrfs_fs_info *fs_info = log_root_tree->fs_info; struct btrfs_fs_info *fs_info = log_root_tree->fs_info;
u64 highest_inode;
struct walk_control wc = { struct walk_control wc = {
.process_func = process_one_buffer, .process_func = process_one_buffer,
.stage = 0, .stage = 0,
...@@ -2772,6 +2774,11 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree) ...@@ -2772,6 +2774,11 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
path); path);
BUG_ON(ret); BUG_ON(ret);
} }
ret = btrfs_find_highest_inode(wc.replay_dest, &highest_inode);
if (ret == 0) {
wc.replay_dest->highest_inode = highest_inode;
wc.replay_dest->last_inode_alloc = highest_inode;
}
key.offset = found_key.offset - 1; key.offset = found_key.offset - 1;
free_extent_buffer(log->node); free_extent_buffer(log->node);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册