From patchwork Wed Dec 1 20:03:13 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josef Bacik X-Patchwork-Id: 372401 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oB1K3LfY020502 for ; Wed, 1 Dec 2010 20:03:21 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756353Ab0LAUDR (ORCPT ); Wed, 1 Dec 2010 15:03:17 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42372 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753899Ab0LAUDR (ORCPT ); Wed, 1 Dec 2010 15:03:17 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oB1K3ExB027049 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 1 Dec 2010 15:03:14 -0500 Received: from localhost.localdomain (vpn-10-202.rdu.redhat.com [10.11.10.202]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id oB1K3Dfo009631; Wed, 1 Dec 2010 15:03:13 -0500 Date: Wed, 1 Dec 2010 15:03:13 -0500 From: Josef Bacik To: Johannes Hirte Cc: Josef Bacik , linux-btrfs@vger.kernel.org Subject: Re: disk space caching generation missmatch Message-ID: <20101201200312.GF7021@localhost.localdomain> References: <201012011746.14458.johannes.hirte@fem.tu-ilmenau.de> <20101201174018.GB7021@localhost.localdomain> <201012012056.14517.johannes.hirte@fem.tu-ilmenau.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <201012012056.14517.johannes.hirte@fem.tu-ilmenau.de> User-Agent: Mutt/1.5.19 (2009-01-05) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Wed, 01 Dec 2010 20:03:21 +0000 (UTC) diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 87aae66..4fd5659 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -2794,13 +2794,17 @@ again: if (i_size_read(inode) > 0) { ret = btrfs_truncate_free_space_cache(root, trans, path, inode); - if (ret) + if (ret) { + printk(KERN_ERR "truncate free space cache failed for %llu, %d\n", + block_group->key.objectid, ret); goto out_put; + } } spin_lock(&block_group->lock); if (block_group->cached != BTRFS_CACHE_FINISHED) { spin_unlock(&block_group->lock); + printk(KERN_ERR "block group %llu not cached\n", block_group->key.objectid); goto out_put; } spin_unlock(&block_group->lock); @@ -2820,8 +2824,10 @@ again: num_pages *= PAGE_CACHE_SIZE; ret = btrfs_check_data_free_space(inode, num_pages); - if (ret) + if (ret) { + printk(KERN_ERR "not enough free space for cache %llu\n", block_group->key.objectid); goto out_put; + } ret = btrfs_prealloc_file_range_trans(inode, trans, 0, 0, num_pages, num_pages, num_pages, diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index 22ee0dc..0078172 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c @@ -511,6 +511,8 @@ int btrfs_write_out_cache(struct btrfs_root *root, spin_lock(&block_group->lock); if (block_group->disk_cache_state < BTRFS_DC_SETUP) { spin_unlock(&block_group->lock); + printk(KERN_ERR "block group %llu, wrong dcs %d\n", block_group->key.objectid, + block_group->disk_cache_state); return 0; } spin_unlock(&block_group->lock); @@ -520,6 +522,7 @@ int btrfs_write_out_cache(struct btrfs_root *root, return 0; if (!i_size_read(inode)) { + printk(KERN_ERR "no allocated space for block group %llu\n", block_group->key.objectid); iput(inode); return 0; } @@ -771,6 +774,7 @@ out_free: block_group->disk_cache_state = BTRFS_DC_ERROR; spin_unlock(&block_group->lock); BTRFS_I(inode)->generation = 0; + printk(KERN_ERR "problem writing out block group cache for %llu\n", block_group->key.objectid); } kfree(checksums); btrfs_update_inode(trans, root, inode);