kernel-ark/include/linux
Jens Axboe bc1c116974 [PATCH] elevator switching race
There's a race between shutting down one io scheduler and firing up the
next, in which a new io could enter and cause the io scheduler to be
invoked with bad or NULL data.

To fix this, we need to maintain the queue lock for a bit longer.
Unfortunately we cannot do that, since the elevator init requires to be
run without the lock held.  This isn't easily fixable, without also
changing the mempool API.  So split the initialization into two parts,
and alloc-init operation and an attach operation.  Then we can
preallocate the io scheduler and related structures, and run the attach
inside the lock after we detach the old one.

This patch has survived 30 minutes of 1 second io scheduler switching
with a very busy io load.

Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-08 15:14:23 -07:00
..
amba
byteorder
dvb
hdlc
isdn
lockd
mmc [ARM] 3531/1: i.MX/MX1 SD/MMC ensure, that clock are stopped before new command and cleanups 2006-05-19 21:48:03 +01:00
mtd
netfilter [NETFILTER] x_tables: fix compat related crash on non-x86 2006-05-01 20:48:32 -07:00
netfilter_arp
netfilter_bridge
netfilter_ipv4 [NETFILTER]: H.323 helper: Change author's email address 2006-05-03 23:19:59 -07:00
netfilter_ipv6
nfsd
raid
spi [PATCH] SPI: busnum == 0 needs to work 2006-05-16 14:33:57 -07:00
sunrpc NFS,SUNRPC: Fix compiler warnings if CONFIG_PROC_FS & CONFIG_SYSCTL are unset 2006-04-19 12:43:47 -04:00
tc_act
tc_ematch
usb [PATCH] USB: linux/usb/net2280.h common definitions 2006-04-14 11:12:25 -07:00
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi.h
adb.h
adfs_fs_i.h
adfs_fs_sb.h
adfs_fs.h
affs_fs.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio_abi.h
aio.h
amifd.h
amifdreg.h
amigaffs.h
apm_bios.h
arcdevice.h
arcfb.h
ata.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h [PATCH] Rework of IPC auditing 2006-05-01 06:10:04 -04:00
auto_fs4.h
auto_fs.h
auxvec.h
awe_voice.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h
bit_spinlock.h
bitmap.h
bitops.h
blkdev.h [SCSI] unify SCSI_IOCTL_SEND_COMMAND implementations 2006-04-13 10:13:15 -05:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bootmem.h
bpqether.h
buffer_head.h
cache.h
calc64.h
capability.h
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
chio.h
circ_buf.h
clk.h
cm4000_cs.h
cn_proc.h
cobalt-nvram.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_proc.h
coda_psdev.h
coda.h
coff.h
com20020.h
compat_ioctl.h
compat.h
compiler-gcc3.h
compiler-gcc4.h
compiler-gcc.h
compiler-intel.h
compiler.h
completion.h
comstats.h
concap.h
config.h
configfs.h
connector.h
console_struct.h
console.h
consolemap.h
cpu.h
cpufreq.h
cpumask.h
cpuset.h
cramfs_fs_sb.h
cramfs_fs.h
crash_dump.h
crc16.h
crc32.h
crc32c.h
crc-ccitt.h
crypto.h
cryptohash.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dcache.h
dccp.h
dcookies.h
debugfs.h [PATCH] Fix OCFS2 warning when DEBUG_FS is not enabled 2006-04-27 13:08:56 -07:00
delay.h
devfs_fs_kernel.h
devfs_fs.h
device-mapper.h
device.h [CLASS DEVICE]: add attribute_group creation 2006-05-06 17:55:11 -07:00
devpts_fs.h
dio.h
dirent.h
divert.h
dm9000.h
dm-ioctl.h
dma-mapping.h dl2k: use DMA_48BIT_MASK constant 2006-05-10 14:04:22 -07:00
dmapool.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1286.h
ds1742rtc.h
ds17287rtc.h
dtlk.h
edd.h
efi.h
efs_dir.h
efs_fs_i.h
efs_fs_sb.h
efs_fs.h
efs_vh.h
eisa.h
elevator.h [PATCH] elevator switching race 2006-06-08 15:14:23 -07:00
elf-fdpic.h
elf.h
elfcore.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventpoll.h
ext2_fs_sb.h
ext2_fs.h
ext3_fs_i.h
ext3_fs_sb.h
ext3_fs.h
ext3_jbd.h
fadvise.h
fb.h
fcdevice.h
fcntl.h
fd1772.h
fd.h
fddidevice.h
fdreg.h
file.h
filter.h
firmware.h [PATCH] drivers/base/firmware_class.c: cleanups 2006-05-21 12:59:19 -07:00
flat.h
font.h
fs_enet_pd.h
fs_struct.h
fs_uart_pd.h [PATCH] ppc32 CPM_UART: fixes and improvements 2006-05-03 23:06:44 +10:00
fs.h [PATCH] sys_sync_file_range(): move exported flags outside __KERNEL__ 2006-05-23 10:35:31 -07:00
fsl_devices.h [PATCH] spi: add spi master driver for Freescale MPC83xx SPI controller 2006-05-21 12:59:19 -07:00
fsnotify.h
ftape-header-segment.h
ftape-vendors.h
ftape.h
fuse.h
futex.h
gameport.h
gen_stats.h
genalloc.h
generic_serial.h
genetlink.h
genhd.h [PATCH] BLOCK: delay all uevents until partition table is scanned 2006-04-14 11:41:24 -07:00
gfp.h
gigaset_dev.h
hardirq.h
harrier_defs.h
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hdsmart.h
hiddev.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
hp_sdc.h
hpet.h
hpfs_fs.h
hrtimer.h
hugetlb.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-ite.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-sgi.h
i2c-algo-sibyte.h
i2c-dev.h
i2c-id.h
i2c-isa.h
i2c-pxa.h
i2c.h
i2o-dev.h
i2o.h
i8k.h
ibmtr.h
icmp.h
icmpv6.h
ide.h [PATCH] remove the obsolete IDEPCI_FLAG_FORCE_PDC 2006-04-19 09:13:53 -07:00
idr.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_ltalk.h
if_packet.h
if_plip.h
if_ppp.h
if_pppox.h
if_shaper.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h
if_tunnel.h
if_vlan.h
if_wanpipe_common.h
if_wanpipe.h
if.h
igmp.h
in6.h
in_route.h
in.h
inet_diag.h
inet.h
inetdevice.h
init_task.h
init.h
initrd.h
inotify.h
input.h Input: change from numbered to named switches 2006-05-29 23:31:03 -04:00
interrupt.h
io.h
ioc3.h
ioc4.h
ioctl32.h
ioctl.h
ioport.h
ioprio.h
ip6_tunnel.h
ip_mp_alg.h
ip.h
ipc.h
ipmi_msgdefs.h
ipmi_smi.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h
ipx.h
irda.h
irq_cpustat.h
irq.h
isapnp.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ite_gpio.h
ixjuser.h
jbd.h
jffs2_fs_i.h
jffs2_fs_sb.h
jffs2.h
jffs.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
kd.h
kdev_t.h
kernel_stat.h
kernel.h [PATCH] symbol_put_addr() locks kernel 2006-05-15 11:20:55 -07:00
kernelcapi.h
kexec.h
key-ui.h
key.h
keyboard.h
keyctl.h
kfifo.h
klist.h
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject.h [PATCH] Kobject: possible cleanups 2006-04-27 13:08:56 -07:00
kprobes.h
kref.h
kthread.h
ktime.h
lapb.h
lcd.h
leds.h
libata.h
libps2.h
limits.h
linkage.h
linux_logo.h
list.h [NET]: use hlist_unhashed() 2006-04-29 18:33:15 -07:00
llc.h
loop.h
lp.h
m48t86.h [PATCH] m48t86: ia64 build fix 2006-06-05 12:29:17 -07:00
major.h
matroxfb.h
mbcache.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
memory_hotplug.h [PATCH] memory_hotplug.h cleanup 2006-04-20 07:54:04 -07:00
memory.h
mempolicy.h [PATCH] Fix mempolicy.h build error 2006-06-08 15:12:21 -07:00
mempool.h
meye.h
migrate.h
mii.h
minix_fs.h
miscdevice.h
mm_inline.h
mm.h
mman.h
mmtimer.h
mmzone.h [PATCH] Sparsemem build fix 2006-06-05 12:29:16 -07:00
mod_devicetable.h Input: move input_device_id to mod_devicetable.h 2006-04-26 00:14:19 -04:00
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
msdos_fs.h
msg.h
mtio.h
mutex-debug.h
mutex.h
mv643xx.h [MIPS] MV6434x: The name of the CPP symbol is __mips__, not __MIPS__. 2006-04-19 04:14:19 +02:00
n_r3964.h
namei.h
namespace.h
nbd.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_fs.h
ncp_mount.h
ncp_no.h
ncp.h
net.h
netdevice.h [NET]: Do sysfs registration as part of register_netdevice. 2006-05-10 13:21:17 -07:00
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter_logging.h
netfilter.h
netlink.h [PATCH] Reworked patch for labels on user space messages 2006-05-01 06:09:58 -04:00
netpoll.h
netrom.h
nfs2.h
nfs3.h
nfs4_acl.h
nfs4_mount.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfs.h
nfsacl.h
nfsd_idmap.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nubus.h
numa.h
nvram.h
openprom_fs.h
oprofile.h
page-flags.h
pagemap.h [PATCH] Add find_get_pages_contig(): contiguous variant of find_get_pages() 2006-04-27 08:59:48 +02:00
pagevec.h
param.h
parport_pc.h
parport.h
parser.h
patchkey.h
pci_ids.h [AGPGART] VIA PT880 Ultra support. 2006-05-22 13:56:02 -04:00
pci_regs.h
pci-acpi.h
pci.h [PATCH] PCI: fix sparse warning about pci_bus_flags 2006-04-14 12:25:25 -07:00
pcieport_if.h
percpu_counter.h
percpu.h
personality.h
pfkeyv2.h
pfn.h
pg.h
phonedev.h
phy.h
pid.h
pipe_fs_i.h [PATCH] splice: LRU fixups 2006-05-04 06:55:12 +02:00
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform_device.h
pm_legacy.h [PATCH] remove kernel/power/pm.c:pm_unregister() 2006-04-14 12:25:26 -07:00
pm.h [PATCH] pm: print name of failed suspend function 2006-04-14 11:41:25 -07:00
pmu.h
pnp.h
pnpbios.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
posix-timers.h
ppdev.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
prctl.h
preempt.h
prefetch.h
prio_tree.h
proc_fs.h
profile.h
ps2esdi.h
ptrace.h
qic117.h
qnx4_fs.h
qnxtypes.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h
random.h
raw.h
rbtree.h
rcupdate.h [PATCH] RCU: introduce rcu_needs_cpu() interface 2006-05-15 11:20:55 -07:00
reboot_fixups.h
reboot.h
reiserfs_acl.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_fs.h
reiserfs_xattr.h
relay.h
resource.h
rio_drv.h
rio_ids.h
rio_regs.h
rio.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc.h
rtnetlink.h
rwsem-spinlock.h
rwsem.h
sc26198.h
scatterlist.h
scc.h
sched.h [PATCH] task: Make task list manipulations RCU safe 2006-04-19 09:13:49 -07:00
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdla_fr.h
sdla.h
seccomp.h
securebits.h
security.h [PATCH] change lspp ipc auditing 2006-05-01 06:09:56 -04:00
selection.h
selinux_netlink.h
selinux.h [PATCH] Reworked patch for labels on user space messages 2006-05-01 06:09:58 -04:00
sem.h
seq_file.h
seqlock.h
serial167.h
serial_8250.h
serial_core.h [SERIAL] Clean up serial locking when obtaining a reference to a port 2006-04-30 11:13:50 +01:00
serial_ip3106.h
serial_reg.h
serial.h
serialP.h
serio.h
shm.h
shmem_fs.h
signal.h [PATCH] request_irq(): remove warnings from irq probing 2006-04-28 08:33:46 -07:00
skbuff.h [NET]: Add skb->truesize assertion checking. 2006-04-20 00:10:50 -07:00
slab.h [PATCH] add slab_is_available() routine for boot code 2006-05-15 11:20:56 -07:00
smb_fs_i.h
smb_fs_sb.h
smb_fs.h
smb_mount.h
smb.h
smbno.h
smp_lock.h
smp.h
snmp.h
socket.h
sockios.h
som.h
sonet.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h
stallion.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
stringify.h
superhyway.h
suspend.h
swap.h [PATCH] fix can_share_swap_page() when !CONFIG_SWAP 2006-05-15 11:20:56 -07:00
swapops.h
synclink.h
sys.h
syscalls.h [PATCH] powerpc: wire up sys_[gs]et_robust_list 2006-05-23 10:35:32 -07:00
sysctl.h
sysdev.h
sysfs.h [PATCH] sysfs: Allow sysfs attribute files to be pollable 2006-04-14 11:41:24 -07:00
sysrq.h
sysv_fs.h
tcp.h
telephony.h
termios.h
textsearch_fsm.h
textsearch.h
tfrc.h
thread_info.h
threads.h
ticable.h
time.h
timer.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc.h
topology.h
toshiba.h
transport_class.h
trdevice.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h
types.h
udf_fs_i.h
udf_fs_sb.h
udf_fs.h
udp.h
ufs_fs_i.h
ufs_fs_sb.h
ufs_fs.h
uinput.h
uio.h
ultrasound.h
umem.h
un.h
unistd.h
usb_cdc.h
usb_ch9.h
usb_gadget.h
usb_gadgetfs.h
usb_input.h
usb_isp116x.h
usb_otg.h
usb_sl811.h
usb_usual.h
usb.h
usbdevice_fs.h
user.h
utime.h
uts.h
utsname.h
vermagic.h
vfs.h
via.h
video_decoder.h
video_encoder.h
videodev2.h V4L/DVB (3774): Create V4L1 config options 2006-05-12 19:54:53 -03:00
videodev.h
videotext.h
vmalloc.h
vt_buffer.h
vt_kern.h [PATCH] revert "swsusp add check for suspension of X controlled devices" 2006-05-31 16:27:11 -07:00
vt.h
wait.h
wanrouter.h
watchdog.h
wavefront.h
wireless.h
workqueue.h
writeback.h
x25.h
xattr.h
xfrm.h
yam.h
zconf.h
zftape.h
zlib.h
zorro_ids.h
zorro.h
zutil.h