From 7affe49abfa917daaffd30935a868ef72ece0c38 Mon Sep 17 00:00:00 2001 From: Yan Zheng Date: Tue, 28 Jul 2009 08:41:57 -0400 Subject: [PATCH] --- yaml --- r: 155928 b: refs/heads/master c: f25784b35f590c81d5fb8245a8cd45e1afb6f1b2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/disk-io.c | 3 +++ trunk/fs/btrfs/extent-tree.c | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index ec9d4e98f0bb..e52343cf91c4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 68b38550ddbea13d296184bf69edff387618b1d3 +refs/heads/master: f25784b35f590c81d5fb8245a8cd45e1afb6f1b2 diff --git a/trunk/fs/btrfs/disk-io.c b/trunk/fs/btrfs/disk-io.c index c658397c7473..3a9b88759880 100644 --- a/trunk/fs/btrfs/disk-io.c +++ b/trunk/fs/btrfs/disk-io.c @@ -2317,6 +2317,9 @@ int close_ctree(struct btrfs_root *root) printk(KERN_ERR "btrfs: commit super ret %d\n", ret); } + fs_info->closing = 2; + smp_mb(); + if (fs_info->delalloc_bytes) { printk(KERN_INFO "btrfs: at unmount delalloc count %llu\n", (unsigned long long)fs_info->delalloc_bytes); diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 08188f1615d9..fadf69a2764b 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -288,8 +288,10 @@ static int caching_kthread(void *data) while (1) { smp_mb(); - if (block_group->fs_info->closing) + if (block_group->fs_info->closing > 1) { + last = (u64)-1; break; + } leaf = path->nodes[0]; slot = path->slots[0];