mm: vmscan: If kswapd has been running too long, allow it to sleep

Under constant allocation pressure, kswapd can be in the situation where
sleeping_prematurely() will always return true even if kswapd has been
running a long time. Check if kswapd needs to be scheduled.

Signed-off-by: Mel Gorman <mgorman@suse.de>
HACK: selinux: Make sure valid sk->sk_security

 - check valid sk->sk_security pointer in sock_has_perm to avoid NULL
   pointer dereference.

Inspired by conversation on Security Enhanced Android developers'
mailing list:

http://comments.gmane.org/gmane.comp.security.seandroid/1110

Change-Id: I548a0a7f30b48d5bab7460ee4a9a69aa45600f0a
Signed-off-by: Hong-Mei Li <a21834@motorola.com>
Reviewed-on: http://gerrit.pcs.mot.com/574782
SLTApproved: Slta Waiver <sltawvr@motorola.com>
Tested-by: Jira Key <jirakey@motorola.com>
Reviewed-by: Check Patch <CHEKPACH@motorola.com>
Reviewed-by: Jeffrey Carlyle <jeff.carlyle@motorola.com>
Submit-Approved: Jira Key <jirakey@motorola.com>
Reviewed-on: http://gerrit.pcs.mot.com/576126
Revert "block: Tweak deadline and cfq tunables"

This reverts commit 0ed66cfbbb01b7033012af0699125142235f0ef4.
block: tweak deadline scheduler again

Change-Id: I521e5900882475cad63c7b01e74b6036781950d1
Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
sioplus: relax sync_read_expire, tighten sync_write_expire
Revert "sioplus: tweak writes_tarved for new memory updates"

This reverts commit 6900fb4f27a68c5da223c744cbb30bc304c2f387.
block: recursive merge requests

In a workload, thread 1 accesses a, a+2, ..., thread 2 accesses a+1, a+3,....
When the requests are flushed to queue, a and a+1 are merged to (a, a+1), a+2
and a+3 too to (a+2, a+3), but (a, a+1) and (a+2, a+3) aren't merged.

If we do recursive merge for such interleave access, some workloads throughput
get improvement. A recent worload I'm checking on is swap, below change
boostes the throughput around 5% ~ 10%.

Signed-off-by: Shaohua Li <shli@fusionio.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>