alistair23-linux/fs/btrfs
Josef Bacik d132a538d2 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>
2011-06-04 08:03:45 -04:00
..
acl.c Merge branch 'cleanups' of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers 2011-05-22 12:33:42 -04:00
async-thread.c
async-thread.h
btrfs_inode.h Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
compat.h
compression.c Merge branch 'cleanups' of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers 2011-05-22 12:33:42 -04:00
compression.h btrfs: rename variables clashing with global function names 2011-05-02 13:57:19 +02:00
ctree.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
ctree.h Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
delayed-inode.c Btrfs: fix uninit variable in the delayed inode code 2011-06-04 08:03:43 -04:00
delayed-inode.h btrfs: implement delayed inode items operation 2011-05-21 09:30:56 -04:00
delayed-ref.c btrfs: remove old unused commented out code 2011-05-06 12:34:10 +02:00
delayed-ref.h btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
dir-item.c Merge branch 'cleanups_and_fixes' into inode_numbers 2011-05-23 14:37:47 -04:00
disk-io.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
disk-io.h Merge branch 'cleanups' of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers 2011-05-22 12:33:42 -04:00
export.c Merge branch 'ino-alloc' of git://repo.or.cz/linux-btrfs-devel into inode_numbers 2011-05-21 09:27:38 -04:00
export.h
extent-tree.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
extent_io.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
extent_io.h btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
extent_map.c btrfs: drop gfp parameter from alloc_extent_map 2011-05-02 13:57:21 +02:00
extent_map.h btrfs: drop gfp parameter from alloc_extent_map 2011-05-02 13:57:21 +02:00
file-item.c Merge branch 'cleanups_and_fixes' into inode_numbers 2011-05-23 14:37:47 -04:00
file.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
free-space-cache.c Btrfs: make sure we don't overflow the free space cache crc page 2011-06-04 08:03:43 -04:00
free-space-cache.h btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
hash.h
inode-item.c Btrfs: BUG_ON is deleted from the caller of btrfs_truncate_item & btrfs_extend_item 2011-05-23 13:24:39 -04:00
inode-map.c Btrfs: don't save the inode cache if we are deleting this root 2011-06-04 08:03:45 -04:00
inode-map.h Btrfs: Support reading/writing on disk free ino cache 2011-04-25 16:46:11 +08:00
inode.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
ioctl.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
ioctl.h Btrfs: add mount -o auto_defrag 2011-05-26 17:52:15 -04:00
Kconfig
locking.c btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
locking.h btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
lzo.c
Makefile Merge branch 'for-chris' of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers 2011-05-23 06:30:52 -04:00
ordered-data.c Btrfs: add initial tracepoint support for btrfs 2011-03-28 05:37:33 -04:00
ordered-data.h
orphan.c
print-tree.c
print-tree.h
ref-cache.c btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
ref-cache.h btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
relocation.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
root-tree.c Merge branch 'cleanups_and_fixes' into inode_numbers 2011-05-23 14:37:47 -04:00
scrub.c btrfs: scrub: don't reuse bios and pages 2011-06-04 08:03:17 -04:00
struct-funcs.c
super.c Btrfs: add mount -o auto_defrag 2011-05-26 17:52:15 -04:00
sysfs.c Merge branch 'cleanups' of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers 2011-05-22 12:33:42 -04:00
transaction.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
transaction.h Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
tree-defrag.c btrfs: drop unused parameter from btrfs_release_path 2011-05-02 13:57:22 +02:00
tree-log.c Merge branch 'cleanups_and_fixes' into inode_numbers 2011-05-23 14:37:47 -04:00
tree-log.h btrfs: remove unused function prototypes 2011-05-04 14:01:26 +02:00
version.h
volumes.c btrfs: false BUG_ON when degraded 2011-06-04 08:03:44 -04:00
volumes.h Merge branch 'cleanups_and_fixes' into inode_numbers 2011-05-23 14:37:47 -04:00
xattr.c Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
xattr.h
zlib.c zlib: slim down zlib_deflate() workspace when possible 2011-03-22 17:44:17 -07:00