Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 00/12] Swap-over-NFS without deadlocking V8

Changelog since V7
  o Rebase to linux-next 20120629
  o bi->page_dma instead of bi->page in intel driver
  o Build fix for !CONFIG_NET					(sebastian)
  o Restore PF_MEMALLOC flags correctly in all cases		(jlayton)

Changelog since V6
  o Rebase to linux-next 20120622

Changelog since V5
  o Rebase to v3.5-rc3

Changelog since V4
  o Catch if SOCK_MEMALLOC flag is cleared with rmem tokens	(davem)

Changelog since V3
  o Rebase to 3.4-rc5
  o kmap pages for writing to swap				(akpm)
  o Move forward declaration to reduce chance of duplication	(akpm)

Changelog since V2
  o Nothing significant, just rebases. A radix tree lookup is replaced with
    a linear search would be the biggest rebase artifact

This patch series is based on top of "Swap-over-NBD without deadlocking v14"
as it depends on the same reservation of PF_MEMALLOC reserves logic.

When a user or administrator requires swap for their application, they
create a swap partition and file, format it with mkswap and activate it with
swapon. In diskless systems this is not an option so if swap if required
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 03/12] mm: Methods for teaching filesystems about PG_swapcache pages

In order to teach filesystems to handle swap cache pages, three new
page functions are introduced:

  pgoff_t page_file_index(struct page *);
  loff_t page_file_offset(struct page *);
  struct address_space *page_file_mapping(struct page *);

page_file_index() - gives the offset of this page in the file in
PAGE_CACHE_SIZE blocks. Like page->index is for mapped pages, this
function also gives the correct index for PG_swapcache pages.

page_file_offset() - uses page_file_index(), so that it will give
the expected result, even for PG_swapcache pages.

page_file_mapping() - gives the mapping backing the actual page;
that is for swap cache pages it will give swap_file->f_mapping.

Signed-off-by: Peter Zijlstra <a.p.zijlstra <at> chello.nl>
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Reviewed-by: Rik van Riel <riel <at> redhat.com>
---
 include/linux/mm.h      |   25 +++++++++++++++++++++++++
 include/linux/pagemap.h |    5 +++++
 mm/swapfile.c           |   19 +++++++++++++++++++
 3 files changed, 49 insertions(+)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index a4549c6..b3d4cd9 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 01/12] netvm: Prevent a stream-specific deadlock

It could happen that all !SOCK_MEMALLOC sockets have buffered so
much data that we're over the global rmem limit. This will prevent
SOCK_MEMALLOC buffers from receiving data, which will prevent userspace
from running, which is needed to reduce the buffered data.

Fix this by exempting the SOCK_MEMALLOC sockets from the rmem limit.
Once this change it applied, it is important that sockets that set
SOCK_MEMALLOC do not clear the flag until the socket is being torn down.
If this happens, a warning is generated and the tokens reclaimed to
avoid accounting errors until the bug is fixed.

[davem <at> davemloft.net: Warning about clearing SOCK_MEMALLOC]
Signed-off-by: Peter Zijlstra <a.p.zijlstra <at> chello.nl>
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: David S. Miller <davem <at> davemloft.net>
Acked-by: Rik van Riel<riel <at> redhat.com>
---
 include/net/sock.h     |    8 +++++---
 net/caif/caif_socket.c |    2 +-
 net/core/sock.c        |   14 +++++++++++++-
 net/ipv4/tcp_input.c   |   21 +++++++++++----------
 net/sctp/ulpevent.c    |    3 ++-
 5 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/include/net/sock.h b/include/net/sock.h
index 767c443..5faae49 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
 <at>  <at>  -1326,12 +1326,14  <at>  <at>  static inline bool sk_wmem_schedule(struct sock *sk, int size)
 		__sk_mem_schedule(sk, size, SK_MEM_SEND);
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 02/12] selinux: tag avc cache alloc as non-critical

Failing to allocate a cache entry will only harm performance not
correctness.  Do not consume valuable reserve pages for something
like that.

Signed-off-by: Peter Zijlstra <a.p.zijlstra <at> chello.nl>
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Eric Paris <eparis <at> redhat.com>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 security/selinux/avc.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index 68d82da..4d3fab4 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
 <at>  <at>  -274,7 +274,7  <at>  <at>  static struct avc_node *avc_alloc_node(void)
 {
 	struct avc_node *node;

-	node = kmem_cache_zalloc(avc_node_cachep, GFP_ATOMIC);
+	node = kmem_cache_zalloc(avc_node_cachep, GFP_ATOMIC|__GFP_NOMEMALLOC);
 	if (!node)
 		goto out;

--

-- 
1.7.9.2

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 04/12] mm: Add support for a filesystem to activate swap files and use direct_IO for writing swap pages

Currently swapfiles are managed entirely by the core VM by using ->bmap
to allocate space and write to the blocks directly. This effectively
ensures that the underlying blocks are allocated and avoids the need
for the swap subsystem to locate what physical blocks store offsets
within a file.

If the swap subsystem is to use the filesystem information to locate
the blocks, it is critical that information such as block groups,
block bitmaps and the block descriptor table that map the swap file
were resident in memory. This patch adds address_space_operations that
the VM can call when activating or deactivating swap backed by a file.

  int swap_activate(struct file *);
  int swap_deactivate(struct file *);

The ->swap_activate() method is used to communicate to the
file that the VM relies on it, and the address_space should take
adequate measures such as reserving space in the underlying device,
reserving memory for mempools and pinning information such as the
block descriptor table in memory. The ->swap_deactivate() method is
called on sys_swapoff() if ->swap_activate() returned success.

After a successful swapfile ->swap_activate, the swapfile
is marked SWP_FILE and swapper_space.a_ops will proxy to
sis->swap_file->f_mappings->a_ops using ->direct_io to write swapcache
pages and ->readpage to read.

It is perfectly possible that direct_IO be used to read the swap
pages but it is an unnecessary complication. Similarly, it is possible
that ->writepage be used instead of direct_io to write the pages but
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 05/12] mm: swap: Implement generic handler for swap_activate

The version of swap_activate introduced is sufficient for swap-over-NFS
but would not provide enough information to implement a generic handler.
This patch shuffles things slightly to ensure the same information is
available for aops->swap_activate() as is available to the core.

No functionality change.

Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 include/linux/fs.h   |    6 ++--
 include/linux/swap.h |    5 +++
 mm/page_io.c         |   92 ++++++++++++++++++++++++++++++++++++++++++++++++++
 mm/swapfile.c        |   91 +++----------------------------------------------
 4 files changed, 106 insertions(+), 88 deletions(-)

diff --git a/include/linux/fs.h b/include/linux/fs.h
index 2a6396b..006aa85 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
 <at>  <at>  -427,6 +427,7  <at>  <at>  struct kstatfs;
 struct vm_area_struct;
 struct vfsmount;
 struct cred;
+struct swap_info_struct;

 extern void __init inode_init(void);
 extern void __init inode_init_early(void);
 <at>  <at>  -640,8 +641,9  <at>  <at>  struct address_space_operations {
 	int (*error_remove_page)(struct address_space *, struct page *);
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 06/12] mm: Add get_kernel_page[s] for pinning of kernel addresses for I/O

This patch adds two new APIs get_kernel_pages() and get_kernel_page()
that may be used to pin a vector of kernel addresses for IO. The initial
user is expected to be NFS for allowing pages to be written to swap
using aops->direct_IO(). Strictly speaking, swap-over-NFS only needs
to pin one page for IO but it makes sense to express the API in terms
of a vector and add a helper for pinning single pages.

Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Reviewed-by: Rik van Riel <riel <at> redhat.com>
---
 include/linux/blk_types.h |    2 ++
 include/linux/fs.h        |    2 ++
 include/linux/mm.h        |    4 ++++
 mm/memory.c               |   53 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 61 insertions(+)

diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index 0edb65d..7b7ac9c 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
 <at>  <at>  -160,6 +160,7  <at>  <at>  enum rq_flag_bits {
 	__REQ_FLUSH_SEQ,	/* request for flush sequence */
 	__REQ_IO_STAT,		/* account I/O stat */
 	__REQ_MIXED_MERGE,	/* merge of different types, fail separately */
+	__REQ_KERNEL, 		/* direct IO to kernel pages */
 	__REQ_NR_BITS,		/* stops here */
 };

 <at>  <at>  -201,5 +202,6  <at>  <at>  enum rq_flag_bits {
 #define REQ_IO_STAT		(1 << __REQ_IO_STAT)
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 07/12] mm: Add support for direct_IO to highmem pages

The patch "mm: Add support for a filesystem to activate swap files and
use direct_IO for writing swap pages" added support for using direct_IO
to write swap pages but it is insufficient for highmem pages.

To support highmem pages, this patch kmaps() the page before calling the
direct_IO() handler. As direct_IO deals with virtual addresses an
additional helper is necessary for get_kernel_pages() to lookup the
struct page for a kmap virtual address.

Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 include/linux/highmem.h |    7 +++++++
 mm/highmem.c            |   12 ++++++++++++
 mm/memory.c             |    3 +--
 mm/page_io.c            |    3 ++-
 4 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index 774fa47..ef788b5 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
 <at>  <at>  -39,10 +39,17  <at>  <at>  extern unsigned long totalhigh_pages;

 void kmap_flush_unused(void);

+struct page *kmap_to_page(void *addr);
+
 #else /* CONFIG_HIGHMEM */

(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 11/12] nfs: Prevent page allocator recursions with swap over NFS.

GFP_NOFS is _more_ permissive than GFP_NOIO in that it will initiate
IO, just not of any filesystem data.

The problem is that previously NOFS was correct because that avoids
recursion into the NFS code. With swap-over-NFS, it is no longer
correct as swap IO can lead to this recursion.

Signed-off-by: Peter Zijlstra <a.p.zijlstra <at> chello.nl>
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 fs/nfs/pagelist.c |    2 +-
 fs/nfs/write.c    |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index 9ef8b3c..7de1646 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
 <at>  <at>  -70,7 +70,7  <at>  <at>  void nfs_set_pgio_error(struct nfs_pgio_header *hdr, int error, loff_t pos)
 static inline struct nfs_page *
 nfs_page_alloc(void)
 {
-	struct nfs_page	*p = kmem_cache_zalloc(nfs_page_cachep, GFP_KERNEL);
+	struct nfs_page	*p = kmem_cache_zalloc(nfs_page_cachep, GFP_NOIO);
 	if (p)
 		INIT_LIST_HEAD(&p->wb_list);
 	return p;
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 947e1e6..0f7fdb7 100644
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 10/12] nfs: enable swap on NFS

Implement the new swapfile a_ops for NFS and hook up ->direct_IO. This
will set the NFS socket to SOCK_MEMALLOC and run socket reconnect
under PF_MEMALLOC as well as reset SOCK_MEMALLOC before engaging the
protocol ->connect() method.

PF_MEMALLOC should allow the allocation of struct socket and related
objects and the early (re)setting of SOCK_MEMALLOC should allow us
to receive the packets required for the TCP connection buildup.

[jlayton <at> redhat.com: Restore PF_MEMALLOC task flags in all cases]
[dfeng <at> redhat.com: Fix handling of multiple swap files]
[a.p.zijlstra <at> chello.nl: Original patch]
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 fs/nfs/Kconfig              |    8 +++++
 fs/nfs/direct.c             |   82 ++++++++++++++++++++++++++++---------------
 fs/nfs/file.c               |   22 ++++++++++--
 include/linux/nfs_fs.h      |    4 +--
 include/linux/sunrpc/xprt.h |    3 ++
 net/sunrpc/Kconfig          |    5 +++
 net/sunrpc/clnt.c           |    2 ++
 net/sunrpc/sched.c          |    7 ++--
 net/sunrpc/xprtsock.c       |   54 ++++++++++++++++++++++++++++
 9 files changed, 153 insertions(+), 34 deletions(-)

diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
index b47452f..07f35c6 100644
--- a/fs/nfs/Kconfig
+++ b/fs/nfs/Kconfig
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 08/12] nfs: teach the NFS client how to treat PG_swapcache pages

Replace all relevant occurences of page->index and page->mapping in
the NFS client with the new page_file_index() and page_file_mapping()
functions.

Signed-off-by: Peter Zijlstra <a.p.zijlstra <at> chello.nl>
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 fs/nfs/file.c     |    6 +++---
 fs/nfs/internal.h |    7 ++++---
 fs/nfs/pagelist.c |    2 +-
 fs/nfs/read.c     |    6 +++---
 fs/nfs/write.c    |   38 +++++++++++++++++++-------------------
 5 files changed, 30 insertions(+), 29 deletions(-)

diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index a6708e6b..406caac 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
 <at>  <at>  -442,7 +442,7  <at>  <at>  static void nfs_invalidate_page(struct page *page, unsigned long offset)
 	if (offset != 0)
 		return;
 	/* Cancel any unstarted writes on this page */
-	nfs_wb_page_cancel(page->mapping->host, page);
+	nfs_wb_page_cancel(page_file_mapping(page)->host, page);

 	nfs_fscache_invalidate_page(page, page->mapping->host);
 }
 <at>  <at>  -484,7 +484,7  <at>  <at>  static int nfs_release_page(struct page *page, gfp_t gfp)
  */
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 09/12] nfs: disable data cache revalidation for swapfiles

The VM does not like PG_private set on PG_swapcache pages. As suggested
by Trond in http://lkml.org/lkml/2006/8/25/348, this patch disables
NFS data cache revalidation on swap files.  as it does not make
sense to have other clients change the file while it is being used as
swap. This avoids setting PG_private on swap pages, since there ought
to be no further races with invalidate_inode_pages2() to deal with.

Since we cannot set PG_private we cannot use page->private which
is already used by PG_swapcache pages to store the nfs_page. Thus
augment the new nfs_page_find_request logic.

Signed-off-by: Peter Zijlstra <a.p.zijlstra <at> chello.nl>
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 fs/nfs/inode.c |    4 ++++
 fs/nfs/write.c |   49 +++++++++++++++++++++++++++++++++++--------------
 2 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index edecd05..90810a4 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
 <at>  <at>  -883,6 +883,10  <at>  <at>  int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping)
 	struct nfs_inode *nfsi = NFS_I(inode);
 	int ret = 0;

+	/* swapfiles are not supposed to be shared. */
+	if (IS_SWAPFILE(inode))
+		goto out;
(Continue reading)

Mel Gorman | 29 Jun 2012 15:33
Picon

[PATCH 12/12] Avoid dereferencing bd_disk during swap_entry_free for network storage

Commit [b3a27d: swap: Add swap slot free callback to
block_device_operations] dereferences p->bdev->bd_disk but this is a
NULL dereference if using swap-over-NFS. This patch checks SWP_BLKDEV
on the swap_info_struct before dereferencing.

With reference to this callback, Christoph Hellwig stated "Please
just remove the callback entirely.  It has no user outside the staging
tree and was added clearly against the rules for that staging tree".
This would also be my preference but there was not an obvious way of
keeping zram in staging/ happy.

Signed-off-by: Xiaotian Feng <dfeng <at> redhat.com>
Signed-off-by: Mel Gorman <mgorman <at> suse.de>
Acked-by: Rik van Riel <riel <at> redhat.com>
---
 mm/swapfile.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/mm/swapfile.c b/mm/swapfile.c
index 1d77b13..f4c802d 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
 <at>  <at>  -549,7 +549,6  <at>  <at>  static unsigned char swap_entry_free(struct swap_info_struct *p,

 	/* free if no reference */
 	if (!usage) {
-		struct gendisk *disk = p->bdev->bd_disk;
 		if (offset < p->lowest_bit)
 			p->lowest_bit = offset;
 		if (offset > p->highest_bit)
(Continue reading)

Eric B Munson | 1 Jul 2012 19:22

Re: [PATCH 00/12] Swap-over-NFS without deadlocking V8

On Fri, 29 Jun 2012, Mel Gorman wrote:

> Changelog since V7
>   o Rebase to linux-next 20120629
>   o bi->page_dma instead of bi->page in intel driver
>   o Build fix for !CONFIG_NET					(sebastian)
>   o Restore PF_MEMALLOC flags correctly in all cases		(jlayton)
> 
> Changelog since V6
>   o Rebase to linux-next 20120622
> 
> Changelog since V5
>   o Rebase to v3.5-rc3
> 
> Changelog since V4
>   o Catch if SOCK_MEMALLOC flag is cleared with rmem tokens	(davem)
> 
> Changelog since V3
>   o Rebase to 3.4-rc5
>   o kmap pages for writing to swap				(akpm)
>   o Move forward declaration to reduce chance of duplication	(akpm)
> 
> Changelog since V2
>   o Nothing significant, just rebases. A radix tree lookup is replaced with
>     a linear search would be the biggest rebase artifact
> 
> This patch series is based on top of "Swap-over-NBD without deadlocking v14"
> as it depends on the same reservation of PF_MEMALLOC reserves logic.
> 
> When a user or administrator requires swap for their application, they
(Continue reading)

Mel Gorman | 2 Jul 2012 16:35
Picon

Re: [PATCH 00/12] Swap-over-NFS without deadlocking V8

On Sun, Jul 01, 2012 at 01:22:54PM -0400, Eric B Munson wrote:
> On Fri, 29 Jun 2012, Mel Gorman wrote:
> 
> > Changelog since V7
> >   o Rebase to linux-next 20120629
> >   o bi->page_dma instead of bi->page in intel driver
> >   o Build fix for !CONFIG_NET					(sebastian)
> >   o Restore PF_MEMALLOC flags correctly in all cases		(jlayton)
> > 
> > Changelog since V6
> >   o Rebase to linux-next 20120622
> > 
> > Changelog since V5
> >   o Rebase to v3.5-rc3
> > 
> > Changelog since V4
> >   o Catch if SOCK_MEMALLOC flag is cleared with rmem tokens	(davem)
> > 
> > Changelog since V3
> >   o Rebase to 3.4-rc5
> >   o kmap pages for writing to swap				(akpm)
> >   o Move forward declaration to reduce chance of duplication	(akpm)
> > 
> > Changelog since V2
> >   o Nothing significant, just rebases. A radix tree lookup is replaced with
> >     a linear search would be the biggest rebase artifact
> > 
> > This patch series is based on top of "Swap-over-NBD without deadlocking v14"
> > as it depends on the same reservation of PF_MEMALLOC reserves logic.
> > 
(Continue reading)

Eric B Munson | 3 Jul 2012 02:10

Re: [PATCH 00/12] Swap-over-NFS without deadlocking V8

On Mon, 02 Jul 2012, Mel Gorman wrote:

> On Sun, Jul 01, 2012 at 01:22:54PM -0400, Eric B Munson wrote:
> > On Fri, 29 Jun 2012, Mel Gorman wrote:
> > 
> > > Changelog since V7
> > >   o Rebase to linux-next 20120629
> > >   o bi->page_dma instead of bi->page in intel driver
> > >   o Build fix for !CONFIG_NET					(sebastian)
> > >   o Restore PF_MEMALLOC flags correctly in all cases		(jlayton)
> > > 
> > > Changelog since V6
> > >   o Rebase to linux-next 20120622
> > > 
> > > Changelog since V5
> > >   o Rebase to v3.5-rc3
> > > 
> > > Changelog since V4
> > >   o Catch if SOCK_MEMALLOC flag is cleared with rmem tokens	(davem)
> > > 
> > > Changelog since V3
> > >   o Rebase to 3.4-rc5
> > >   o kmap pages for writing to swap				(akpm)
> > >   o Move forward declaration to reduce chance of duplication	(akpm)
> > > 
> > > Changelog since V2
> > >   o Nothing significant, just rebases. A radix tree lookup is replaced with
> > >     a linear search would be the biggest rebase artifact
> > > 
> > > This patch series is based on top of "Swap-over-NBD without deadlocking v14"
(Continue reading)

Mel Gorman | 3 Jul 2012 10:58
Picon

Re: [PATCH 00/12] Swap-over-NFS without deadlocking V8

On Mon, Jul 02, 2012 at 08:10:51PM -0400, Eric B Munson wrote:
> On Mon, 02 Jul 2012, Mel Gorman wrote:
> 
> > On Sun, Jul 01, 2012 at 01:22:54PM -0400, Eric B Munson wrote:
> > > On Fri, 29 Jun 2012, Mel Gorman wrote:
> > > 
> > > > Changelog since V7
> > > >   o Rebase to linux-next 20120629
> > > >   o bi->page_dma instead of bi->page in intel driver
> > > >   o Build fix for !CONFIG_NET					(sebastian)
> > > >   o Restore PF_MEMALLOC flags correctly in all cases		(jlayton)
> > > > 
> > > > Changelog since V6
> > > >   o Rebase to linux-next 20120622
> > > > 
> > > > Changelog since V5
> > > >   o Rebase to v3.5-rc3
> > > > 
> > > > Changelog since V4
> > > >   o Catch if SOCK_MEMALLOC flag is cleared with rmem tokens	(davem)
> > > > 
> > > > Changelog since V3
> > > >   o Rebase to 3.4-rc5
> > > >   o kmap pages for writing to swap				(akpm)
> > > >   o Move forward declaration to reduce chance of duplication	(akpm)
> > > > 
> > > > Changelog since V2
> > > >   o Nothing significant, just rebases. A radix tree lookup is replaced with
> > > >     a linear search would be the biggest rebase artifact
> > > > 
(Continue reading)


Gmane