• Dan Magenheimer's avatar
    mm: cleancache core ops functions and config · 077b1f83
    Dan Magenheimer authored
    This third patch of eight in this cleancache series provides
    the core code for cleancache that interfaces between the hooks in
    VFS and individual filesystems and a cleancache backend.  It also
    includes build and config patches.
    Two new files are added: mm/cleancache.c and include/linux/cleancache.h.
    Note that CONFIG_CLEANCACHE can default to on; in systems that do
    not provide a cleancache backend, all hooks devolve to a simple
    check of a global enable flag, so performance impact should
    be negligible but can be reduced to zero impact if config'ed off.
    However for this first commit, it defaults to off.
    Details and a FAQ can be found in Documentation/vm/cleancache.txt
    Credits: Cleancache_ops design derived from Jeremy Fitzhardinge
    design for tmem
    [v8: dan.magenheimer@oracle.com: fix exportfs call affecting btrfs]
    [v8: akpm@linux-foundation.org: use static inline function, not macro]
    [v7: dan.magenheimer@oracle.com: cleanup sysfs and remove cleancache prefix]
    [v6: JBeulich@novell.com: robustly handle buggy fs encode_fh actor definition]
    [v5: jeremy@goop.org: clean up global usage and static var names]
    [v5: jeremy@goop.org: simplify init hook and any future fs init changes]
    [v5: hch@infradead.org: cleaner non-global interface for ops registration]
    [v4: adilger@sun.com: interface must support exportfs FS's]
    [v4: hch@infradead.org: interface must support 64-bit FS on 32-bit kernel]
    [v3: akpm@linux-foundation.org: use one ops struct to avoid pointer hops]
    [v3: akpm@linux-foundation.org: document and ensure PageLocked reqts are met]
    [v3: ngupta@vflare.org: fix success/fail codes, change funcs to void]
    [v2: viro@ZenIV.linux.org.uk: use sane types]
    Signed-off-by: default avatarDan Magenheimer <dan.magenheimer@oracle.com>
    Reviewed-by: default avatarJeremy Fitzhardinge <jeremy@goop.org>
    Reviewed-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Acked-by: default avatarAl Viro <viro@ZenIV.linux.org.uk>
    Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarNitin Gupta <ngupta@vflare.org>
    Acked-by: default avatarMinchan Kim <minchan.kim@gmail.com>
    Acked-by: default avatarAndreas Dilger <adilger@sun.com>
    Acked-by: default avatarJan Beulich <JBeulich@novell.com>
    Cc: Matthew Wilcox <matthew@wil.cx>
    Cc: Nick Piggin <npiggin@kernel.dk>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Cc: Rik Van Riel <riel@redhat.com>
    Cc: Chris Mason <chris.mason@oracle.com>
    Cc: Ted Ts'o <tytso@mit.edu>
    Cc: Mark Fasheh <mfasheh@suse.com>
    Cc: Joel Becker <joel.becker@oracle.com>