aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/timerqueue.h
diff options
context:
space:
mode:
authorTim Chen <tim.c.chen@linux.intel.com>2011-04-15 14:39:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-04-15 18:28:12 -0400
commitc1530019e311c91d14b24d8e74d233152d806e45 (patch)
tree37bd46f1d30534d8f03a186338295b653e75886c /include/linux/timerqueue.h
parent5853b4f06f7b9b56f37f457d7923f7b96496074e (diff)
vfs: Fix absolute RCU path walk failures due to uninitialized seq number
During RCU walk in path_lookupat and path_openat, the rcu lookup frequently failed if looking up an absolute path, because when root directory was looked up, seq number was not properly set in nameidata. We dropped out of RCU walk in nameidata_drop_rcu due to mismatch in directory entry's seq number. We reverted to slow path walk that need to take references. With the following patch, I saw a 50% increase in an exim mail server benchmark throughput on a 4-socket Nehalem-EX system. Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com> Reviewed-by: Andi Kleen <ak@linux.intel.com> Cc: stable@kernel.org (v2.6.38) Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/timerqueue.h')
0 files changed, 0 insertions, 0 deletions
m">/* cut requested size to max available instead of failing */ #define PTRACE_BTS_CONFIG 40 /* Configure branch trace recording. ADDR points to a struct ptrace_bts_config. DATA gives the size of that buffer. A new buffer is allocated, iff the size changes. Returns the number of bytes read. */ #define PTRACE_BTS_STATUS 41 /* Return the current configuration in a struct ptrace_bts_config pointed to by ADDR; DATA gives the size of that buffer. Returns the number of bytes written. */ #define PTRACE_BTS_SIZE 42 /* Return the number of available BTS records. DATA and ADDR are ignored. */ #define PTRACE_BTS_GET 43 /* Get a single BTS record. DATA defines the index into the BTS array, where 0 is the newest entry, and higher indices refer to older entries. ADDR is pointing to struct bts_struct (see asm/ds.h). */ #define PTRACE_BTS_CLEAR 44 /* Clear the BTS buffer. DATA and ADDR are ignored. */ #define PTRACE_BTS_DRAIN 45 /* Read all available BTS records and clear the buffer. ADDR points to an array of struct bts_struct. DATA gives the size of that buffer. BTS records are read from oldest to newest. Returns number of BTS records drained. */ #endif