diff options
-rw-r--r-- | fs/btrfs/ctree.h | 7 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 1 | ||||
-rw-r--r-- | fs/btrfs/ordered-data.c | 4 |
3 files changed, 10 insertions, 2 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 0632832d4446..063e48587126 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -1413,6 +1413,13 @@ struct btrfs_fs_info { | |||
1413 | * before jumping into the main commit. | 1413 | * before jumping into the main commit. |
1414 | */ | 1414 | */ |
1415 | struct mutex ordered_operations_mutex; | 1415 | struct mutex ordered_operations_mutex; |
1416 | |||
1417 | /* | ||
1418 | * Same as ordered_operations_mutex except this is for ordered extents | ||
1419 | * and not the operations. | ||
1420 | */ | ||
1421 | struct mutex ordered_extent_flush_mutex; | ||
1422 | |||
1416 | struct rw_semaphore extent_commit_sem; | 1423 | struct rw_semaphore extent_commit_sem; |
1417 | 1424 | ||
1418 | struct rw_semaphore cleanup_work_sem; | 1425 | struct rw_semaphore cleanup_work_sem; |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 572e21eb644c..68391ecf2c59 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -2277,6 +2277,7 @@ int open_ctree(struct super_block *sb, | |||
2277 | 2277 | ||
2278 | 2278 | ||
2279 | mutex_init(&fs_info->ordered_operations_mutex); | 2279 | mutex_init(&fs_info->ordered_operations_mutex); |
2280 | mutex_init(&fs_info->ordered_extent_flush_mutex); | ||
2280 | mutex_init(&fs_info->tree_log_mutex); | 2281 | mutex_init(&fs_info->tree_log_mutex); |
2281 | mutex_init(&fs_info->chunk_mutex); | 2282 | mutex_init(&fs_info->chunk_mutex); |
2282 | mutex_init(&fs_info->transaction_kthread_mutex); | 2283 | mutex_init(&fs_info->transaction_kthread_mutex); |
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index 81369827e514..b52b2c4010c2 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c | |||
@@ -671,7 +671,7 @@ int btrfs_run_ordered_operations(struct btrfs_trans_handle *trans, | |||
671 | INIT_LIST_HEAD(&splice); | 671 | INIT_LIST_HEAD(&splice); |
672 | INIT_LIST_HEAD(&works); | 672 | INIT_LIST_HEAD(&works); |
673 | 673 | ||
674 | mutex_lock(&root->fs_info->ordered_operations_mutex); | 674 | mutex_lock(&root->fs_info->ordered_extent_flush_mutex); |
675 | spin_lock(&root->fs_info->ordered_root_lock); | 675 | spin_lock(&root->fs_info->ordered_root_lock); |
676 | list_splice_init(&cur_trans->ordered_operations, &splice); | 676 | list_splice_init(&cur_trans->ordered_operations, &splice); |
677 | while (!list_empty(&splice)) { | 677 | while (!list_empty(&splice)) { |
@@ -718,7 +718,7 @@ out: | |||
718 | list_del_init(&work->list); | 718 | list_del_init(&work->list); |
719 | btrfs_wait_and_free_delalloc_work(work); | 719 | btrfs_wait_and_free_delalloc_work(work); |
720 | } | 720 | } |
721 | mutex_unlock(&root->fs_info->ordered_operations_mutex); | 721 | mutex_unlock(&root->fs_info->ordered_extent_flush_mutex); |
722 | return ret; | 722 | return ret; |
723 | } | 723 | } |
724 | 724 | ||