Btrfs: Update the highest objectid in a root after log replay is done
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
@@ -2239,8 +2239,9 @@ 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;
|
||||||
|
@@ -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)
|
|||||||
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 @@ again:
|
|||||||
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);
|
||||||
|
Reference in New Issue
Block a user