linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Minchan Kim <minchan.kim@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Minchan Kim <minchan.kim@gmail.com>,
	Hugh Dickins <hughd@google.com>
Subject: [RFC 1/5] drop page reference on remove_from_page_cache
Date: Sat, 18 Dec 2010 02:13:36 +0900	[thread overview]
Message-ID: <4bd059fc4f45fba7ed29a9f4325deb4f437d39f3.1292604745.git.minchan.kim@gmail.com> (raw)
In-Reply-To: <cover.1292604745.git.minchan.kim@gmail.com>
In-Reply-To: <cover.1292604745.git.minchan.kim@gmail.com>

Now we add page reference on add_to_page_cache but doesn't drop 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.

Do anyone know the such things? Do we care about things out of mainline?

Note :
The comment of remove_from_page_cache make by copy & paste & s/swap/page/
from delete_from_swap_cache.

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

Cc: Hugh Dickins <hughd@google.com>
Cc: linux-mm@kvack.org
Signed-off-by: Minchan Kim <minchan.kim@gmail.com>
---
 mm/filemap.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/mm/filemap.c b/mm/filemap.c
index 095c393..fb9db36 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -148,6 +148,16 @@ void __remove_from_page_cache(struct page *page)
 	}
 }
 
+/**
+ * remove_from_page_cache - remove 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 remove_from_page_cache(struct page *page)
 {
 	struct address_space *mapping = page->mapping;
@@ -163,6 +173,8 @@ void remove_from_page_cache(struct page *page)
 
 	if (freepage)
 		freepage(page);
+
+	page_cache_release(page);
 }
 EXPORT_SYMBOL(remove_from_page_cache);
 
-- 
1.7.0.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  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:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2010-12-17 17:13 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-17 17:13 [RFC 0/5] Change page reference hanlding semantic of page cache Minchan Kim
2010-12-17 17:13 ` Minchan Kim [this message]
2010-12-20  1:53   ` [RFC 1/5] drop page reference on remove_from_page_cache KAMEZAWA Hiroyuki
2010-12-17 17:13 ` [RFC 2/5] fuse: Remove unnecessary page release Minchan Kim
2010-12-20  1:54   ` KAMEZAWA Hiroyuki
2010-12-17 17:13 ` [RFC 3/5] tlbfs: " Minchan Kim
2010-12-20  1:54   ` KAMEZAWA Hiroyuki
2011-01-06  9:56   ` Mel Gorman
2011-01-10 15:39     ` Minchan Kim
2010-12-17 17:13 ` [RFC 4/5] swap: " Minchan Kim
2010-12-20  1:55   ` KAMEZAWA Hiroyuki
2010-12-17 17:13 ` [RFC 5/5] truncate: " Minchan Kim
2010-12-20  1:55   ` KAMEZAWA Hiroyuki
2010-12-20  2:21   ` KOSAKI Motohiro
2010-12-20  2:27     ` KAMEZAWA Hiroyuki
2010-12-20  2:58       ` Minchan Kim
2010-12-20  4:35         ` KAMEZAWA Hiroyuki
2010-12-20  8:09           ` Minchan Kim
2010-12-20  8:54             ` KAMEZAWA Hiroyuki
2010-12-20  2:27     ` Minchan Kim
2010-12-20  2:32       ` KOSAKI Motohiro
2010-12-20  2:49         ` Minchan Kim
2010-12-20  3:03           ` KOSAKI Motohiro
2010-12-20  3:31             ` Minchan Kim
2010-12-20 10:33 ` [RFC 0/5] Change page reference hanlding semantic of page cache Christoph Hellwig
2010-12-20 23:36   ` Minchan Kim
2010-12-21  5:07     ` Hugh Dickins
2010-12-21  7:32       ` Minchan Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4bd059fc4f45fba7ed29a9f4325deb4f437d39f3.1292604745.git.minchan.kim@gmail.com \
    --to=minchan.kim@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox