From 375faafc23e6d07429bbda9ba532dd6cb133aed5 Mon Sep 17 00:00:00 2001 From: Liu Bo Date: Thu, 16 Feb 2012 18:34:39 +0800 Subject: [PATCH] --- yaml --- r: 287897 b: refs/heads/master c: d9b0218f6cb682aa6a4ada2bfc5a25fdf3018563 h: refs/heads/master i: 287895: e332125a89aa65f3601de55a2948abd769c4d277 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/extent-tree.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 087222d97750..f54d97aa283a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9d47c7671dc555e198c7347a173ed37316e0c4c1 +refs/heads/master: d9b0218f6cb682aa6a4ada2bfc5a25fdf3018563 diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 60bfe2d68547..dc083f55bcfd 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -3611,12 +3611,15 @@ static int may_commit_transaction(struct btrfs_root *root, if (space_info != delayed_rsv->space_info) return -ENOSPC; + spin_lock(&space_info->lock); spin_lock(&delayed_rsv->lock); - if (delayed_rsv->size < bytes) { + if (space_info->bytes_pinned + delayed_rsv->size < bytes) { spin_unlock(&delayed_rsv->lock); + spin_unlock(&space_info->lock); return -ENOSPC; } spin_unlock(&delayed_rsv->lock); + spin_unlock(&space_info->lock); commit: trans = btrfs_join_transaction(root);