From patchwork Thu Nov 26 09:31:11 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zheng" X-Patchwork-Id: 63102 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id nAQ9W0PQ030345 for ; Thu, 26 Nov 2009 09:32:00 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758609AbZKZJbk (ORCPT ); Thu, 26 Nov 2009 04:31:40 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754500AbZKZJbj (ORCPT ); Thu, 26 Nov 2009 04:31:39 -0500 Received: from acsinet11.oracle.com ([141.146.126.233]:21150 "EHLO acsinet11.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754413AbZKZJbh (ORCPT ); Thu, 26 Nov 2009 04:31:37 -0500 Received: from rgminet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by acsinet11.oracle.com (Switch-3.3.1/Switch-3.3.1) with ESMTP id nAQ9WigL012500 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 26 Nov 2009 09:32:45 GMT Received: from acsmt354.oracle.com (acsmt354.oracle.com [141.146.40.154]) by rgminet15.oracle.com (Switch-3.3.1/Switch-3.3.1) with ESMTP id nAQ0LVIF007954 for ; Thu, 26 Nov 2009 09:31:45 GMT Received: from abhmt019.oracle.com by acsmt357.oracle.com with ESMTP id 625501201259227878; Thu, 26 Nov 2009 03:31:18 -0600 Received: from [10.182.120.231] (/10.182.120.231) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 26 Nov 2009 01:31:17 -0800 Message-ID: <4B0E4ADF.90609@oracle.com> Date: Thu, 26 Nov 2009 17:31:11 +0800 From: "Yan, Zheng" User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4pre) Gecko/20090922 Fedora/3.0-3.9.b4.fc12 Thunderbird/3.0b4 MIME-Version: 1.0 To: linux-btrfs@vger.kernel.org, chris Mason Subject: [PATCH] Btrfs: don't add extent 0 to the free space cache v2 X-Source-IP: acsmt354.oracle.com [141.146.40.154] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090205.4B0E4AFC.0165:SCFMA4539814,ss=1,fgs=0 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org diff -urp 1/fs/btrfs/extent-tree.c 2/fs/btrfs/extent-tree.c --- 1/fs/btrfs/extent-tree.c 2009-11-26 17:09:43.903551612 +0800 +++ 2/fs/btrfs/extent-tree.c 2009-11-26 17:14:11.898800726 +0800 @@ -195,6 +195,14 @@ static int exclude_super_stripes(struct int stripe_len; int i, nr, ret; + if (cache->key.objectid < BTRFS_SUPER_INFO_OFFSET) { + stripe_len = BTRFS_SUPER_INFO_OFFSET - cache->key.objectid; + cache->bytes_super += stripe_len; + ret = add_excluded_extent(root, cache->key.objectid, + stripe_len); + BUG_ON(ret); + } + for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) { bytenr = btrfs_sb_offset(i); ret = btrfs_rmap_block(&root->fs_info->mapping_tree, @@ -255,7 +263,7 @@ static u64 add_new_free_space(struct btr if (ret) break; - if (extent_start == start) { + if (extent_start <= start) { start = extent_end + 1; } else if (extent_start > start && extent_start < end) { size = extent_start - start;