kernel_optimize_test/include/linux
Nick Piggin 44a7d7a878 fs: cache optimise dentry and inode for rcu-walk
Put dentry and inode fields into top of data structure.  This allows RCU path
traversal to perform an RCU dentry lookup in a path walk by touching only the
first 56 bytes of the dentry.

We also fit in 8 bytes of inline name in the first 64 bytes, so for short
names, only 64 bytes needs to be touched to perform the lookup. We should
get rid of the hash->prev pointer from the first 64 bytes, and fit 16 bytes
of name in there, which will take care of 81% rather than 32% of the kernel
tree.

inode is also rearranged so that RCU lookup will only touch a single cacheline
in the inode, plus one in the i_ops structure.

This is important for directory component lookups in RCU path walking. In the
kernel source, directory names average is around 6 chars, so this works.

When we reach the last element of the lookup, we need to lock it and take its
refcount which requires another cacheline access.

Align dentry and inode operations structs, so members will be at predictable
offsets and we can group common operations into head of structure.

Signed-off-by: Nick Piggin <npiggin@kernel.dk>
2011-01-07 17:50:28 +11:00
..
amba
byteorder
caif
can
ceph ceph: mark user pages dirty on direct-io reads 2010-12-17 09:54:40 -08:00
crush
decompress
dvb
hdlc
i2c
input
isdn
lockd
mfd ASoC: Fix off by one error in WM8994 EQ register bank size 2010-12-06 12:43:02 +00:00
mlx4
mmc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc 2010-11-27 07:16:29 +09:00
mtd
netfilter
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
power
raid
regulator
rtc
spi
ssb SSB: Fix nvram_get on BCM47xx platform 2010-12-16 18:11:00 +00:00
sunrpc
tc_act
tc_ematch
unaligned include/linux/unaligned: pack the whole struct rather than just the field 2010-12-22 19:43:34 -08:00
usb
uwb
wimax
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi_pmtmr.h
acpi.h acpi: fix _OSI string setup regression 2010-12-11 01:28:58 -05:00
adb.h
adfs_fs.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
ahci_platform.h
aio_abi.h
aio.h
altera_jtaguart.h
altera_uart.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm_bios.h
apm-emulation.h
arcdevice.h
arcfb.h
async_tx.h
async.h
ata_platform.h
ata.h
atalk.h
ath9k_platform.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 atm: correct sysfs 'device' link creation and parent relationships 2010-12-10 15:45:05 -08:00
atmel_pdc.h
atmel_pwm.h
atmel_serial.h
atmel_tc.h
atmel-mci.h
atmel-pwm-bl.h
atmel-ssc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
atomic.h
attribute_container.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
basic_mmio_gpio.h
baycom.h
bcd.h
bfin_mac.h
bfs_fs.h
binfmts.h exec: copy-and-paste the fixes into compat_do_execve() paths 2010-11-30 17:56:38 -08:00
bio.h
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blk_types.h
blk-iopoll.h
blkdev.h block: max hardware sectors limit wrapper 2010-12-17 08:36:01 +01:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bootmem.h bootmem: Add alloc_bootmem_align() 2010-12-13 16:11:13 -08:00
bottom_half.h
bpqether.h
brcmphy.h
bsg.h
btree-128.h
btree-type.h
btree.h
buffer_head.h
bug.h
c2port.h
cache.h
can.h
capability.h
capi.h
cb710.h
cciss_defs.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
cfag12864b.h
cgroup_subsys.h
cgroup.h
cgroupstats.h
chio.h
circ_buf.h
clk.h
clockchips.h
clocksource.h
cm4000_cs.h
cn_proc.h
cnt32_to_63.h clarify a usage constraint for cnt32_to_63() 2010-12-20 09:07:35 -08:00
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_psdev.h
coda.h
coff.h
com20020.h
compaction.h
compat.h
compiler-gcc.h
compiler-gcc3.h
compiler-gcc4.h
compiler-intel.h
compiler.h
completion.h
comstats.h
concap.h
configfs.h
connector.h
console_struct.h
console.h
consolemap.h
const.h
coredump.h
cper.h
cpu.h
cpufreq.h
cpuidle.h
cpumask.h
cpuset.h
cramfs_fs_sb.h
cramfs_fs.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc7.h
crc16.h
crc32.h
crc32c.h
cred.h
crypto.h
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
davinci_emac.h
dca.h
dcache.h fs: cache optimise dentry and inode for rcu-walk 2011-01-07 17:50:28 +11:00
dcbnl.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
device_cgroup.h
device-mapper.h
device.h
devpts_fs.h
dio.h
dirent.h
display.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-dirty-log.h
dm-io.h
dm-ioctl.h
dm-kcopyd.h
dm-log-userspace.h
dm-region-hash.h
dm9000.h
dma_remapping.h
dma-attrs.h
dma-debug.h
dma-mapping.h
dmaengine.h dmaengine: provide dummy functions for DMA_ENGINE=n 2011-01-03 01:41:40 -08:00
dmapool.h
dmar.h
dmi.h
dn.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
drbd_limits.h
drbd_nl.h
drbd_tag_magic.h
drbd.h
ds1286.h
ds2782_battery.h
ds17287rtc.h
dtlk.h
dw_dmac.h
dynamic_debug.h
edac_mce.h
edac.h
edd.h
eeprom_93cx6.h
efi.h
efs_fs_sb.h
efs_vh.h
eisa.h
elevator.h
elf-em.h
elf-fdpic.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
exportfs.h
ext2_fs_sb.h
ext2_fs.h
ext3_fs_i.h
ext3_fs_sb.h
ext3_fs.h
ext3_jbd.h
f75375s.h
fadvise.h
falloc.h
fanotify.h fanotify: split version into version and metadata_len 2010-12-15 13:56:33 -05:00
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdreg.h
fdtable.h
fec.h
fib_rules.h
fiemap.h
file.h
filter.h
fips.h
firewire-cdev.h
firewire-constants.h
firewire.h
firmware-map.h
firmware.h
flat.h
flex_array.h
font.h
freezer.h
fs_enet_pd.h
fs_stack.h
fs_struct.h fs: fs_struct use seqlock 2011-01-07 17:50:27 +11:00
fs_uart_pd.h
fs.h fs: cache optimise dentry and inode for rcu-walk 2011-01-07 17:50:28 +11:00
fscache-cache.h
fscache.h
fsl_devices.h
fsl-diu-fb.h
fsnotify_backend.h fs: dcache remove dcache_lock 2011-01-07 17:50:23 +11:00
fsnotify.h fs: dcache remove dcache_lock 2011-01-07 17:50:23 +11:00
ftrace_event.h
ftrace_irq.h
ftrace.h
fuse.h
futex.h
gameport.h
gcd.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
genetlink.h
genhd.h
getcpu.h
gfp.h PM / Hibernate: Fix memory corruption related to swap 2010-12-06 23:52:08 +01:00
gfs2_ondisk.h
gigaset_dev.h
gpio_keys.h Input: add input driver for polled GPIO buttons 2010-12-06 17:15:15 -08:00
gpio_mouse.h
gpio-fan.h
gpio.h
gsmmux.h
hardirq.h
hash.h
hdlc.h
hdlcdrv.h
hdreg.h
hid-debug.h
hid.h
hiddev.h
hidraw.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
hp_sdc.h
hpet.h
hrtimer.h
htcpld.h
htirq.h
hugetlb_inline.h
hugetlb.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-dev.h
i2c-gpio.h
i2c-id.h
i2c-mux.h
i2c-ocores.h
i2c-omap.h
i2c-pca-platform.h
i2c-pnx.h
i2c-pxa.h
i2c-smbus.h
i2c-xiic.h
i2c.h
i2o-dev.h
i2o.h
i8k.h
i7300_idle.h
i8042.h
i82593.h
ibmtr.h
icmp.h
icmpv6.h
ide.h
idr.h
ieee80211.h
if_addr.h
if_addrlabel.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_link.h
if_ltalk.h
if_macvlan.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h
if_tunnel.h
if_vlan.h
if_x25.h
if.h
igmp.h
ihex.h
ima.h
in_route.h
in.h
in6.h
inet_diag.h
inet_lro.h
inet.h
inetdevice.h
init_ohci1394_dma.h
init_task.h
init.h
initrd.h
inotify.h
input-polldev.h
input.h Input: define separate EVIOCGKEYCODE_V2/EVIOCSKEYCODE_V2 2010-12-14 23:55:21 -08:00
intel_mid_dma.h
intel_pmic_gpio.h
intel-gtt.h
intel-iommu.h
interrupt.h
io-mapping.h
io.h
ioc3.h
ioc4.h
iocontext.h
ioctl.h
iommu-helper.h
iommu.h
ioport.h resources: add arch hook for preventing allocation in reserved areas 2010-12-17 10:01:09 -08:00
ioprio.h
iova.h
ip_vs.h
ip.h
ip6_tunnel.h
ipc_namespace.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_work.h
irq.h
irqdesc.h
irqflags.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ivtv.h
ivtvfb.h
ixjuser.h
jbd.h
jbd2.h
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label_ref.h
jump_label.h
jz4740-adc.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
Kbuild
kbuild.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kernel_stat.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
key-type.h
key.h
keyboard.h
keyctl.h
kfifo.h
kgdb.h
klist.h
kmalloc_sizes.h
kmemcheck.h
kmemleak.h
kmod.h
kmsg_dump.h
kobj_map.h
kobject_ns.h
kobject.h
kprobes.h
kref.h
ks0108.h
ks8842.h
ksm.h
kthread.h kthread_work: make lockdep happy 2010-12-22 10:27:53 +01:00
ktime.h
kvm_host.h
kvm_para.h
kvm_types.h
kvm.h
l2tp.h
lapb.h
latencytop.h
lcd.h
lcm.h
leds_pwm.h
leds-bd2802.h
leds-lp3944.h
leds-lp5521.h
leds-lp5523.h
leds-pca9532.h
leds-regulator.h
leds.h
lglock.h
lguest_launcher.h
lguest.h
libata.h
libps2.h
license.h
limits.h
linkage.h
linux_logo.h
lis3lv02d.h
list_nulls.h
list_sort.h
list.h
llc.h
lockdep.h
log2.h
loop.h
lp.h
lru_cache.h
lsm_audit.h
lzo.h
m48t86.h
magic.h
major.h
map_to_7segment.h
maple.h
marvell_phy.h
math64.h
matroxfb.h
max17040_battery.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mdio-bitbang.h
mdio-gpio.h
mdio.h
memblock.h
memcontrol.h
memory_hotplug.h mem-hotplug: introduce {un}lock_memory_hotplug() 2010-12-02 14:51:15 -08:00
memory.h
mempolicy.h
mempool.h
memstick.h
meye.h
mg_disk.h
migrate.h
mii.h
minix_fs.h
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm_inline.h
mm_types.h
mm.h
mman.h
mmdebug.h
mmiotrace.h
mmtimer.h
mmu_context.h
mmu_notifier.h
mmzone.h
mnt_namespace.h
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
mroute6.h
msdos_fs.h
msg.h
msi.h
msm_mdp.h
mtio.h
mutex-debug.h
mutex.h
mv643xx_eth.h
mv643xx_i2c.h
mv643xx.h
n_r3964.h
namei.h fs: rcu-walk for path lookup 2011-01-07 17:50:27 +11:00
nbd.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_fs.h fs: change d_compare for rcu-walk 2011-01-07 17:50:19 +11:00
ncp_mount.h
ncp_no.h
ncp.h
neighbour.h
net_dropmon.h
net_tstamp.h
net.h fs: avoid inode RCU freeing for pseudo fs 2011-01-07 17:50:26 +11:00
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink.h netlink: fix gcc -Wconversion compilation warning 2010-12-17 12:03:14 -08:00
netpoll.h
netrom.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h NFS: Fix a memory leak in nfs_readdir 2010-12-02 09:58:00 -05:00
nfs_idmap.h
nfs_iostat.h
nfs_mount.h
nfs_page.h nfs: remove extraneous and problematic calls to nfs_clear_request 2010-12-07 23:02:44 -05:00
nfs_xdr.h
nfs.h
nfs2.h
nfs3.h
nfs4_acl.h
nfs4_mount.h
nfs4.h
nfsacl.h
nfsd_idmap.h
nilfs2_fs.h
nl80211.h
nl802154.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nsc_gpio.h
nsproxy.h
nubus.h
numa.h
nvram.h
nwpserial.h
of_address.h
of_device.h
of_fdt.h
of_gpio.h
of_i2c.h
of_irq.h
of_mdio.h
of_pdt.h
of_platform.h
of_spi.h
of.h
omapfb.h
oom.h
opp.h
oprofile.h
oxu210hp.h
padata.h
page_cgroup.h
page-debug-flags.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h
param.h
parport_pc.h
parport.h
parser.h
patchkey.h
path.h
pch_dma.h
pci_hotplug.h
pci_ids.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2010-11-29 14:36:33 -08:00
pci_regs.h
pci-acpi.h
pci-aspm.h
pci-dma.h
pci.h
pcieport_if.h
pda_power.h
percpu_counter.h
percpu-defs.h
percpu.h
perf_event.h perf: Fix duplicate events with multiple-pmu vs software events 2010-12-08 20:14:08 +01:00
personality.h
pfkeyv2.h
pfn.h
pg.h
phantom.h
phonedev.h
phonet.h
phy_fixed.h
phy.h
pid_namespace.h
pid.h
pim.h
pipe_fs_i.h Un-inline get_pipe_info() helper function 2010-11-28 16:27:19 -08:00
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform_device.h
plist.h
pm_qos_params.h
pm_runtime.h PM / Runtime: Fix pm_runtime_suspended() 2010-12-16 17:12:25 +01:00
pm_wakeup.h
pm.h
pmu.h
pnp.h
poison.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
posix-timers.h
power_supply.h
ppdev.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
pps_kernel.h
pps.h
prctl.h
preempt.h
prefetch.h
printk.h
prio_heap.h
prio_tree.h
proc_fs.h
profile.h
proportions.h
ptp_classify.h
ptrace.h
pwm_backlight.h
pwm.h
pxa168_eth.h
qnx4_fs.h
qnxtypes.h
quicklist.h
quota.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h
ramoops.h
random.h
range.h
rar_register.h
ratelimit.h
rational.h
raw.h
rbtree.h
rculist_nulls.h
rculist.h
rcupdate.h
rcutiny.h
rcutree.h
rds.h
reboot.h
reciprocal_div.h
regset.h
reiserfs_acl.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_fs.h
reiserfs_xattr.h
relay.h
res_counter.h
resource.h
resume-trace.h
rfkill.h
ring_buffer.h
rio_drv.h
rio_ids.h
rio_regs.h
rio.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
rotary_encoder.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
rwlock_api_smp.h
rwlock_types.h
rwlock.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
s3c_adc_battery.h
sc26198.h
scatterlist.h
scc.h
sched.h sched: Cure more NO_HZ load average woes 2010-12-08 20:15:04 +01:00
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdla.h
seccomp.h
securebits.h
security.h fs: rcu-walk for path lookup 2011-01-07 17:50:27 +11:00
selection.h
selinux_netlink.h
selinux.h
sem.h
semaphore.h
seq_file_net.h
seq_file.h
seqlock.h kernel: optimise seqlock 2011-01-07 17:50:27 +11:00
serial_8250.h
serial_core.h
serial_max3100.h
serial_mfd.h
serial_pnx8xxx.h
serial_reg.h
serial_sci.h
serial.h
serial167.h
serialP.h
serio.h
sfi_acpi.h
sfi.h
sh_clk.h
sh_dma.h
sh_intc.h
sh_pfc.h
sh_timer.h
shm.h
shmem_fs.h
sht15.h
signal.h
signalfd.h
skbuff.h
slab_def.h
slab.h kernel: kmem_ptr_validate considered harmful 2011-01-07 17:50:16 +11:00
slob_def.h
slub_def.h
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp_lock.h
smp.h
smsc911x.h
snmp.h tcp: Replace time wait bucket msg by counter 2010-12-08 12:16:33 -08:00
socket.h
sockios.h
som.h
sonet.h
sony-laptop.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
splice.h
srcu.h
stackprotector.h
stacktrace.h
stallion.h
start_kernel.h
stat.h
statfs.h
stddef.h
stmmac.h
stop_machine.h
string_helpers.h
string.h
stringify.h
superhyway.h
suspend_ioctls.h
suspend.h
svga.h
swab.h
swap.h
swapops.h
swiotlb.h
synclink.h
sys.h
syscalls.h
sysctl.h
sysdev.h
sysfs.h
syslog.h
sysrq.h
sysv_fs.h
task_io_accounting_ops.h
task_io_accounting.h
taskstats_kern.h
taskstats.h taskstats: pad taskstats netlink response for aligment issues on ia64 2010-12-22 19:43:34 -08:00
tboot.h
tc.h
tca6416_keypad.h
tcp.h
telephony.h
termios.h
textsearch_fsm.h
textsearch.h
tfrc.h
thermal.h
thread_info.h
threads.h
ti_wilink_st.h
tick.h
tifm.h
timb_dma.h
timb_gpio.h
time.h
timecompare.h
timer.h
timerfd.h
timeriomem-rng.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc.h
topology.h
toshiba.h
tpm.h
trace_clock.h
trace_seq.h
tracehook.h
tracepoint.h
transport_class.h
trdevice.h
tsacct_kern.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h Merge branch 'tty-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 2010-12-02 12:58:16 -08:00
typecheck.h
types.h
u64_stats_sync.h
uaccess.h
ucb1400.h
udf_fs_i.h
udp.h
uinput.h
uio_driver.h
uio.h
ultrasound.h
un.h
unistd.h
usb_usual.h
usb.h
usbdevice_fs.h
user_namespace.h
user-return-notifier.h
user.h
utime.h
uts.h
utsname.h
uuid.h
uwb.h
vermagic.h
veth.h
vfs.h
vga_switcheroo.h
vgaarb.h
vhost.h
via_i2c.h
via-core.h
via-gpio.h
via.h
video_output.h ACPI: video: fix build for VIDEO_OUTPUT_CONTROL=n 2010-12-11 02:01:35 -05:00
videodev.h
videodev2.h
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_ids.h
virtio_net.h
virtio_pci.h
virtio_ring.h
virtio_rng.h
virtio.h
vlynq.h
vmalloc.h vmalloc: eagerly clear ptes on vunmap 2010-12-02 14:51:15 -08:00
vmstat.h
vt_buffer.h
vt_kern.h
vt.h
w1-gpio.h
wait.h
wanrouter.h
watchdog.h
wimax.h
wireless.h
wl12xx.h
wm97xx.h
workqueue.h
writeback.h
x25.h
xattr.h
xfrm.h
xilinxfb.h
yam.h
z2_battery.h
zconf.h
zlib.h
zorro_ids.h
zorro.h
zutil.h