This repository has been archived on 2026-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ubports_kernel_google_msm/include/linux
Nick Piggin fa0d7e3de6 fs: icache RCU free inodes
RCU free the struct inode. This will allow:

- Subsequent store-free path walking patch. The inode must be consulted for
  permissions when walking, so an RCU inode reference is a must.
- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want
  to take i_lock no longer need to take sb_inode_list_lock to walk the list in
  the first place. This will simplify and optimize locking.
- Could remove some nested trylock loops in dcache code
- Could potentially simplify things a bit in VM land. Do not need to take the
  page lock to follow page->mapping.

The downsides of this is the performance cost of using RCU. In a simple
creat/unlink microbenchmark, performance drops by about 10% due to inability to
reuse cache-hot slab objects. As iterations increase and RCU freeing starts
kicking over, this increases to about 20%.

In cases where inode lifetimes are longer (ie. many inodes may be allocated
during the average life span of a single inode), a lot of this cache reuse is
not applicable, so the regression caused by this patch is smaller.

The cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,
however this adds some complexity to list walking and store-free path walking,
so I prefer to implement this at a later date, if it is shown to be a win in
real situations. I haven't found a regression in any non-micro benchmark so I
doubt it will be a problem.

Signed-off-by: Nick Piggin <npiggin@kernel.dk>
2011-01-07 17:50:26 +11:00
..
2010-11-15 20:44:26 -05:00
2010-10-30 08:31:35 -07:00
2010-08-05 13:26:20 +01:00
2010-08-12 06:38:24 +10:00
2010-10-15 21:18:59 +02:00
2010-12-11 01:28:58 -05:00
2010-06-15 09:56:01 +10:00
2010-05-27 09:12:53 -07:00
2010-10-30 08:45:43 -04:00
2010-11-10 14:54:09 +01:00
2010-11-10 14:54:09 +01:00
2010-12-13 16:11:13 -08:00
2010-06-24 21:30:09 -07:00
2010-10-25 21:18:20 -04:00
2010-10-25 08:02:40 -07:00
2010-08-06 15:36:47 -05:00
2010-08-19 17:18:00 -07:00
2011-01-07 17:50:24 +11:00
2010-05-19 22:41:57 -04:00
2010-05-10 16:08:01 -07:00
2010-08-04 11:00:45 +02:00
2010-08-12 04:14:05 +01:00
2010-10-22 15:55:22 +02:00
2010-10-21 14:47:59 +02:00
2010-09-23 14:33:39 -07:00
2010-11-17 14:55:45 +09:00
2010-08-19 17:18:03 -07:00
2010-08-18 08:35:46 -04:00
2011-01-07 17:50:26 +11:00
2011-01-07 17:50:23 +11:00
2010-09-09 20:46:30 +02:00
2010-07-12 14:41:40 +02:00
2010-10-25 14:11:37 -07:00
2010-05-21 09:34:29 -07:00
2010-10-23 22:49:32 +02:00
2010-10-12 16:53:37 +02:00
2010-08-11 09:23:22 +02:00
2010-11-15 22:40:38 +01:00
2010-11-15 22:40:38 +01:00
2010-06-16 18:08:13 +02:00
2010-06-03 03:21:52 -07:00
2010-09-21 18:04:47 -07:00
2010-08-29 21:57:55 -07:00
2010-08-19 17:16:23 -07:00
2010-09-30 21:16:05 -07:00
2010-10-26 16:52:08 -07:00
2010-08-09 20:45:05 -07:00
2010-10-07 14:08:55 +01:00
2010-06-03 03:21:52 -07:00
2010-08-10 11:49:21 -07:00
2010-08-18 10:19:52 +02:00
2010-08-12 11:27:58 +02:00
2010-10-28 17:22:13 -04:00
2010-10-22 15:34:12 -05:00
2010-08-19 17:18:00 -07:00
2010-05-21 09:37:29 -07:00
2010-09-09 18:57:24 -07:00
2010-12-22 10:27:53 +01:00
2010-05-14 15:09:32 -04:00
2010-08-02 06:39:44 +03:00
2010-04-03 14:56:05 -07:00
2010-11-12 07:55:32 -08:00
2010-11-16 13:33:23 -08:00
2010-10-25 21:24:15 -04:00
2010-06-16 18:03:15 +02:00
2010-10-28 09:08:47 -05:00
2010-08-09 16:48:45 -04:00
2010-06-03 03:21:52 -07:00
2010-10-26 16:52:05 -07:00
2010-08-11 00:29:47 -04:00
2010-05-11 14:40:55 +02:00
2010-10-12 16:53:34 +02:00
2011-01-07 17:50:23 +11:00
2010-10-04 21:10:52 +02:00
2011-01-07 17:50:19 +11:00
2011-01-07 17:50:26 +11:00
2010-12-02 09:58:00 -05:00
2010-10-07 18:48:49 -04:00
2010-08-19 17:18:02 -07:00
2010-07-05 16:14:52 -06:00
2010-10-15 12:45:44 +02:00
2010-10-17 20:03:03 -07:00
2010-10-17 20:03:06 -07:00
2010-10-24 15:07:11 -07:00
2010-08-21 23:40:14 -07:00
2010-07-19 01:58:48 +02:00
2010-07-19 01:58:48 +02:00
2010-08-04 21:53:17 -07:00
2010-11-12 07:55:32 -08:00
2010-10-29 04:16:31 -04:00
2010-09-08 18:16:55 -07:00
2010-08-09 16:47:27 -04:00
2010-10-27 18:03:16 -07:00
2010-05-11 10:09:47 +02:00
2010-07-23 17:08:41 +04:00
2010-06-03 03:21:52 -07:00
2010-10-30 12:12:50 +02:00
2010-10-20 03:02:23 -07:00
2010-10-27 17:28:36 +01:00
2010-10-07 14:08:55 +01:00
2010-08-09 16:48:44 -04:00
2010-09-24 21:27:41 -07:00
2010-05-15 23:28:39 -07:00
2010-08-30 13:23:33 -07:00
2010-03-25 17:18:43 -07:00
2010-03-23 17:19:38 +01:00
2010-10-21 04:11:07 -07:00
2010-09-09 20:41:20 +02:00
2010-10-22 10:20:04 -07:00
2010-10-26 16:52:03 -07:00
2010-05-19 22:40:47 -04:00
2010-05-19 22:15:46 +09:30
2010-10-26 16:52:14 -07:00
2010-04-06 20:35:58 +04:00