Files
kernel_xiaomi_sm8250/include/linux
Fengguang Wu fe3cba17c4 mm: share PG_readahead and PG_reclaim
Share the same page flag bit for PG_readahead and PG_reclaim.

One is used only on file reads, another is only for emergency writes.  One
is used mostly for fresh/young pages, another is for old pages.

Combinations of possible interactions are:

a) clear PG_reclaim => implicit clear of PG_readahead
	it will delay an asynchronous readahead into a synchronous one
	it actually does _good_ for readahead:
		the pages will be reclaimed soon, it's readahead thrashing!
		in this case, synchronous readahead makes more sense.

b) clear PG_readahead => implicit clear of PG_reclaim
	one(and only one) page will not be reclaimed in time
	it can be avoided by checking PageWriteback(page) in readahead first

c) set PG_reclaim => implicit set of PG_readahead
	will confuse readahead and make it restart the size rampup process
	it's a trivial problem, and can mostly be avoided by checking
	PageWriteback(page) first in readahead

d) set PG_readahead => implicit set of PG_reclaim
	PG_readahead will never be set on already cached pages.
	PG_reclaim will always be cleared on dirtying a page.
	so not a problem.

In summary,
	a)   we get better behavior
	b,d) possible interactions can be avoided
	c)   racy condition exists that might affect readahead, but the chance
	     is _really_ low, and the hurt on readahead is trivial.

Compound pages also use PG_reclaim, but for now they do not interact with
reclaim/readahead code.

Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-19 10:04:44 -07:00
..
2007-07-12 15:41:24 -07:00
2007-07-17 10:23:05 -07:00
2007-07-19 10:04:43 -07:00
2007-07-13 08:06:14 -07:00
2007-07-16 09:05:47 -07:00
2007-05-21 09:56:57 -07:00
2007-07-10 17:18:59 -07:00
2007-07-16 09:05:46 -07:00
2007-07-17 10:23:04 -07:00
2007-05-10 18:24:13 +02:00
2007-07-09 08:22:54 +01:00
2007-07-09 08:23:17 +01:00
2007-07-11 16:09:00 -07:00
2007-07-12 10:55:56 -07:00
2007-07-17 10:23:06 -07:00
2007-06-01 08:18:29 -07:00
2007-07-16 09:05:52 -07:00
2007-07-16 09:05:52 -07:00
2007-07-18 09:15:20 -04:00
2007-07-18 09:15:20 -04:00
2007-07-17 10:23:13 -07:00
2007-07-16 09:05:45 -07:00
2007-07-19 10:04:44 -07:00
2007-07-18 18:29:37 -04:00
2007-07-16 09:05:41 -07:00
2007-06-18 09:48:41 -07:00
2007-07-17 10:22:59 -07:00
2007-07-10 00:35:17 -04:00
2007-07-09 18:51:58 +02:00
2007-07-19 10:04:41 -07:00
2007-05-11 16:56:02 +02:00
2007-07-09 23:17:58 +02:00
2007-07-16 09:05:34 -07:00
2007-07-10 22:15:03 -07:00
2007-07-14 18:55:06 -07:00
2007-07-16 09:05:47 -07:00
2007-05-11 08:29:34 -07:00
2007-07-16 09:05:50 -07:00
2007-07-16 09:05:47 -07:00
2007-07-10 22:16:44 -07:00
2007-07-16 09:05:46 -07:00
2007-07-18 08:47:40 -07:00
2007-07-10 22:15:26 -07:00
2007-07-10 21:30:33 -04:00
2007-07-17 10:23:03 -07:00
2007-07-17 10:23:13 -07:00
2007-05-18 20:46:30 -07:00
2007-07-16 09:05:34 -07:00
2007-07-18 08:47:45 -07:00
2007-07-19 10:04:44 -07:00
2007-07-17 10:22:59 -07:00
2007-07-16 09:05:42 -07:00
2007-07-10 17:33:05 +01:00
2007-07-16 09:05:51 -07:00
2007-07-16 09:05:40 -07:00
2007-07-19 10:04:42 -07:00
2007-07-16 09:05:50 -07:00
2007-07-16 09:05:46 -07:00
2007-07-17 10:23:03 -07:00
2007-07-18 08:47:40 -07:00
2007-06-07 13:39:34 -07:00
2007-05-17 05:23:06 -07:00
2007-07-16 09:05:47 -07:00
2007-07-16 09:05:50 -07:00
2007-07-18 08:38:22 -07:00
2007-05-11 08:29:36 -07:00
2007-05-21 21:47:27 -07:00
2007-07-16 09:05:45 -07:00
2007-07-16 09:05:46 -07:00
2007-07-16 09:05:40 -07:00
2007-07-18 08:47:40 -07:00
2007-07-17 10:22:59 -07:00
2007-05-11 08:29:34 -07:00
2007-05-11 08:29:36 -07:00
2007-05-11 08:29:35 -07:00
2007-05-11 08:29:35 -07:00
2007-07-16 09:05:47 -07:00
2007-07-18 15:57:15 -07:00
2007-07-12 16:34:40 -07:00
2007-07-16 09:05:47 -07:00
2007-07-18 08:47:41 -07:00
2007-07-17 10:22:59 -07:00
2007-07-09 18:52:01 +02:00
2007-05-21 09:18:19 -07:00