summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/file.c
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fusionio.com>2013-09-12 22:58:28 +0200
committerChris Mason <chris.mason@fusionio.com>2013-09-21 17:05:26 +0200
commit652f25a2921eb32a3e6f88aed3c59b494c1287c4 (patch)
treebb7d2dc93f26e9f8cefe00b590304755a07558eb /fs/btrfs/file.c
parentBtrfs: drop dir i_size when adding new names on replay (diff)
downloadlinux-652f25a2921eb32a3e6f88aed3c59b494c1287c4.tar.xz
linux-652f25a2921eb32a3e6f88aed3c59b494c1287c4.zip
Btrfs: improve replacing nocow extents
Various people have hit a deadlock when running btrfs/011. This is because when replacing nocow extents we will take the i_mutex to make sure nobody messes with the file while we are replacing the extent. The problem is we are already holding a transaction open, which is a locking inversion, so instead we need to save these inodes we find and then process them outside of the transaction. Further we can't just lock the inode and assume we are good to go. We need to lock the extent range and then read back the extent cache for the inode to make sure the extent really still points at the physical block we want. If it doesn't we don't have to copy it. Thanks, Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs/btrfs/file.c')
0 files changed, 0 insertions, 0 deletions