Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d5bf1cb authored by Chris Mason's avatar Chris Mason
Browse files

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

parent 4bef0848
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -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++;
+7 −0
Original line number Original line Diff line number Diff line
@@ -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 @@ 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);