Revision 15e7000095e6fc9ad07e476a100c900c72c14225 authored by Sage Weil on 17 May 2010, 17:15:27 UTC, committed by Chris Mason on 11 June 2010, 19:57:39 UTC
If btrfs_ioctl_snap_destroy() deletes a snapshot but finishes
with end_transaction(), the cleaner kthread may come in and
drop the root in the same transaction.  If that's the case, the
root's refs still == 1 in the tree when btrfs_del_root() deletes
the item, because commit_fs_roots() hasn't updated it yet (that
happens during the commit).

This wasn't a problem before only because
btrfs_ioctl_snap_destroy() would commit the transaction before dropping
the dentry reference, so the dead root wouldn't get queued up until
after the fs root item was updated in the btree.

Since it is not an error to drop the root reference and the root in the
same transaction, just drop the BUG_ON() in btrfs_del_root().

Signed-off-by: Sage Weil <sage@newdream.net>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
1 parent 731e3d1
History
File Mode Size
ABI
DocBook
PCI
RCU
accounting
acpi
aoe
arm
auxdisplay
blackfin
block
blockdev
cdrom
cgroups
connector
console
cpu-freq
cpuidle
cris
crypto
development-process
device-mapper
driver-model
dvb
early-userspace
fault-injection
fb
filesystems
firmware_class
frv
hwmon
i2c
i2o
ia64
ide
infiniband
input
ioctl
isdn
ja_JP
kbuild
kdump
ko_KR
kvm
laptops
lguest
m68k
make
mips
misc-devices
mn10300
mtd
namespaces
netlabel
networking
parisc
pcmcia
power
powerpc
pps
prctl
s390
scheduler
scsi
serial
sh
sound
sparc
spi
sysctl
telephony
thermal
timers
trace
uml
usb
video4linux
vm
w1
watchdog
wimax
x86
zh_CN
00-INDEX -rw-r--r-- 11.9 KB
BUG-HUNTING -rw-r--r-- 8.1 KB
Changes -rw-r--r-- 12.1 KB
CodingStyle -rw-r--r-- 29.1 KB
DMA-API-HOWTO.txt -rw-r--r-- 26.7 KB
DMA-API.txt -rw-r--r-- 26.6 KB
DMA-ISA-LPC.txt -rw-r--r-- 5.2 KB
DMA-attributes.txt -rw-r--r-- 1.3 KB
HOWTO -rw-r--r-- 27.3 KB
IO-mapping.txt -rw-r--r-- 7.9 KB
IPMI.txt -rw-r--r-- 27.6 KB
IRQ-affinity.txt -rw-r--r-- 2.1 KB
IRQ.txt -rw-r--r-- 962 bytes
Intel-IOMMU.txt -rw-r--r-- 3.8 KB
Makefile -rw-r--r-- 173 bytes
ManagementStyle -rw-r--r-- 12.9 KB
SAK.txt -rw-r--r-- 2.8 KB
SELinux.txt -rw-r--r-- 1.0 KB
SM501.txt -rw-r--r-- 2.8 KB
SecurityBugs -rw-r--r-- 1.8 KB
Smack.txt -rw-r--r-- 21.6 KB
SubmitChecklist -rw-r--r-- 3.8 KB
SubmittingDrivers -rw-r--r-- 6.2 KB
SubmittingPatches -rw-r--r-- 27.8 KB
VGA-softcursor.txt -rw-r--r-- 2.0 KB
applying-patches.txt -rw-r--r-- 19.5 KB
atomic_ops.txt -rw-r--r-- 19.0 KB
bad_memory.txt -rw-r--r-- 1.1 KB
basic_profiling.txt -rw-r--r-- 1.7 KB
binfmt_misc.txt -rw-r--r-- 6.0 KB
braille-console.txt -rw-r--r-- 1.4 KB
bt8xxgpio.txt -rw-r--r-- 4.3 KB
btmrvl.txt -rw-r--r-- 2.9 KB
cachetlb.txt -rw-r--r-- 17.1 KB
circular-buffers.txt -rw-r--r-- 7.6 KB
cpu-hotplug.txt -rw-r--r-- 14.6 KB
cpu-load.txt -rw-r--r-- 3.0 KB
cputopology.txt -rw-r--r-- 3.2 KB
credentials.txt -rw-r--r-- 20.4 KB
dcdbas.txt -rw-r--r-- 3.6 KB
debugging-modules.txt -rw-r--r-- 954 bytes
debugging-via-ohci1394.txt -rw-r--r-- 7.4 KB
dell_rbu.txt -rw-r--r-- 4.9 KB
devices.txt -rw-r--r-- 115.4 KB
dmaengine.txt -rw-r--r-- 42 bytes
dontdiff -rw-r--r-- 1.9 KB
dynamic-debug-howto.txt -rw-r--r-- 8.4 KB
edac.txt -rw-r--r-- 20.8 KB
eisa.txt -rw-r--r-- 7.1 KB
email-clients.txt -rw-r--r-- 8.3 KB
feature-removal-schedule.txt -rw-r--r-- 22.8 KB
flexible-arrays.txt -rw-r--r-- 5.5 KB
futex-requeue-pi.txt -rw-r--r-- 5.0 KB
gcov.txt -rw-r--r-- 7.5 KB
gpio.txt -rw-r--r-- 28.8 KB
highuid.txt -rw-r--r-- 2.4 KB
hw_random.txt -rw-r--r-- 3.5 KB
init.txt -rw-r--r-- 2.5 KB
initrd.txt -rw-r--r-- 14.1 KB
intel_txt.txt -rw-r--r-- 10.2 KB
io-mapping.txt -rw-r--r-- 3.2 KB
io_ordering.txt -rw-r--r-- 1.9 KB
iostats.txt -rw-r--r-- 7.9 KB
irqflags-tracing.txt -rw-r--r-- 2.6 KB
isapnp.txt -rw-r--r-- 433 bytes
java.txt -rw-r--r-- 10.7 KB
kernel-doc-nano-HOWTO.txt -rw-r--r-- 11.2 KB
kernel-docs.txt -rw-r--r-- 34.8 KB
kernel-parameters.txt -rw-r--r-- 91.3 KB
keys-request-key.txt -rw-r--r-- 7.4 KB
keys.txt -rw-r--r-- 47.6 KB
kmemcheck.txt -rw-r--r-- 29.8 KB
kmemleak.txt -rw-r--r-- 7.6 KB
kobject.txt -rw-r--r-- 17.6 KB
kprobes.txt -rw-r--r-- 29.6 KB
kref.txt -rw-r--r-- 6.1 KB
ldm.txt -rw-r--r-- 3.9 KB
leds-class.txt -rw-r--r-- 3.9 KB
leds-lp3944.txt -rw-r--r-- 1.5 KB
local_ops.txt -rw-r--r-- 6.1 KB
lockdep-design.txt -rw-r--r-- 8.8 KB
lockstat.txt -rw-r--r-- 8.1 KB
logo.gif -rw-r--r-- 16.0 KB
logo.txt -rw-r--r-- 563 bytes
magic-number.txt -rw-r--r-- 9.7 KB
mca.txt -rw-r--r-- 11.3 KB
md.txt -rw-r--r-- 23.7 KB
memory-barriers.txt -rw-r--r-- 80.0 KB
memory-hotplug.txt -rw-r--r-- 14.0 KB
memory.txt -rw-r--r-- 1.2 KB
mono.txt -rw-r--r-- 2.5 KB
mutex-design.txt -rw-r--r-- 5.8 KB
nmi_watchdog.txt -rw-r--r-- 4.2 KB
nommu-mmap.txt -rw-r--r-- 12.7 KB
numastat.txt -rw-r--r-- 866 bytes
oops-tracing.txt -rw-r--r-- 12.3 KB
parport-lowlevel.txt -rw-r--r-- 32.2 KB
parport.txt -rw-r--r-- 8.8 KB
pi-futex.txt -rw-r--r-- 5.7 KB
pnp.txt -rw-r--r-- 6.8 KB
preempt-locking.txt -rw-r--r-- 5.2 KB
printk-formats.txt -rw-r--r-- 1.0 KB
prio_tree.txt -rw-r--r-- 5.2 KB
rbtree.txt -rw-r--r-- 6.6 KB
rfkill.txt -rw-r--r-- 5.5 KB
robust-futex-ABI.txt -rw-r--r-- 8.7 KB
robust-futexes.txt -rw-r--r-- 9.4 KB
rt-mutex-design.txt -rw-r--r-- 32.8 KB
rt-mutex.txt -rw-r--r-- 3.5 KB
rtc.txt -rw-r--r-- 16.1 KB
serial-console.txt -rw-r--r-- 4.0 KB
sgi-ioc4.txt -rw-r--r-- 2.0 KB
sgi-visws.txt -rw-r--r-- 678 bytes
slow-work.txt -rw-r--r-- 11.5 KB
sparse.txt -rw-r--r-- 3.1 KB
spinlocks.txt -rw-r--r-- 8.0 KB
stable_api_nonsense.txt -rw-r--r-- 9.2 KB
stable_kernel_rules.txt -rw-r--r-- 3.6 KB
svga.txt -rw-r--r-- 14.1 KB
sysfs-rules.txt -rw-r--r-- 8.1 KB
sysrq.txt -rw-r--r-- 11.4 KB
tomoyo.txt -rw-r--r-- 2.2 KB
unaligned-memory-access.txt -rw-r--r-- 10.0 KB
unicode.txt -rw-r--r-- 6.5 KB
unshare.txt -rw-r--r-- 13.1 KB
vgaarbiter.txt -rw-r--r-- 8.1 KB
video-output.txt -rw-r--r-- 1.1 KB
volatile-considered-harmful.txt -rw-r--r-- 5.6 KB
zorro.txt -rw-r--r-- 2.8 KB

back to top