linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] cleancache improvements for 3.4 (v1).
@ 2012-01-12 20:36 Konrad Rzeszutek Wilk
  2012-01-12 20:36 ` [PATCH 1/4] mm: cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Konrad Rzeszutek Wilk @ 2012-01-12 20:36 UTC (permalink / raw)
  To: linux-kernel, akpm

These are some fixes/cleanups that Dan had queued up for some time and
I am posting them for v3.4 review. Here is the hand-off Ack by Dan:
https://lkml.org/lkml/2012/1/12/262

I think you were OK with them, considering most of them have:
'akpm: *says* do this' but since it has been some time I am
reposting them.

If everything looks fine, I can handle the git pull machination so
that you don't have to patch bomb Linus with 300+ patches for v3.4.

These patches are also available at:

git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm.git devel/cleancache.v12

Thanks!


 .../ABI/testing/sysfs-kernel-mm-cleancache         |   11 --
 Documentation/vm/cleancache.txt                    |   41 ++++----
 drivers/staging/zcache/zcache-main.c               |   10 +-
 drivers/xen/tmem.c                                 |   10 +-
 fs/block_dev.c                                     |    2 +-
 fs/super.c                                         |    2 +-
 include/linux/cleancache.h                         |   24 +++---
 mm/cleancache.c                                    |   98 ++++++++------------
 mm/filemap.c                                       |    2 +-
 mm/truncate.c                                      |   10 +-
 10 files changed, 89 insertions(+), 121 deletions(-)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/4] mm: cleancache: s/flush/invalidate/
  2012-01-12 20:36 [PATCH] cleancache improvements for 3.4 (v1) Konrad Rzeszutek Wilk
@ 2012-01-12 20:36 ` Konrad Rzeszutek Wilk
  2012-01-13 15:16   ` Seth Jennings
  2012-01-12 20:36 ` [PATCH 2/4] mm: zcache/tmem/cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Konrad Rzeszutek Wilk @ 2012-01-12 20:36 UTC (permalink / raw)
  To: linux-kernel, akpm
  Cc: Dan Magenheimer, Kamezawa Hiroyuki, Jan Beulich, Seth Jennings,
	Jeremy Fitzhardinge, Hugh Dickins, Johannes Weiner, Nitin Gupta,
	Matthew Wilcox, Chris Mason, Rik Riel, Konrad Rzeszutek Wilk

From: Dan Magenheimer <dan.magenheimer@oracle.com>

Per akpm suggestions alter the use of the term flush to be
invalidate. The next patch will do this across all MM.

This change is completely cosmetic.

[v9: akpm@linux-foundation.org: change "flush" to "invalidate", part 3]

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Jan Beulich <JBeulich@novell.com>
Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Rik Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
[v10: Fixed  fs: move code out of buffer.c conflict change]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 Documentation/vm/cleancache.txt |   37 +++++++++++++++++++------------------
 fs/block_dev.c                  |    2 +-
 fs/super.c                      |    2 +-
 include/linux/cleancache.h      |   23 ++++++++++++++---------
 mm/cleancache.c                 |   19 ++++++++++---------
 mm/filemap.c                    |    2 +-
 mm/truncate.c                   |   10 +++++-----
 7 files changed, 51 insertions(+), 44 deletions(-)

diff --git a/Documentation/vm/cleancache.txt b/Documentation/vm/cleancache.txt
index 36c367c..e0a5356 100644
--- a/Documentation/vm/cleancache.txt
+++ b/Documentation/vm/cleancache.txt
@@ -46,10 +46,11 @@ a negative return value indicates failure.  A "put_page" will copy a
 the pool id, a file key, and a page index into the file.  (The combination
 of a pool id, a file key, and an index is sometimes called a "handle".)
 A "get_page" will copy the page, if found, from cleancache into kernel memory.
-A "flush_page" will ensure the page no longer is present in cleancache;
-a "flush_inode" will flush all pages associated with the specified file;
-and, when a filesystem is unmounted, a "flush_fs" will flush all pages in
-all files specified by the given pool id and also surrender the pool id.
+An "invalidate_page" will ensure the page no longer is present in cleancache;
+an "invalidate_inode" will invalidate all pages associated with the specified
+file; and, when a filesystem is unmounted, an "invalidate_fs" will invalidate
+all pages in all files specified by the given pool id and also surrender
+the pool id.
 
 An "init_shared_fs", like init_fs, obtains a pool id but tells cleancache
 to treat the pool as shared using a 128-bit UUID as a key.  On systems
@@ -62,12 +63,12 @@ of the kernel (e.g. by "tools" that control cleancache).  Or a
 cleancache implementation can simply disable shared_init by always
 returning a negative value.
 
-If a get_page is successful on a non-shared pool, the page is flushed (thus
-making cleancache an "exclusive" cache).  On a shared pool, the page
-is NOT flushed on a successful get_page so that it remains accessible to
+If a get_page is successful on a non-shared pool, the page is invalidated
+(thus making cleancache an "exclusive" cache).  On a shared pool, the page
+is NOT invalidated on a successful get_page so that it remains accessible to
 other sharers.  The kernel is responsible for ensuring coherency between
 cleancache (shared or not), the page cache, and the filesystem, using
-cleancache flush operations as required.
+cleancache invalidate operations as required.
 
 Note that cleancache must enforce put-put-get coherency and get-get
 coherency.  For the former, if two puts are made to the same handle but
@@ -77,7 +78,7 @@ if a get for a given handle fails, subsequent gets for that handle will
 never succeed unless preceded by a successful put with that handle.
 
 Last, cleancache provides no SMP serialization guarantees; if two
-different Linux threads are simultaneously putting and flushing a page
+different Linux threads are simultaneously putting and invalidating a page
 with the same handle, the results are indeterminate.  Callers must
 lock the page to ensure serial behavior.
 
@@ -90,7 +91,7 @@ can be measured (across all filesystems) with:
 succ_gets	- number of gets that were successful
 failed_gets	- number of gets that failed
 puts		- number of puts attempted (all "succeed")
-flushes		- number of flushes attempted
+invalidates	- number of invalidates attempted
 
 A backend implementatation may provide additional metrics.
 
@@ -143,7 +144,7 @@ systems.
 
 The core hooks for cleancache in VFS are in most cases a single line
 and the minimum set are placed precisely where needed to maintain
-coherency (via cleancache_flush operations) between cleancache,
+coherency (via cleancache_invalidate operations) between cleancache,
 the page cache, and disk.  All hooks compile into nothingness if
 cleancache is config'ed off and turn into a function-pointer-
 compare-to-NULL if config'ed on but no backend claims the ops
@@ -184,15 +185,15 @@ or for real kernel-addressable RAM, it makes perfect sense for
 transcendent memory.
 
 4) Why is non-shared cleancache "exclusive"?  And where is the
-   page "flushed" after a "get"? (Minchan Kim)
+   page "invalidated" after a "get"? (Minchan Kim)
 
 The main reason is to free up space in transcendent memory and
-to avoid unnecessary cleancache_flush calls.  If you want inclusive,
+to avoid unnecessary cleancache_invalidate calls.  If you want inclusive,
 the page can be "put" immediately following the "get".  If
 put-after-get for inclusive becomes common, the interface could
-be easily extended to add a "get_no_flush" call.
+be easily extended to add a "get_no_invalidate" call.
 
-The flush is done by the cleancache backend implementation.
+The invalidate is done by the cleancache backend implementation.
 
 5) What's the performance impact?
 
@@ -222,7 +223,7 @@ Some points for a filesystem to consider:
   as tmpfs should not enable cleancache)
 - To ensure coherency/correctness, the FS must ensure that all
   file removal or truncation operations either go through VFS or
-  add hooks to do the equivalent cleancache "flush" operations
+  add hooks to do the equivalent cleancache "invalidate" operations
 - To ensure coherency/correctness, either inode numbers must
   be unique across the lifetime of the on-disk file OR the
   FS must provide an "encode_fh" function.
@@ -243,11 +244,11 @@ If cleancache would use the inode virtual address instead of
 inode/filehandle, the pool id could be eliminated.  But, this
 won't work because cleancache retains pagecache data pages
 persistently even when the inode has been pruned from the
-inode unused list, and only flushes the data page if the file
+inode unused list, and only invalidates the data page if the file
 gets removed/truncated.  So if cleancache used the inode kva,
 there would be potential coherency issues if/when the inode
 kva is reused for a different file.  Alternately, if cleancache
-flushed the pages when the inode kva was freed, much of the value
+invalidated the pages when the inode kva was freed, much of the value
 of cleancache would be lost because the cache of pages in cleanache
 is potentially much larger than the kernel pagecache and is most
 useful if the pages survive inode cache removal.
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 69a5b6f..d6d5f29 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -110,7 +110,7 @@ void invalidate_bdev(struct block_device *bdev)
 	/* 99% of the time, we don't need to flush the cleancache on the bdev.
 	 * But, for the strange corners, lets be cautious
 	 */
-	cleancache_flush_inode(mapping);
+	cleancache_invalidate_inode(mapping);
 }
 EXPORT_SYMBOL(invalidate_bdev);
 
diff --git a/fs/super.c b/fs/super.c
index de41e1e..e5d9765 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -250,7 +250,7 @@ void deactivate_locked_super(struct super_block *s)
 {
 	struct file_system_type *fs = s->s_type;
 	if (atomic_dec_and_test(&s->s_active)) {
-		cleancache_flush_fs(s);
+		cleancache_invalidate_fs(s);
 		fs->kill_sb(s);
 
 		/* caches are now gone, we can safely kill the shrinker now */
diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h
index 04ffb2e..66fb63b 100644
--- a/include/linux/cleancache.h
+++ b/include/linux/cleancache.h
@@ -28,6 +28,11 @@ struct cleancache_ops {
 			pgoff_t, struct page *);
 	void (*put_page)(int, struct cleancache_filekey,
 			pgoff_t, struct page *);
+	/*
+	 * NOTE: per akpm, flush_page, flush_inode and flush_fs will be
+	 * renamed to invalidate_* in a later commit in which all
+	 * dependencies (i.e Xen, zcache) will be renamed simultaneously
+	 */
 	void (*flush_page)(int, struct cleancache_filekey, pgoff_t);
 	void (*flush_inode)(int, struct cleancache_filekey);
 	void (*flush_fs)(int);
@@ -39,9 +44,9 @@ extern void __cleancache_init_fs(struct super_block *);
 extern void __cleancache_init_shared_fs(char *, struct super_block *);
 extern int  __cleancache_get_page(struct page *);
 extern void __cleancache_put_page(struct page *);
-extern void __cleancache_flush_page(struct address_space *, struct page *);
-extern void __cleancache_flush_inode(struct address_space *);
-extern void __cleancache_flush_fs(struct super_block *);
+extern void __cleancache_invalidate_page(struct address_space *, struct page *);
+extern void __cleancache_invalidate_inode(struct address_space *);
+extern void __cleancache_invalidate_fs(struct super_block *);
 extern int cleancache_enabled;
 
 #ifdef CONFIG_CLEANCACHE
@@ -99,24 +104,24 @@ static inline void cleancache_put_page(struct page *page)
 		__cleancache_put_page(page);
 }
 
-static inline void cleancache_flush_page(struct address_space *mapping,
+static inline void cleancache_invalidate_page(struct address_space *mapping,
 					struct page *page)
 {
 	/* careful... page->mapping is NULL sometimes when this is called */
 	if (cleancache_enabled && cleancache_fs_enabled_mapping(mapping))
-		__cleancache_flush_page(mapping, page);
+		__cleancache_invalidate_page(mapping, page);
 }
 
-static inline void cleancache_flush_inode(struct address_space *mapping)
+static inline void cleancache_invalidate_inode(struct address_space *mapping)
 {
 	if (cleancache_enabled && cleancache_fs_enabled_mapping(mapping))
-		__cleancache_flush_inode(mapping);
+		__cleancache_invalidate_inode(mapping);
 }
 
-static inline void cleancache_flush_fs(struct super_block *sb)
+static inline void cleancache_invalidate_fs(struct super_block *sb)
 {
 	if (cleancache_enabled)
-		__cleancache_flush_fs(sb);
+		__cleancache_invalidate_fs(sb);
 }
 
 #endif /* _LINUX_CLEANCACHE_H */
diff --git a/mm/cleancache.c b/mm/cleancache.c
index bcaae4c..237c6e0 100644
--- a/mm/cleancache.c
+++ b/mm/cleancache.c
@@ -19,7 +19,7 @@
 
 /*
  * This global enablement flag may be read thousands of times per second
- * by cleancache_get/put/flush even on systems where cleancache_ops
+ * by cleancache_get/put/invalidate even on systems where cleancache_ops
  * is not claimed (e.g. cleancache is config'ed on but remains
  * disabled), so is preferred to the slower alternative: a function
  * call that checks a non-global.
@@ -148,10 +148,11 @@ void __cleancache_put_page(struct page *page)
 EXPORT_SYMBOL(__cleancache_put_page);
 
 /*
- * Flush any data from cleancache associated with the poolid and the
+ * Invalidate any data from cleancache associated with the poolid and the
  * page's inode and page index so that a subsequent "get" will fail.
  */
-void __cleancache_flush_page(struct address_space *mapping, struct page *page)
+void __cleancache_invalidate_page(struct address_space *mapping,
+					struct page *page)
 {
 	/* careful... page->mapping is NULL sometimes when this is called */
 	int pool_id = mapping->host->i_sb->cleancache_poolid;
@@ -165,14 +166,14 @@ void __cleancache_flush_page(struct address_space *mapping, struct page *page)
 		}
 	}
 }
-EXPORT_SYMBOL(__cleancache_flush_page);
+EXPORT_SYMBOL(__cleancache_invalidate_page);
 
 /*
- * Flush all data from cleancache associated with the poolid and the
+ * Invalidate all data from cleancache associated with the poolid and the
  * mappings's inode so that all subsequent gets to this poolid/inode
  * will fail.
  */
-void __cleancache_flush_inode(struct address_space *mapping)
+void __cleancache_invalidate_inode(struct address_space *mapping)
 {
 	int pool_id = mapping->host->i_sb->cleancache_poolid;
 	struct cleancache_filekey key = { .u.key = { 0 } };
@@ -180,14 +181,14 @@ void __cleancache_flush_inode(struct address_space *mapping)
 	if (pool_id >= 0 && cleancache_get_key(mapping->host, &key) >= 0)
 		(*cleancache_ops.flush_inode)(pool_id, key);
 }
-EXPORT_SYMBOL(__cleancache_flush_inode);
+EXPORT_SYMBOL(__cleancache_invalidate_inode);
 
 /*
  * Called by any cleancache-enabled filesystem at time of unmount;
  * note that pool_id is surrendered and may be reutrned by a subsequent
  * cleancache_init_fs or cleancache_init_shared_fs
  */
-void __cleancache_flush_fs(struct super_block *sb)
+void __cleancache_invalidate_fs(struct super_block *sb)
 {
 	if (sb->cleancache_poolid >= 0) {
 		int old_poolid = sb->cleancache_poolid;
@@ -195,7 +196,7 @@ void __cleancache_flush_fs(struct super_block *sb)
 		(*cleancache_ops.flush_fs)(old_poolid);
 	}
 }
-EXPORT_SYMBOL(__cleancache_flush_fs);
+EXPORT_SYMBOL(__cleancache_invalidate_fs);
 
 #ifdef CONFIG_SYSFS
 
diff --git a/mm/filemap.c b/mm/filemap.c
index a0701e6..0aa3faa 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -123,7 +123,7 @@ void __delete_from_page_cache(struct page *page)
 	if (PageUptodate(page) && PageMappedToDisk(page))
 		cleancache_put_page(page);
 	else
-		cleancache_flush_page(mapping, page);
+		cleancache_invalidate_page(mapping, page);
 
 	radix_tree_delete(&mapping->page_tree, page->index);
 	page->mapping = NULL;
diff --git a/mm/truncate.c b/mm/truncate.c
index 632b15e..b4d575c 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -52,7 +52,7 @@ void do_invalidatepage(struct page *page, unsigned long offset)
 static inline void truncate_partial_page(struct page *page, unsigned partial)
 {
 	zero_user_segment(page, partial, PAGE_CACHE_SIZE);
-	cleancache_flush_page(page->mapping, page);
+	cleancache_invalidate_page(page->mapping, page);
 	if (page_has_private(page))
 		do_invalidatepage(page, partial);
 }
@@ -213,7 +213,7 @@ void truncate_inode_pages_range(struct address_space *mapping,
 	pgoff_t end;
 	int i;
 
-	cleancache_flush_inode(mapping);
+	cleancache_invalidate_inode(mapping);
 	if (mapping->nrpages == 0)
 		return;
 
@@ -292,7 +292,7 @@ void truncate_inode_pages_range(struct address_space *mapping,
 		mem_cgroup_uncharge_end();
 		index++;
 	}
-	cleancache_flush_inode(mapping);
+	cleancache_invalidate_inode(mapping);
 }
 EXPORT_SYMBOL(truncate_inode_pages_range);
 
@@ -444,7 +444,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 	int ret2 = 0;
 	int did_range_unmap = 0;
 
-	cleancache_flush_inode(mapping);
+	cleancache_invalidate_inode(mapping);
 	pagevec_init(&pvec, 0);
 	index = start;
 	while (index <= end && pagevec_lookup(&pvec, mapping, index,
@@ -500,7 +500,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 		cond_resched();
 		index++;
 	}
-	cleancache_flush_inode(mapping);
+	cleancache_invalidate_inode(mapping);
 	return ret;
 }
 EXPORT_SYMBOL_GPL(invalidate_inode_pages2_range);
-- 
1.7.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/4] mm: zcache/tmem/cleancache: s/flush/invalidate/
  2012-01-12 20:36 [PATCH] cleancache improvements for 3.4 (v1) Konrad Rzeszutek Wilk
  2012-01-12 20:36 ` [PATCH 1/4] mm: cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
@ 2012-01-12 20:36 ` Konrad Rzeszutek Wilk
  2012-01-12 20:36 ` [PATCH 3/4] mm: cleancache: report statistics via debugfs instead of sysfs Konrad Rzeszutek Wilk
  2012-01-12 20:36 ` [PATCH 4/4] mm: cleancache: Use __read_mostly as appropiate Konrad Rzeszutek Wilk
  3 siblings, 0 replies; 8+ messages in thread
From: Konrad Rzeszutek Wilk @ 2012-01-12 20:36 UTC (permalink / raw)
  To: linux-kernel, akpm
  Cc: Dan Magenheimer, Kamezawa Hiroyuki, Jan Beulich, Seth Jennings,
	Jeremy Fitzhardinge, Hugh Dickins, Johannes Weiner, Nitin Gupta,
	Matthew Wilcox, Chris Mason, Rik Riel, Konrad Rzeszutek Wilk

From: Dan Magenheimer <dan.magenheimer@oracle.com>

Complete the renaming from "flush" to "invalidate" across
both tmem frontends (cleancache and frontswap) and both tmem backends
(Xen and zcache), as required by akpm.

This change is completely cosmetic.

[v10: no change]
[v9: akpm@linux-foundation.org: change "flush" to "invalidate", part 3]
Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Jan Beulich <JBeulich@novell.com>
Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Rik Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
[v11: Remove the frontswap part]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 drivers/staging/zcache/zcache-main.c |   10 +++++-----
 drivers/xen/tmem.c                   |   10 +++++-----
 include/linux/cleancache.h           |   11 +++--------
 mm/cleancache.c                      |    7 ++++---
 4 files changed, 17 insertions(+), 21 deletions(-)

diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c
index 56c1f9c..49c8791 100644
--- a/drivers/staging/zcache/zcache-main.c
+++ b/drivers/staging/zcache/zcache-main.c
@@ -1758,9 +1758,9 @@ static int zcache_cleancache_init_shared_fs(char *uuid, size_t pagesize)
 static struct cleancache_ops zcache_cleancache_ops = {
 	.put_page = zcache_cleancache_put_page,
 	.get_page = zcache_cleancache_get_page,
-	.flush_page = zcache_cleancache_flush_page,
-	.flush_inode = zcache_cleancache_flush_inode,
-	.flush_fs = zcache_cleancache_flush_fs,
+	.invalidate_page = zcache_cleancache_flush_page,
+	.invalidate_inode = zcache_cleancache_flush_inode,
+	.invalidate_fs = zcache_cleancache_flush_fs,
 	.init_shared_fs = zcache_cleancache_init_shared_fs,
 	.init_fs = zcache_cleancache_init_fs
 };
@@ -1868,8 +1868,8 @@ static void zcache_frontswap_init(unsigned ignored)
 static struct frontswap_ops zcache_frontswap_ops = {
 	.put_page = zcache_frontswap_put_page,
 	.get_page = zcache_frontswap_get_page,
-	.flush_page = zcache_frontswap_flush_page,
-	.flush_area = zcache_frontswap_flush_area,
+	.invalidate_page = zcache_frontswap_flush_page,
+	.invalidate_area = zcache_frontswap_flush_area,
 	.init = zcache_frontswap_init
 };
 
diff --git a/drivers/xen/tmem.c b/drivers/xen/tmem.c
index d369965..17d9e37 100644
--- a/drivers/xen/tmem.c
+++ b/drivers/xen/tmem.c
@@ -242,9 +242,9 @@ __setup("nocleancache", no_cleancache);
 static struct cleancache_ops tmem_cleancache_ops = {
 	.put_page = tmem_cleancache_put_page,
 	.get_page = tmem_cleancache_get_page,
-	.flush_page = tmem_cleancache_flush_page,
-	.flush_inode = tmem_cleancache_flush_inode,
-	.flush_fs = tmem_cleancache_flush_fs,
+	.invalidate_page = tmem_cleancache_flush_page,
+	.invalidate_inode = tmem_cleancache_flush_inode,
+	.invalidate_fs = tmem_cleancache_flush_fs,
 	.init_shared_fs = tmem_cleancache_init_shared_fs,
 	.init_fs = tmem_cleancache_init_fs
 };
@@ -369,8 +369,8 @@ __setup("nofrontswap", no_frontswap);
 static struct frontswap_ops tmem_frontswap_ops = {
 	.put_page = tmem_frontswap_put_page,
 	.get_page = tmem_frontswap_get_page,
-	.flush_page = tmem_frontswap_flush_page,
-	.flush_area = tmem_frontswap_flush_area,
+	.invalidate_page = tmem_frontswap_flush_page,
+	.invalidate_area = tmem_frontswap_flush_area,
 	.init = tmem_frontswap_init
 };
 #endif
diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h
index 66fb63b..42e55de 100644
--- a/include/linux/cleancache.h
+++ b/include/linux/cleancache.h
@@ -28,14 +28,9 @@ struct cleancache_ops {
 			pgoff_t, struct page *);
 	void (*put_page)(int, struct cleancache_filekey,
 			pgoff_t, struct page *);
-	/*
-	 * NOTE: per akpm, flush_page, flush_inode and flush_fs will be
-	 * renamed to invalidate_* in a later commit in which all
-	 * dependencies (i.e Xen, zcache) will be renamed simultaneously
-	 */
-	void (*flush_page)(int, struct cleancache_filekey, pgoff_t);
-	void (*flush_inode)(int, struct cleancache_filekey);
-	void (*flush_fs)(int);
+	void (*invalidate_page)(int, struct cleancache_filekey, pgoff_t);
+	void (*invalidate_inode)(int, struct cleancache_filekey);
+	void (*invalidate_fs)(int);
 };
 
 extern struct cleancache_ops
diff --git a/mm/cleancache.c b/mm/cleancache.c
index 237c6e0..b9c198b 100644
--- a/mm/cleancache.c
+++ b/mm/cleancache.c
@@ -161,7 +161,8 @@ void __cleancache_invalidate_page(struct address_space *mapping,
 	if (pool_id >= 0) {
 		VM_BUG_ON(!PageLocked(page));
 		if (cleancache_get_key(mapping->host, &key) >= 0) {
-			(*cleancache_ops.flush_page)(pool_id, key, page->index);
+			(*cleancache_ops.invalidate_page)(pool_id,
+							  key, page->index);
 			cleancache_flushes++;
 		}
 	}
@@ -179,7 +180,7 @@ void __cleancache_invalidate_inode(struct address_space *mapping)
 	struct cleancache_filekey key = { .u.key = { 0 } };
 
 	if (pool_id >= 0 && cleancache_get_key(mapping->host, &key) >= 0)
-		(*cleancache_ops.flush_inode)(pool_id, key);
+		(*cleancache_ops.invalidate_inode)(pool_id, key);
 }
 EXPORT_SYMBOL(__cleancache_invalidate_inode);
 
@@ -193,7 +194,7 @@ void __cleancache_invalidate_fs(struct super_block *sb)
 	if (sb->cleancache_poolid >= 0) {
 		int old_poolid = sb->cleancache_poolid;
 		sb->cleancache_poolid = -1;
-		(*cleancache_ops.flush_fs)(old_poolid);
+		(*cleancache_ops.invalidate_fs)(old_poolid);
 	}
 }
 EXPORT_SYMBOL(__cleancache_invalidate_fs);
-- 
1.7.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/4] mm: cleancache: report statistics via debugfs instead of sysfs.
  2012-01-12 20:36 [PATCH] cleancache improvements for 3.4 (v1) Konrad Rzeszutek Wilk
  2012-01-12 20:36 ` [PATCH 1/4] mm: cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
  2012-01-12 20:36 ` [PATCH 2/4] mm: zcache/tmem/cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
@ 2012-01-12 20:36 ` Konrad Rzeszutek Wilk
  2012-01-12 20:36 ` [PATCH 4/4] mm: cleancache: Use __read_mostly as appropiate Konrad Rzeszutek Wilk
  3 siblings, 0 replies; 8+ messages in thread
From: Konrad Rzeszutek Wilk @ 2012-01-12 20:36 UTC (permalink / raw)
  To: linux-kernel, akpm
  Cc: Dan Magenheimer, Jan Beulich, Seth Jennings, Jeremy Fitzhardinge,
	Hugh Dickins, Johannes Weiner, Nitin Gupta, Matthew Wilcox,
	Chris Mason, Rik Riel

From: Dan Magenheimer <dan.magenheimer@oracle.com>

[v9: akpm@linux-foundation.org: sysfs->debugfs; no longer need Doc/ABI file]

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
Cc: Jan Beulich <JBeulich@novell.com>
Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Rik Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
 .../ABI/testing/sysfs-kernel-mm-cleancache         |   11 ---
 Documentation/vm/cleancache.txt                    |    4 +-
 mm/cleancache.c                                    |   68 ++++++-------------
 3 files changed, 24 insertions(+), 59 deletions(-)
 delete mode 100644 Documentation/ABI/testing/sysfs-kernel-mm-cleancache

diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-cleancache b/Documentation/ABI/testing/sysfs-kernel-mm-cleancache
deleted file mode 100644
index 662ae64..0000000
--- a/Documentation/ABI/testing/sysfs-kernel-mm-cleancache
+++ /dev/null
@@ -1,11 +0,0 @@
-What:		/sys/kernel/mm/cleancache/
-Date:		April 2011
-Contact:	Dan Magenheimer <dan.magenheimer@oracle.com>
-Description:
-		/sys/kernel/mm/cleancache/ contains a number of files which
-		record a count of various cleancache operations
-		(sum across all filesystems):
-			succ_gets
-			failed_gets
-			puts
-			flushes
diff --git a/Documentation/vm/cleancache.txt b/Documentation/vm/cleancache.txt
index e0a5356..f726717 100644
--- a/Documentation/vm/cleancache.txt
+++ b/Documentation/vm/cleancache.txt
@@ -84,8 +84,8 @@ lock the page to ensure serial behavior.
 
 CLEANCACHE PERFORMANCE METRICS
 
-Cleancache monitoring is done by sysfs files in the
-/sys/kernel/mm/cleancache directory.  The effectiveness of cleancache
+If properly configured, monitoring of cleancache is done via debugfs in
+the /sys/kernel/debug/mm/cleancache directory.  The effectiveness of cleancache
 can be measured (across all filesystems) with:
 
 succ_gets	- number of gets that were successful
diff --git a/mm/cleancache.c b/mm/cleancache.c
index b9c198b..deb9f2c 100644
--- a/mm/cleancache.c
+++ b/mm/cleancache.c
@@ -15,6 +15,7 @@
 #include <linux/fs.h>
 #include <linux/exportfs.h>
 #include <linux/mm.h>
+#include <linux/debugfs.h>
 #include <linux/cleancache.h>
 
 /*
@@ -33,11 +34,15 @@ EXPORT_SYMBOL(cleancache_enabled);
  */
 static struct cleancache_ops cleancache_ops;
 
-/* useful stats available in /sys/kernel/mm/cleancache */
-static unsigned long cleancache_succ_gets;
-static unsigned long cleancache_failed_gets;
-static unsigned long cleancache_puts;
-static unsigned long cleancache_flushes;
+/*
+ * Counters available via /sys/kernel/debug/frontswap (if debugfs is
+ * properly configured.  These are for information only so are not protected
+ * against increment races.
+ */
+static u64 cleancache_succ_gets;
+static u64 cleancache_failed_gets;
+static u64 cleancache_puts;
+static u64 cleancache_invalidates;
 
 /*
  * register operations for cleancache, returning previous thus allowing
@@ -163,7 +168,7 @@ void __cleancache_invalidate_page(struct address_space *mapping,
 		if (cleancache_get_key(mapping->host, &key) >= 0) {
 			(*cleancache_ops.invalidate_page)(pool_id,
 							  key, page->index);
-			cleancache_flushes++;
+			cleancache_invalidates++;
 		}
 	}
 }
@@ -199,48 +204,19 @@ void __cleancache_invalidate_fs(struct super_block *sb)
 }
 EXPORT_SYMBOL(__cleancache_invalidate_fs);
 
-#ifdef CONFIG_SYSFS
-
-/* see Documentation/ABI/xxx/sysfs-kernel-mm-cleancache */
-
-#define CLEANCACHE_SYSFS_RO(_name) \
-	static ssize_t cleancache_##_name##_show(struct kobject *kobj, \
-				struct kobj_attribute *attr, char *buf) \
-	{ \
-		return sprintf(buf, "%lu\n", cleancache_##_name); \
-	} \
-	static struct kobj_attribute cleancache_##_name##_attr = { \
-		.attr = { .name = __stringify(_name), .mode = 0444 }, \
-		.show = cleancache_##_name##_show, \
-	}
-
-CLEANCACHE_SYSFS_RO(succ_gets);
-CLEANCACHE_SYSFS_RO(failed_gets);
-CLEANCACHE_SYSFS_RO(puts);
-CLEANCACHE_SYSFS_RO(flushes);
-
-static struct attribute *cleancache_attrs[] = {
-	&cleancache_succ_gets_attr.attr,
-	&cleancache_failed_gets_attr.attr,
-	&cleancache_puts_attr.attr,
-	&cleancache_flushes_attr.attr,
-	NULL,
-};
-
-static struct attribute_group cleancache_attr_group = {
-	.attrs = cleancache_attrs,
-	.name = "cleancache",
-};
-
-#endif /* CONFIG_SYSFS */
-
 static int __init init_cleancache(void)
 {
-#ifdef CONFIG_SYSFS
-	int err;
-
-	err = sysfs_create_group(mm_kobj, &cleancache_attr_group);
-#endif /* CONFIG_SYSFS */
+#ifdef CONFIG_DEBUG_FS
+	struct dentry *root = debugfs_create_dir("cleancache", NULL);
+	if (root == NULL)
+		return -ENXIO;
+	debugfs_create_u64("succ_gets", S_IRUGO, root, &cleancache_succ_gets);
+	debugfs_create_u64("failed_gets", S_IRUGO,
+				root, &cleancache_failed_gets);
+	debugfs_create_u64("puts", S_IRUGO, root, &cleancache_puts);
+	debugfs_create_u64("invalidates", S_IRUGO,
+				root, &cleancache_invalidates);
+#endif
 	return 0;
 }
 module_init(init_cleancache)
-- 
1.7.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/4] mm: cleancache: Use __read_mostly as appropiate.
  2012-01-12 20:36 [PATCH] cleancache improvements for 3.4 (v1) Konrad Rzeszutek Wilk
                   ` (2 preceding siblings ...)
  2012-01-12 20:36 ` [PATCH 3/4] mm: cleancache: report statistics via debugfs instead of sysfs Konrad Rzeszutek Wilk
@ 2012-01-12 20:36 ` Konrad Rzeszutek Wilk
  3 siblings, 0 replies; 8+ messages in thread
From: Konrad Rzeszutek Wilk @ 2012-01-12 20:36 UTC (permalink / raw)
  To: linux-kernel, akpm
  Cc: Dan Magenheimer, Kamezawa Hiroyuki, Jan Beulich, Seth Jennings,
	Jeremy Fitzhardinge, Hugh Dickins, Johannes Weiner, Nitin Gupta,
	Matthew Wilcox, Chris Mason, Rik Riel

From: Dan Magenheimer <dan.magenheimer@oracle.com>

The values are rarely changed so might as well put them in the
appropiate section.

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Jan Beulich <JBeulich@novell.com>
Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Rik Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
 mm/cleancache.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/cleancache.c b/mm/cleancache.c
index deb9f2c..5646c74 100644
--- a/mm/cleancache.c
+++ b/mm/cleancache.c
@@ -25,14 +25,14 @@
  * disabled), so is preferred to the slower alternative: a function
  * call that checks a non-global.
  */
-int cleancache_enabled;
+int cleancache_enabled __read_mostly;
 EXPORT_SYMBOL(cleancache_enabled);
 
 /*
  * cleancache_ops is set by cleancache_ops_register to contain the pointers
  * to the cleancache "backend" implementation functions.
  */
-static struct cleancache_ops cleancache_ops;
+static struct cleancache_ops cleancache_ops __read_mostly;
 
 /*
  * Counters available via /sys/kernel/debug/frontswap (if debugfs is
-- 
1.7.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] mm: cleancache: s/flush/invalidate/
  2012-01-12 20:36 ` [PATCH 1/4] mm: cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
@ 2012-01-13 15:16   ` Seth Jennings
  2012-01-13 17:43     ` Konrad Rzeszutek Wilk
  0 siblings, 1 reply; 8+ messages in thread
From: Seth Jennings @ 2012-01-13 15:16 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: linux-kernel, akpm, Dan Magenheimer, Kamezawa Hiroyuki,
	Jan Beulich, Jeremy Fitzhardinge, Hugh Dickins, Johannes Weiner,
	Nitin Gupta, Matthew Wilcox, Chris Mason, Rik Riel

Hey Konrad,

On 01/12/2012 02:36 PM, Konrad Rzeszutek Wilk wrote:
> From: Dan Magenheimer <dan.magenheimer@oracle.com>
> 
> Per akpm suggestions alter the use of the term flush to be
> invalidate. The next patch will do this across all MM.
> 
> This change is completely cosmetic.
> 
> [v9: akpm@linux-foundation.org: change "flush" to "invalidate", part 3]
> 
> Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
> Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
> Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> Cc: Jan Beulich <JBeulich@novell.com>
> Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
> Cc: Jeremy Fitzhardinge <jeremy@goop.org>
> Cc: Hugh Dickins <hughd@google.com>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> Cc: Nitin Gupta <ngupta@vflare.org>
> Cc: Matthew Wilcox <matthew@wil.cx>
> Cc: Chris Mason <chris.mason@oracle.com>
> Cc: Rik Riel <riel@redhat.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> [v10: Fixed  fs: move code out of buffer.c conflict change]
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
>  Documentation/vm/cleancache.txt |   37 +++++++++++++++++++------------------
>  fs/block_dev.c                  |    2 +-
>  fs/super.c                      |    2 +-
>  include/linux/cleancache.h      |   23 ++++++++++++++---------
>  mm/cleancache.c                 |   19 ++++++++++---------
>  mm/filemap.c                    |    2 +-
>  mm/truncate.c                   |   10 +++++-----
>  7 files changed, 51 insertions(+), 44 deletions(-)
snip
> diff --git a/fs/block_dev.c b/fs/block_dev.c
> index 69a5b6f..d6d5f29 100644
> --- a/fs/block_dev.c
> +++ b/fs/block_dev.c
> @@ -110,7 +110,7 @@ void invalidate_bdev(struct block_device *bdev)
>  	/* 99% of the time, we don't need to flush the cleancache on the bdev.
>  	 * But, for the strange corners, lets be cautious
>  	 */
> -	cleancache_flush_inode(mapping);
> +	cleancache_invalidate_inode(mapping);
>  }
>  EXPORT_SYMBOL(invalidate_bdev);

This hunk doesn't merge cleanly because there is no existing
cleancache code in fs/block_dev.c in v3.2 or any previous version.

Looking at the git log, doesn't look like any cleancache code was
ever merged into this file.

--
Seth



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] mm: cleancache: s/flush/invalidate/
  2012-01-13 15:16   ` Seth Jennings
@ 2012-01-13 17:43     ` Konrad Rzeszutek Wilk
  2012-01-13 21:12       ` Seth Jennings
  0 siblings, 1 reply; 8+ messages in thread
From: Konrad Rzeszutek Wilk @ 2012-01-13 17:43 UTC (permalink / raw)
  To: Seth Jennings
  Cc: linux-kernel, akpm, Dan Magenheimer, Kamezawa Hiroyuki,
	Jan Beulich, Jeremy Fitzhardinge, Hugh Dickins, Johannes Weiner,
	Nitin Gupta, Matthew Wilcox, Chris Mason, Rik Riel

On Fri, Jan 13, 2012 at 09:16:33AM -0600, Seth Jennings wrote:
> Hey Konrad,
> 
> On 01/12/2012 02:36 PM, Konrad Rzeszutek Wilk wrote:
> > From: Dan Magenheimer <dan.magenheimer@oracle.com>
> > 
> > Per akpm suggestions alter the use of the term flush to be
> > invalidate. The next patch will do this across all MM.
> > 
> > This change is completely cosmetic.
> > 
> > [v9: akpm@linux-foundation.org: change "flush" to "invalidate", part 3]
> > 
> > Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
> > Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
> > Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> > Cc: Jan Beulich <JBeulich@novell.com>
> > Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
> > Cc: Jeremy Fitzhardinge <jeremy@goop.org>
> > Cc: Hugh Dickins <hughd@google.com>
> > Cc: Johannes Weiner <hannes@cmpxchg.org>
> > Cc: Nitin Gupta <ngupta@vflare.org>
> > Cc: Matthew Wilcox <matthew@wil.cx>
> > Cc: Chris Mason <chris.mason@oracle.com>
> > Cc: Rik Riel <riel@redhat.com>
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > [v10: Fixed  fs: move code out of buffer.c conflict change]
> > Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> > ---
> >  Documentation/vm/cleancache.txt |   37 +++++++++++++++++++------------------
> >  fs/block_dev.c                  |    2 +-
> >  fs/super.c                      |    2 +-
> >  include/linux/cleancache.h      |   23 ++++++++++++++---------
> >  mm/cleancache.c                 |   19 ++++++++++---------
> >  mm/filemap.c                    |    2 +-
> >  mm/truncate.c                   |   10 +++++-----
> >  7 files changed, 51 insertions(+), 44 deletions(-)
> snip
> > diff --git a/fs/block_dev.c b/fs/block_dev.c
> > index 69a5b6f..d6d5f29 100644
> > --- a/fs/block_dev.c
> > +++ b/fs/block_dev.c
> > @@ -110,7 +110,7 @@ void invalidate_bdev(struct block_device *bdev)
> >  	/* 99% of the time, we don't need to flush the cleancache on the bdev.
> >  	 * But, for the strange corners, lets be cautious
> >  	 */
> > -	cleancache_flush_inode(mapping);
> > +	cleancache_invalidate_inode(mapping);
> >  }
> >  EXPORT_SYMBOL(invalidate_bdev);
> 
> This hunk doesn't merge cleanly because there is no existing
> cleancache code in fs/block_dev.c in v3.2 or any previous version.

Hm, I am at 099469502f62fbe0d7e4f0b83a2f22538367f734 and I see
that file with "cleancache_flush_inode" ?

This is against v3.3-rc0, not 3.2.
> 
> Looking at the git log, doesn't look like any cleancache code was
> ever merged into this file.

It was merged in buffer.c and invalidate_bdev got moved to
fs/block_dev.c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] mm: cleancache: s/flush/invalidate/
  2012-01-13 17:43     ` Konrad Rzeszutek Wilk
@ 2012-01-13 21:12       ` Seth Jennings
  0 siblings, 0 replies; 8+ messages in thread
From: Seth Jennings @ 2012-01-13 21:12 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: linux-kernel, akpm, Dan Magenheimer, Kamezawa Hiroyuki,
	Jan Beulich, Jeremy Fitzhardinge, Hugh Dickins, Johannes Weiner,
	Nitin Gupta, Matthew Wilcox, Chris Mason, Rik Riel

On 01/13/2012 11:43 AM, Konrad Rzeszutek Wilk wrote:
> On Fri, Jan 13, 2012 at 09:16:33AM -0600, Seth Jennings wrote:
>> Hey Konrad,
>>
>> On 01/12/2012 02:36 PM, Konrad Rzeszutek Wilk wrote:
>>> From: Dan Magenheimer <dan.magenheimer@oracle.com>
>>>
>>> Per akpm suggestions alter the use of the term flush to be
>>> invalidate. The next patch will do this across all MM.
>>>
>>> This change is completely cosmetic.
>>>
>>> [v9: akpm@linux-foundation.org: change "flush" to "invalidate", part 3]
>>>
>>> Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
>>> Reviewed-by: Konrad Wilk <konrad.wilk@oracle.com>
>>> Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>>> Cc: Jan Beulich <JBeulich@novell.com>
>>> Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
>>> Cc: Jeremy Fitzhardinge <jeremy@goop.org>
>>> Cc: Hugh Dickins <hughd@google.com>
>>> Cc: Johannes Weiner <hannes@cmpxchg.org>
>>> Cc: Nitin Gupta <ngupta@vflare.org>
>>> Cc: Matthew Wilcox <matthew@wil.cx>
>>> Cc: Chris Mason <chris.mason@oracle.com>
>>> Cc: Rik Riel <riel@redhat.com>
>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>> [v10: Fixed  fs: move code out of buffer.c conflict change]
>>> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>>> ---
>>>  Documentation/vm/cleancache.txt |   37 +++++++++++++++++++------------------
>>>  fs/block_dev.c                  |    2 +-
>>>  fs/super.c                      |    2 +-
>>>  include/linux/cleancache.h      |   23 ++++++++++++++---------
>>>  mm/cleancache.c                 |   19 ++++++++++---------
>>>  mm/filemap.c                    |    2 +-
>>>  mm/truncate.c                   |   10 +++++-----
>>>  7 files changed, 51 insertions(+), 44 deletions(-)
>> snip
>>> diff --git a/fs/block_dev.c b/fs/block_dev.c
>>> index 69a5b6f..d6d5f29 100644
>>> --- a/fs/block_dev.c
>>> +++ b/fs/block_dev.c
>>> @@ -110,7 +110,7 @@ void invalidate_bdev(struct block_device *bdev)
>>>  	/* 99% of the time, we don't need to flush the cleancache on the bdev.
>>>  	 * But, for the strange corners, lets be cautious
>>>  	 */
>>> -	cleancache_flush_inode(mapping);
>>> +	cleancache_invalidate_inode(mapping);
>>>  }
>>>  EXPORT_SYMBOL(invalidate_bdev);
>>
>> This hunk doesn't merge cleanly because there is no existing
>> cleancache code in fs/block_dev.c in v3.2 or any previous version.
> 
> Hm, I am at 099469502f62fbe0d7e4f0b83a2f22538367f734 and I see
> that file with "cleancache_flush_inode" ?
> 
> This is against v3.3-rc0, not 3.2.

Ah yes.  Since no v3.3-rcX release has been tagged yet, I didn't
think to apply it there.

checkpatch clean, applies clean, builds clean

Consider all the patches in this set

Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com>

--
Seth


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-01-13 21:18 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-12 20:36 [PATCH] cleancache improvements for 3.4 (v1) Konrad Rzeszutek Wilk
2012-01-12 20:36 ` [PATCH 1/4] mm: cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
2012-01-13 15:16   ` Seth Jennings
2012-01-13 17:43     ` Konrad Rzeszutek Wilk
2012-01-13 21:12       ` Seth Jennings
2012-01-12 20:36 ` [PATCH 2/4] mm: zcache/tmem/cleancache: s/flush/invalidate/ Konrad Rzeszutek Wilk
2012-01-12 20:36 ` [PATCH 3/4] mm: cleancache: report statistics via debugfs instead of sysfs Konrad Rzeszutek Wilk
2012-01-12 20:36 ` [PATCH 4/4] mm: cleancache: Use __read_mostly as appropiate Konrad Rzeszutek Wilk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).