kernel.patches/3.2.34/patches.suse/btrfs-8024-workaround-for-cleaner-deadlock.patch
2012-11-24 17:08:51 +01:00

33 lines
983 B
Diff

From: David Sterba <dsterba@suse.cz>
Date: Thu, 15 Dec 2011 02:10:55 +0100
Patch-mainline: pending
References: FATE#306586
Subject: [PATCH] btrfs: workaround for cleaner deadlock
Signed-off-by: David Sterba <dsterba@suse.cz>
---
fs/btrfs/disk-io.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 3f9d555..12d785b 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -1572,11 +1572,13 @@ static int cleaner_kthread(void *arg)
vfs_check_frozen(root->fs_info->sb, SB_FREEZE_WRITE);
if (!(root->fs_info->sb->s_flags & MS_RDONLY) &&
+ down_read_trylock(&root->fs_info->sb->s_umount) &&
mutex_trylock(&root->fs_info->cleaner_mutex)) {
btrfs_run_delayed_iputs(root);
btrfs_clean_old_snapshots(root);
mutex_unlock(&root->fs_info->cleaner_mutex);
btrfs_run_defrag_inodes(root->fs_info);
+ up_read(&root->fs_info->sb->s_umount);
}
if (freezing(current)) {
--
1.7.7.3