Loading fs/btrfs/inode.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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++; Loading fs/btrfs/tree-log.c +7 −0 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading Loading @@ -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, Loading Loading @@ -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); Loading Loading
fs/btrfs/inode.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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++; Loading
fs/btrfs/tree-log.c +7 −0 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading Loading @@ -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, Loading Loading @@ -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); Loading