From: Linus Torvalds Date: Wed, 1 Aug 2012 02:25:39 +0000 (-0700) Subject: Merge branch 'akpm' (Andrew's patch-bomb) X-Git-Tag: v3.6-rc1~24 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ac694dbdbc403c00e2c14d10bc7b8412cc378259;p=platform%2Fupstream%2Fkernel-adaptation-pc.git Merge branch 'akpm' (Andrew's patch-bomb) Merge Andrew's second set of patches: - MM - a few random fixes - a couple of RTC leftovers * emailed patches from Andrew Morton : (120 commits) rtc/rtc-88pm80x: remove unneed devm_kfree rtc/rtc-88pm80x: assign ret only when rtc_register_driver fails mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables tmpfs: distribute interleave better across nodes mm: remove redundant initialization mm: warn if pg_data_t isn't initialized with zero mips: zero out pg_data_t when it's allocated memcg: gix memory accounting scalability in shrink_page_list mm/sparse: remove index_init_lock mm/sparse: more checks on mem_section number mm/sparse: optimize sparse_index_alloc memcg: add mem_cgroup_from_css() helper memcg: further prevent OOM with too many dirty pages memcg: prevent OOM with too many dirty pages mm: mmu_notifier: fix freed page still mapped in secondary MMU mm: memcg: only check anon swapin page charges for swap cache mm: memcg: only check swap cache pages for repeated charging mm: memcg: split swapin charge function into private and public part mm: memcg: remove needless !mm fixup to init_mm when charging mm: memcg: remove unneeded shmem charge type ... --- ac694dbdbc403c00e2c14d10bc7b8412cc378259 diff --cc net/sunrpc/xprtsock.c index 9266794,bd59d01..4005672 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@@ -1927,9 -1925,47 +1927,48 @@@ static void xs_local_setup_socket(struc out: xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, status); + current->flags &= ~PF_FSTRANS; } + #ifdef CONFIG_SUNRPC_SWAP + static void xs_set_memalloc(struct rpc_xprt *xprt) + { + struct sock_xprt *transport = container_of(xprt, struct sock_xprt, + xprt); + + if (xprt->swapper) + sk_set_memalloc(transport->inet); + } + + /** + * xs_swapper - Tag this transport as being used for swap. + * @xprt: transport to tag + * @enable: enable/disable + * + */ + int xs_swapper(struct rpc_xprt *xprt, int enable) + { + struct sock_xprt *transport = container_of(xprt, struct sock_xprt, + xprt); + int err = 0; + + if (enable) { + xprt->swapper++; + xs_set_memalloc(xprt); + } else if (xprt->swapper) { + xprt->swapper--; + sk_clear_memalloc(transport->inet); + } + + return err; + } + EXPORT_SYMBOL_GPL(xs_swapper); + #else + static void xs_set_memalloc(struct rpc_xprt *xprt) + { + } + #endif + static void xs_udp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock) { struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt);