]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: don't save the inode cache if we are deleting this root
authorJosef Bacik <josef@redhat.com>
Tue, 31 May 2011 19:33:33 +0000 (19:33 +0000)
committerChris Mason <chris.mason@oracle.com>
Sat, 4 Jun 2011 12:03:45 +0000 (08:03 -0400)
commitf26e819cf307d2bf4fff968a1e167cc11cd15fc1
treebf3a5e67c8eff57425dd656778b40c5aaf858f80
parent73023b2b4789c4e1b8646d9ade1b2171c107b799
Btrfs: don't save the inode cache if we are deleting this root

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>
Tested-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/inode-map.c