]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
Btrfs: fix unexpected -EEXIST when creating new inode
authorLiu Bo <bo.li.liu@oracle.com>
Thu, 25 Jan 2018 18:02:56 +0000 (11:02 -0700)
committerSasha Levin <alexander.levin@microsoft.com>
Sun, 4 Mar 2018 15:28:23 +0000 (10:28 -0500)
commit2362f4fd76febc3145c5c86a6f3a79cafb9a1777
treeacd37b3bd14ea83c01392dc616a72372fbb7e557
parent1b555cf3a4d7404c659606606b873e5a5786ea6e
Btrfs: fix unexpected -EEXIST when creating new inode

[ Upstream commit 900c9981680067573671ecc5cbfa7c5770be3a40 ]

The highest objectid, which is assigned to new inode, is decided at
the time of initializing fs roots.  However, in cases where log replay
gets processed, the btree which fs root owns might be changed, so we
have to search it again for the highest objectid, otherwise creating
new inode would end up with -EEXIST.

cc: <stable@vger.kernel.org> v4.4-rc6+
Fixes: f32e48e92596 ("Btrfs: Initialize btrfs_root->highest_objectid when loading tree root and subvolume roots")
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
fs/btrfs/tree-log.c