* [PATCH] Btrfs: don't save the inode cache if we are deleting this root
@ 2011-05-31 19:33 Josef Bacik
2011-06-01 14:56 ` David Sterba
0 siblings, 1 reply; 2+ messages in thread
From: Josef Bacik @ 2011-05-31 19:33 UTC (permalink / raw)
To: linux-btrfs, lizf, chris.mason
With xfstest 254 I can panic the box every time with the inode number caching
stuff on. This is because we clean the inodes out when we delete the subvolume,
but then we write out the inode cache which adds an inode to the subvolume inode
tree, and then when it gets evicted again the root gets added back on the dead
roots list and is deleted again, so we have a double free. To stop this from
happening just return 0 if refs is 0 (and we're not the tree root since tree
root always has refs of 0). With this fix 254 no longer panics. Thanks,
Signed-off-by: Josef Bacik <josef@redhat.com>
---
fs/btrfs/inode-map.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/fs/btrfs/inode-map.c b/fs/btrfs/inode-map.c
index 3262cd1..2835375 100644
--- a/fs/btrfs/inode-map.c
+++ b/fs/btrfs/inode-map.c
@@ -388,6 +388,11 @@ int btrfs_save_ino_cache(struct btrfs_root *root,
int prealloc;
bool retry = false;
+ /* Don't save inode cache if we are deleting this root */
+ if (btrfs_root_refs(&root->root_item) == 0 &&
+ root != root->fs_info->tree_root)
+ return 0;
+
path = btrfs_alloc_path();
if (!path)
return -ENOMEM;
--
1.7.2.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] Btrfs: don't save the inode cache if we are deleting this root
2011-05-31 19:33 [PATCH] Btrfs: don't save the inode cache if we are deleting this root Josef Bacik
@ 2011-06-01 14:56 ` David Sterba
0 siblings, 0 replies; 2+ messages in thread
From: David Sterba @ 2011-06-01 14:56 UTC (permalink / raw)
To: Josef Bacik; +Cc: linux-btrfs, lizf, chris.mason
Hi,
On Tue, May 31, 2011 at 03:33:33PM -0400, Josef Bacik wrote:
> Signed-off-by: Josef Bacik <josef@redhat.com>
Tested-by: David Sterba <dsterba@suse.cz>
really needed in order to run xfstests, thanks.
david
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-06-01 14:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-31 19:33 [PATCH] Btrfs: don't save the inode cache if we are deleting this root Josef Bacik
2011-06-01 14:56 ` David Sterba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox