[PATCH 0/4] [RFC] Fallocate Volatile Ranges

From: John Stultz
Date: Fri May 25 2012 - 15:19:12 EST


So here's the first pass at re-implementing the volatile range
idea using the fallocate interface, as suggested by Dave Chinner.

The range tree code is mostly unchanged.

The volatile range management code has been somewhat abstracted
out as helper functions that allow filesystems to get the same
logic but leaving it to the filesystem to handle the page purging.

Finally there is the tmpfs enablement for FALLOC_FL_MARK_VOLATILE.

This is all done on top of Hugh/Cong's tmpfs FALLOC_FL_PUNCH_HOLE
enablement.

I've only managed to do minimal testing at this point, but I wanted
to get this out before the long-weekend holiday in the US.

Few of the things still on my todo list:
* Move the volatile mapping hash to be per volatile_fs_head
* Kill the extra hash locking
* Keep track of unpurged pages in volatile_fs_head, to avoid
running through the lru at shrink time.

Your thoughts and feedback will be appreciated!

thanks
-john


CC: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
CC: Android Kernel Team <kernel-team@xxxxxxxxxxx>
CC: Robert Love <rlove@xxxxxxxxxx>
CC: Mel Gorman <mel@xxxxxxxxx>
CC: Hugh Dickins <hughd@xxxxxxxxxx>
CC: Dave Hansen <dave@xxxxxxxxxxxxxxxxxx>
CC: Rik van Riel <riel@xxxxxxxxxx>
CC: Dmitry Adamushko <dmitry.adamushko@xxxxxxxxx>
CC: Dave Chinner <david@xxxxxxxxxxxxx>
CC: Neil Brown <neilb@xxxxxxx>
CC: Andrea Righi <andrea@xxxxxxxxxxxxxxx>
CC: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx>
CC: Taras Glek <tgek@xxxxxxxxxxx>
CC: Mike Hommey <mh@xxxxxxxxxxxx>


Hugh Dickins (1):
tmpfs: support fallocate FALLOC_FL_PUNCH_HOLE

John Stultz (3):
[RFC] Range tree implementation
[RFC] Add volatile range management code
[RFC] tmpfs: Add FALLOC_FL_MARK_VOLATILE/UNMARK_VOLATILE handlers

fs/open.c | 3 +-
include/linux/falloc.h | 7 +-
include/linux/rangetree.h | 53 +++++
include/linux/volatile.h | 43 ++++
lib/Makefile | 2 +-
lib/rangetree.c | 107 ++++++++++
mm/Makefile | 2 +-
mm/shmem.c | 175 +++++++++++++++-
mm/volatile.c | 493 +++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 868 insertions(+), 17 deletions(-)
create mode 100644 include/linux/rangetree.h
create mode 100644 include/linux/volatile.h
create mode 100644 lib/rangetree.c
create mode 100644 mm/volatile.c

--
1.7.3.2.146.gca209

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/