Skip to contentSkip to conversation

Change page reference handling semantic of page cache

PATCH Superseded Minchan Kim 5 participants 15 messages Jan 2, 2011 – Jan 10, 2011

Subsystems (8)

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v2 cover Change page reference handling semantic of page cache

Now we increases page reference on add_to_page_cache but doesn't decrease it in remove_from_page_cache. Such asymmetric makes confusing about page reference so that caller should notice it and comment why they release page reference. It's not good API.

Long time ago, Hugh tried it[1] but gave up of reason which reiser4's drop_page had to unlock the page between removing it from page cache and doing the page_cache_release. But now the situation is changed. I think at least things in current mainline doesn't have any obstacles. The problem is fs or somethings out of mainline. If it has done such thing like reiser4, this patch could be a problem but they found it when compile time since we remove remove_from_page_cache.

[1] http://lkml.org/lkml/2004/10/24/140

The series configuration is following as.

[1/7] : This patch introduces new API delete_from_page_cache. [2,3,4,5/7] : Change remove_from_page_cache with delete_from_page_cache. Intentionally I divide patch per file since someone might have a concern about releasing page reference of delete_from_page_cache in somecase (ex, truncate.c)
[6/7] : Remove old API so out of fs can meet compile error when build time and can notice it.
[7/7] : Change __remove_from_page_cache with __delete_from_page_cache, too. In this time, I made all-in-one patch because it doesn't change old behavior so it has no concern. Just clean up patch.

from v1
- Add Acked-by
- rebase on mmotm-12-23

Minchan Kim (7):
[1/7] Introduce delete_from_page_cache
[2/7] fuse: Change remove_from_page_cache
[3/7] tlbfs: Change remove_from_page_cache
[4/7] swap: Change remove_from_page_cache
[5/7] truncate: Change remove_from_page_cache
[6/7] Good bye remove_from_page_cache
[7/7] Change __remove_from_page_cache

 fs/fuse/dev.c           |    3 +--
 fs/hugetlbfs/inode.c    |    3 +--
 include/linux/pagemap.h |    4 ++--
 mm/filemap.c            |   22 +++++++++++++++++-----
 mm/memory-failure.c     |    2 +-
 mm/shmem.c              |    3 +--
 mm/truncate.c           |    7 +++----
 mm/vmscan.c             |    2 +-
 8 files changed, 27 insertions(+), 19 deletions(-)

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#1 lore raw

PATCH v2 1/7 Introduce delete_from_page_cache

This function works as just wrapper remove_from_page_cache. The difference is that it decreases page references in itself. So caller have to make sure it has a page reference before calling.

This patch is ready for removing remove_from_page_cache.

---
 include/linux/pagemap.h |    1 +
 mm/filemap.c            |   17 +++++++++++++++++
 2 files changed, 18 insertions(+), 0 deletions(-)
include/linux/pagemap.h +1 -0
index 9c66e99..7a1cb49 100644
@@ -457,6 +457,7 @@ int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
 				pgoff_t index, gfp_t gfp_mask);
 extern void remove_from_page_cache(struct page *page);
 extern void __remove_from_page_cache(struct page *page);
+extern void delete_from_page_cache(struct page *page);
 
 /*
  * Like add_to_page_cache_locked, but used to add newly allocated pages:
mm/filemap.c +17 -0
index 095c393..1ca7475 100644
@@ -166,6 +166,23 @@ void remove_from_page_cache(struct page *page)
 }
 EXPORT_SYMBOL(remove_from_page_cache);
 
+/**
+ * delete_from_page_cache - delete page from page cache
+ *
+ * @page: the page which the kernel is trying to remove from page cache
+ *
+ * This must be called only on pages that have
+ * been verified to be in the page cache and locked.
+ * It will never put the page into the free list,
+ * the caller has a reference on the page.
+ */
+void delete_from_page_cache(struct page *page)
+{
+	remove_from_page_cache(page);
+	page_cache_release(page);
+}
+EXPORT_SYMBOL(delete_from_page_cache);
+
 static int sync_page(void *word)
 {
 	struct address_space *mapping;
Signature · 8 lines
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
maintainer Reviewed-by on v2 1/7
#2 lore raw

Re: [PATCH v2 1/7] Introduce delete_from_page_cache

Quoted 32 lines · Minchan Kim

This function works as just wrapper remove_from_page_cache. The difference is that it decreases page references in itself. So caller have to make sure it has a page reference before calling.

This patch is ready for removing remove_from_page_cache.

---
 include/linux/pagemap.h |    1 +
 mm/filemap.c            |   17 +++++++++++++++++
 2 files changed, 18 insertions(+), 0 deletions(-)
include/linux/pagemap.h +1 -0
index 9c66e99..7a1cb49 100644
@@ -457,6 +457,7 @@ int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
 				pgoff_t index, gfp_t gfp_mask);
 extern void remove_from_page_cache(struct page *page);
 extern void __remove_from_page_cache(struct page *page);
+extern void delete_from_page_cache(struct page *page);
 
 /*
  * Like add_to_page_cache_locked, but used to add newly allocated pages:
mm/filemap.c +0 -0
index 095c393..1ca7475 100644

mm/filemap.c void remove_from_page_cache(struct page *page) · line 171

Quoted 6 lines
mm/filemap.c +3 -0
@@ -166,6 +166,23 @@ void remove_from_page_cache(struct page *page)
 }
 EXPORT_SYMBOL(remove_from_page_cache);
 
+/**
+ * delete_from_page_cache - delete page from page cache
+ *

This empty line is invalid kerneldoc, the argument descriptions must follow the short function description line immediately.

Otherwise,

Quoted 7 lines
mm/filemap.c +7 -0
+ * @page: the page which the kernel is trying to remove from page cache
+ *
+ * This must be called only on pages that have
+ * been verified to be in the page cache and locked.
+ * It will never put the page into the free list,
+ * the caller has a reference on the page.
+ */

mm/filemap.c void remove_from_page_cache(struct page *page) · line 188

Quoted 10 lines
mm/filemap.c +7 -0
+void delete_from_page_cache(struct page *page)
+{
+	remove_from_page_cache(page);
+	page_cache_release(page);
+}
+EXPORT_SYMBOL(delete_from_page_cache);
+
 static int sync_page(void *word)
 {
 	struct address_space *mapping;

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#3 lore raw

Re: [PATCH v2 1/7] Introduce delete_from_page_cache

Quoted 36 lines · Johannes Weiner
Quoted 35 lines · Minchan Kim

This function works as just wrapper remove_from_page_cache. The difference is that it decreases page references in itself. So caller have to make sure it has a page reference before calling.

This patch is ready for removing remove_from_page_cache.

---
 include/linux/pagemap.h |    1 +
 mm/filemap.c            |   17 +++++++++++++++++

 2 files changed, 18 insertions(+), 0 deletions(-)
include/linux/pagemap.h +1 -0
index 9c66e99..7a1cb49 100644
@@ -457,6 +457,7 @@ int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
                               pgoff_t index, gfp_t gfp_mask);
  extern void remove_from_page_cache(struct page *page);
  extern void __remove_from_page_cache(struct page *page);
+extern void delete_from_page_cache(struct page *page);
 
  /*
   * Like add_to_page_cache_locked, but used to add newly allocated pages:
mm/filemap.c +0 -0
index 095c393..1ca7475 100644
@@ -166,6 +166,23 @@ void remove_from_page_cache(struct page *page)
  }
  EXPORT_SYMBOL(remove_from_page_cache);
 
Quoted 6 lines

mm/filemap.c void remove_from_page_cache(struct page *page) · line 171

Quoted 3 lines
mm/filemap.c +3 -0
+/**
+ * delete_from_page_cache - delete page from page cache
+ *

This empty line is invalid kerneldoc, the argument descriptions must follow the short function description line immediately.

Thanks, Hannes.
Will fix.

Quoted 4 lines

Otherwise,

Signature · 9 lines
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#4 lore raw

PATCH v2 2/7 fuse: Change remove_from_page_cache

In reply to Minchan Kim

This patch series changes remove_from_page_cache's page ref counting rule. Page cache ref count is decreased in delete_from_page_cache. So we don't need decreasing page reference by caller.

---
 fs/fuse/dev.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
fs/fuse/dev.c +1 -2
index cf8d28d..1ef24fb 100644
@@ -737,8 +737,7 @@ static int fuse_try_move_page(struct fuse_copy_state *cs, struct page **pagep)
 	if (WARN_ON(PageMlocked(oldpage)))
 		goto out_fallback_unlock;
 
-	remove_from_page_cache(oldpage);
-	page_cache_release(oldpage);
+	delete_from_page_cache(oldpage);
 
 	err = add_to_page_cache_locked(newpage, mapping, index, GFP_KERNEL);
 	if (err) {
Signature · 8 lines
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#5 lore raw

PATCH v2 3/7 tlbfs: Change remove_from_page_cache

In reply to Minchan Kim

This patch series changes remove_from_page_cache's page ref counting rule. Page cache ref count is decreased in delete_from_page_cache. So we don't need decreasing page reference by caller.

---
 fs/hugetlbfs/inode.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
fs/hugetlbfs/inode.c +1 -2
index 9885082..b9eeb1c 100644
@@ -332,8 +332,7 @@ static void truncate_huge_page(struct page *page)
 {
 	cancel_dirty_page(page, /* No IO accounting for huge pages? */0);
 	ClearPageUptodate(page);
-	remove_from_page_cache(page);
-	put_page(page);
+	delete_from_page_cache(page);
 }
 
 static void truncate_hugepages(struct inode *inode, loff_t lstart)
Signature · 8 lines
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#6 lore raw

PATCH v2 4/7 swap: Change remove_from_page_cache

In reply to Minchan Kim

This patch series changes remove_from_page_cache's page ref counting rule. Page cache ref count is decreased in delete_from_page_cache. So we don't need decreasing page reference by caller.

---
 mm/shmem.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
mm/shmem.c +1 -2
index fa9acc9..079cced 100644
@@ -1081,7 +1081,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc)
 	shmem_recalc_inode(inode);
 
 	if (swap.val && add_to_swap_cache(page, swap, GFP_ATOMIC) == 0) {
-		remove_from_page_cache(page);
+		delete_from_page_cache(page);
 		shmem_swp_set(info, entry, swap.val);
 		shmem_swp_unmap(entry);
 		if (list_empty(&info->swaplist))
@@ -1091,7 +1091,6 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc)
 		spin_unlock(&info->lock);
 		swap_shmem_alloc(swap);
 		BUG_ON(page_mapped(page));
-		page_cache_release(page);	/* pagecache ref */
 		swap_writepage(page, wbc);
 		if (inode) {
 			mutex_lock(&shmem_swaplist_mutex);
Signature · 8 lines
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#7 lore raw

PATCH v2 5/7 truncate: Change remove_from_page_cache

In reply to Minchan Kim

This patch series changes remove_from_page_cache's page ref counting rule. Page cache ref count is decreased in delete_from_page_cache. So we don't need decreasing page reference by caller.

---
 mm/truncate.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
mm/truncate.c +2 -3
index 9ee5673..85404b0 100644
@@ -108,13 +108,12 @@ truncate_complete_page(struct address_space *mapping, struct page *page)
 	cancel_dirty_page(page, PAGE_CACHE_SIZE);
 
 	clear_page_mlock(page);
-	remove_from_page_cache(page);
+	delete_from_page_cache(page);
 	ClearPageMappedToDisk(page);
-	/* this must be after the remove_from_page_cache which
+	/* this must be after the delete_from_page_cache which
 	 * calls cleancache_put_page (and note page->mapping is now NULL)
 	 */
 	cleancache_flush_page(mapping, page);
-	page_cache_release(page);	/* pagecache ref */
 	return 0;
 }
 
Signature · 8 lines
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#8 lore raw

PATCH v2 6/7 Good bye remove_from_page_cache

In reply to Minchan Kim

Now delete_from_page_cache replaces remove_from_page_cache. So we remove remove_from_page_cache so fs or something out of mainline will notice it when compile time and can fix it.

---
 include/linux/pagemap.h |    1 -
 mm/filemap.c            |   27 +++++++++++----------------
 2 files changed, 11 insertions(+), 17 deletions(-)
include/linux/pagemap.h +0 -1
index 7a1cb49..7bf6587 100644
@@ -455,7 +455,6 @@ int add_to_page_cache_locked(struct page *page, struct address_space *mapping,
 				pgoff_t index, gfp_t gfp_mask);
 int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
 				pgoff_t index, gfp_t gfp_mask);
-extern void remove_from_page_cache(struct page *page);
 extern void __remove_from_page_cache(struct page *page);
 extern void delete_from_page_cache(struct page *page);
 
mm/filemap.c +11 -16
index 1ca7475..a4c43f7 100644
@@ -148,7 +148,17 @@ void __remove_from_page_cache(struct page *page)
 	}
 }
 
-void remove_from_page_cache(struct page *page)
+/**
+ * delete_from_page_cache - delete page from page cache
+ *
+ * @page: the page which the kernel is trying to remove from page cache
+ *
+ * This must be called only on pages that have
+ * been verified to be in the page cache and locked.
+ * It will never put the page into the free list,
+ * the caller has a reference on the page.
+ */
+void delete_from_page_cache(struct page *page)
 {
 	struct address_space *mapping = page->mapping;
 	void (*freepage)(struct page *);
@@ -163,22 +173,7 @@ void remove_from_page_cache(struct page *page)
 
 	if (freepage)
 		freepage(page);
-}
-EXPORT_SYMBOL(remove_from_page_cache);
 
-/**
- * delete_from_page_cache - delete page from page cache
- *
- * @page: the page which the kernel is trying to remove from page cache
- *
- * This must be called only on pages that have
- * been verified to be in the page cache and locked.
- * It will never put the page into the free list,
- * the caller has a reference on the page.
- */
-void delete_from_page_cache(struct page *page)
-{
-	remove_from_page_cache(page);
 	page_cache_release(page);
 }
 EXPORT_SYMBOL(delete_from_page_cache);
Signature · 8 lines
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Reviewed-by on v2 6/7
#9 lore raw

Re: [PATCH v2 6/7] Good bye remove_from_page_cache

Quoted 7 lines · On Mon, 3 Jan 2011 00:44:35 +0900 Minchan Kim <[email protected]> wrote:

Now delete_from_page_cache replaces remove_from_page_cache. So we remove remove_from_page_cache so fs or something out of mainline will notice it when compile time and can fix it.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#10 lore raw

PATCH v2 7/7 Change __remove_from_page_cache

In reply to Minchan Kim

Now we renamed remove_from_page_cache with delete_from_page_cache. As consistency of __remove_from_swap_cache and remove_from_swap_cache, We change internal page cache handling function name, too.

---
 include/linux/pagemap.h |    2 +-
 mm/filemap.c            |    6 +++---
 mm/memory-failure.c     |    2 +-
 mm/truncate.c           |    2 +-
 mm/vmscan.c             |    2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)
include/linux/pagemap.h +1 -1
index 7bf6587..b5b21d8 100644
@@ -455,7 +455,7 @@ int add_to_page_cache_locked(struct page *page, struct address_space *mapping,
 				pgoff_t index, gfp_t gfp_mask);
 int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
 				pgoff_t index, gfp_t gfp_mask);
-extern void __remove_from_page_cache(struct page *page);
+extern void __delete_from_page_cache(struct page *page);
 extern void delete_from_page_cache(struct page *page);
 
 /*
mm/filemap.c +3 -3
index a4c43f7..9776166 100644
@@ -109,11 +109,11 @@
  */
 
 /*
- * Remove a page from the page cache and free it. Caller has to make
+ * Delete a page from the page cache and free it. Caller has to make
  * sure the page is locked and that nobody else uses it - or that usage
  * is safe.  The caller must hold the mapping's tree_lock.
  */
-void __remove_from_page_cache(struct page *page)
+void __delete_from_page_cache(struct page *page)
 {
 	struct address_space *mapping = page->mapping;
 
@@ -167,7 +167,7 @@ void delete_from_page_cache(struct page *page)
 
 	freepage = mapping->a_ops->freepage;
 	spin_lock_irq(&mapping->tree_lock);
-	__remove_from_page_cache(page);
+	__delete_from_page_cache(page);
 	spin_unlock_irq(&mapping->tree_lock);
 	mem_cgroup_uncharge_cache_page(page);
 
mm/memory-failure.c +1 -1
index 548fbd7..50ed16f 100644
@@ -1084,7 +1084,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
 
 	/*
 	 * Now take care of user space mappings.
-	 * Abort on fail: __remove_from_page_cache() assumes unmapped page.
+	 * Abort on fail: __delete_from_page_cache() assumes unmapped page.
 	 */
 	if (hwpoison_user_mappings(p, pfn, trapno) != SWAP_SUCCESS) {
 		printk(KERN_ERR "MCE %#lx: cannot unmap page, give up\n", pfn);
mm/truncate.c +1 -1
index 85404b0..ef97cd2 100644
@@ -402,7 +402,7 @@ invalidate_complete_page2(struct address_space *mapping, struct page *page)
 
 	clear_page_mlock(page);
 	BUG_ON(page_has_private(page));
-	__remove_from_page_cache(page);
+	__delete_from_page_cache(page);
 	spin_unlock_irq(&mapping->tree_lock);
 	mem_cgroup_uncharge_cache_page(page);
 
mm/vmscan.c +1 -1
index 47a5096..bdb867f 100644
@@ -515,7 +515,7 @@ static int __remove_mapping(struct address_space *mapping, struct page *page)
 
 		freepage = mapping->a_ops->freepage;
 
-		__remove_from_page_cache(page);
+		__delete_from_page_cache(page);
 		spin_unlock_irq(&mapping->tree_lock);
 		mem_cgroup_uncharge_cache_page(page);
 
Signature · 8 lines
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Reviewed-by on v2 7/7
#11 lore raw

Re: [PATCH v2 7/7] Change __remove_from_page_cache

Quoted 7 lines · On Mon, 3 Jan 2011 00:44:36 +0900 Minchan Kim <[email protected]> wrote:

Now we renamed remove_from_page_cache with delete_from_page_cache. As consistency of __remove_from_swap_cache and remove_from_swap_cache, We change internal page cache handling function name, too.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#12 lore raw
In reply to Minchan Kim
Quoted 17 lines · MinChan Kim

Now we increases page reference on add_to_page_cache but doesn't decrease it in remove_from_page_cache. Such asymmetric makes confusing about page reference so that caller should notice it and comment why they release page reference. It's not good API.

Long time ago, Hugh tried it[1] but gave up of reason which reiser4's drop_page had to unlock the page between removing it from page cache and doing the page_cache_release. But now the situation is changed. I think at least things in current mainline doesn't have any obstacles. The problem is fs or somethings out of mainline. If it has done such thing like reiser4, this patch could be a problem but they found it when compile time since we remove remove_from_page_cache.

[1] http://lkml.org/lkml/2004/10/24/140

The series configuration is following as.

Quoted 11 lines

[1/7] : This patch introduces new API delete_from_page_cache. [2,3,4,5/7] : Change remove_from_page_cache with delete_from_page_cache. Intentionally I divide patch per file since someone might have a concern about releasing page reference of delete_from_page_cache in somecase (ex, truncate.c)
[6/7] : Remove old API so out of fs can meet compile error when build time and can notice it.
[7/7] : Change __remove_from_page_cache with __delete_from_page_cache, too. In this time, I made all-in-one patch because it doesn't change old behavior so it has no concern. Just clean up patch.

Could you please describe any testing done, was it mostly functional?

Signature · 2 lines
	Three Cheers,
	Balbir
#13 lore raw

Hi Balbir,

Quoted 31 lines · Balbir Singh
Quoted 17 lines · MinChan Kim

Now we increases page reference on add_to_page_cache but doesn't decrease it in remove_from_page_cache. Such asymmetric makes confusing about page reference so that caller should notice it and comment why they release page reference. It's not good API.

Long time ago, Hugh tried it[1] but gave up of reason which reiser4's drop_page had to unlock the page between removing it from page cache and doing the page_cache_release. But now the situation is changed. I think at least things in current mainline doesn't have any obstacles. The problem is fs or somethings out of mainline. If it has done such thing like reiser4, this patch could be a problem but they found it when compile time since we remove remove_from_page_cache.

[1] http://lkml.org/lkml/2004/10/24/140

The series configuration is following as.

Quoted 11 lines

[1/7] : This patch introduces new API delete_from_page_cache. [2,3,4,5/7] : Change remove_from_page_cache with delete_from_page_cache. Intentionally I divide patch per file since someone might have a concern about releasing page reference of delete_from_page_cache in somecase (ex, truncate.c)
[6/7] : Remove old API so out of fs can meet compile error when build time and can notice it.
[7/7] : Change __remove_from_page_cache with __delete_from_page_cache, too. In this time, I made all-in-one patch because it doesn't change old behavior so it has no concern. Just clean up patch.

Quoted 1 line

Could you please describe any testing done, was it mostly functional?

I didn't test it since I think it's okay as a code review. Do you find any faults or guess it?
Anyway, I should have tested it before sending patches.

we are now -rc8 and Andrew doesn't held a patch.
So I will test it until he grab a patch.

Thanks,

Quoted 5 lines

--
       Three Cheers,
       Balbir

Signature · 9 lines
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Reviewed-by on the v2 series
#14 lore raw
In reply to Minchan Kim
Quoted 12 lines

The series configuration is following as.

[1/7] : This patch introduces new API delete_from_page_cache. [2,3,4,5/7] : Change remove_from_page_cache with delete_from_page_cache. Intentionally I divide patch per file since someone might have a concern about releasing page reference of delete_from_page_cache in somecase (ex, truncate.c)
[6/7] : Remove old API so out of fs can meet compile error when build time and can notice it.
[7/7] : Change __remove_from_page_cache with __delete_from_page_cache, too. In this time, I made all-in-one patch because it doesn't change old behavior so it has no concern. Just clean up patch.

All of them,

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>