summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/file.c
diff options
context:
space:
mode:
authorYan Zheng <zheng.yan@oracle.com>2009-01-06 09:58:06 -0500
committerChris Mason <chris.mason@oracle.com>2009-01-06 09:58:06 -0500
commit180591bcfed1a2cec048abb21d3dab840625caab (patch)
tree9bd247570ef8f3ed33afcb25bb365ccd707c8a73 /fs/btrfs/file.c
parent9ca03b997f71787e345951e6267fbd8eba14d49f (diff)
downloadblackbird-obmc-linux-180591bcfed1a2cec048abb21d3dab840625caab.tar.gz
blackbird-obmc-linux-180591bcfed1a2cec048abb21d3dab840625caab.zip
Btrfs: Use btrfs_join_transaction to avoid deadlocks during snapshot creation
Snapshot creation happens at a specific time during transaction commit. We need to make sure the code called by snapshot creation doesn't wait for the running transaction to commit. This changes btrfs_delete_inode and finish_pending_snaps to use btrfs_join_transaction instead of btrfs_start_transaction to avoid deadlocks. It would be better if btrfs_delete_inode didn't use the join, but the call path that triggers it is: btrfs_commit_transaction->create_pending_snapshots-> create_pending_snapshot->btrfs_lookup_dentry-> fixup_tree_root_location->btrfs_read_fs_root-> btrfs_read_fs_root_no_name->btrfs_orphan_cleanup->iput This will be fixed in a later patch by moving the orphan cleanup to the cleaner thread. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/file.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud