|
@@ -1801,7 +1801,10 @@ static int cleaner_kthread(void *arg)
|
|
|
goto sleep;
|
|
|
}
|
|
|
|
|
|
+ mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex);
|
|
|
btrfs_run_delayed_iputs(root);
|
|
|
+ mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex);
|
|
|
+
|
|
|
again = btrfs_clean_one_deleted_snapshot(root);
|
|
|
mutex_unlock(&root->fs_info->cleaner_mutex);
|
|
|
|
|
@@ -2571,8 +2574,8 @@ int open_ctree(struct super_block *sb,
|
|
|
mutex_init(&fs_info->delete_unused_bgs_mutex);
|
|
|
mutex_init(&fs_info->reloc_mutex);
|
|
|
mutex_init(&fs_info->delalloc_root_mutex);
|
|
|
+ mutex_init(&fs_info->cleaner_delayed_iput_mutex);
|
|
|
seqlock_init(&fs_info->profiles_lock);
|
|
|
- init_rwsem(&fs_info->delayed_iput_sem);
|
|
|
|
|
|
INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots);
|
|
|
INIT_LIST_HEAD(&fs_info->space_info);
|