linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] f2fs: keep PagePrivate during releasepage
@ 2015-02-02 22:51 Jaegeuk Kim
  2015-02-02 22:51 ` [PATCH 2/2] f2fs: show the number of writeback pages in stat Jaegeuk Kim
  2015-02-05  7:50 ` [f2fs-dev] [PATCH 1/2] f2fs: keep PagePrivate during releasepage Chao Yu
  0 siblings, 2 replies; 4+ messages in thread
From: Jaegeuk Kim @ 2015-02-02 22:51 UTC (permalink / raw)
  To: linux-kernel, linux-fsdevel, linux-f2fs-devel; +Cc: Jaegeuk Kim

If PagePrivate is removed by releasepage, f2fs loses counting dirty pages.

e.g., try_to_release_page will not release page when the page is dirty,
but our releasepage removes PagePrivate.

    [<ffffffff81188d75>] try_to_release_page+0x35/0x50
    [<ffffffff811996f9>] invalidate_inode_pages2_range+0x2f9/0x3b0
    [<ffffffffa02a7f54>] ? truncate_blocks+0x384/0x4d0 [f2fs]
    [<ffffffffa02b7583>] ? f2fs_direct_IO+0x283/0x290 [f2fs]
    [<ffffffffa02b7fb0>] ? get_data_block_fiemap+0x20/0x20 [f2fs]
    [<ffffffff8118aa53>] generic_file_direct_write+0x163/0x170
    [<ffffffff8118ad06>] __generic_file_write_iter+0x2a6/0x350
    [<ffffffff8118adef>] generic_file_write_iter+0x3f/0xb0
    [<ffffffff81203081>] new_sync_write+0x81/0xb0
    [<ffffffff81203837>] vfs_write+0xb7/0x1f0
    [<ffffffff81204459>] SyS_write+0x49/0xb0
    [<ffffffff817c286d>] system_call_fastpath+0x16/0x1b

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 fs/f2fs/checkpoint.c | 4 ++++
 fs/f2fs/data.c       | 4 ++++
 fs/f2fs/node.c       | 4 ++++
 3 files changed, 12 insertions(+)

diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index f7cdcad..470fa58 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -321,6 +321,10 @@ static void f2fs_invalidate_meta_page(struct page *page, unsigned int offset,
 
 static int f2fs_release_meta_page(struct page *page, gfp_t wait)
 {
+	/* If this is dirty page, keep PagePrivate */
+	if (PageDirty(page))
+		return 0;
+
 	ClearPagePrivate(page);
 	return 1;
 }
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 6d9e6e4..27dc3fd 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -1130,6 +1130,10 @@ static void f2fs_invalidate_data_page(struct page *page, unsigned int offset,
 
 static int f2fs_release_data_page(struct page *page, gfp_t wait)
 {
+	/* If this is dirty page, keep PagePrivate */
+	if (PageDirty(page))
+		return 0;
+
 	ClearPagePrivate(page);
 	return 1;
 }
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 05e6faa..9feda38 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1381,6 +1381,10 @@ static void f2fs_invalidate_node_page(struct page *page, unsigned int offset,
 
 static int f2fs_release_node_page(struct page *page, gfp_t wait)
 {
+	/* If this is dirty page, keep PagePrivate */
+	if (PageDirty(page))
+		return 0;
+
 	ClearPagePrivate(page);
 	return 1;
 }
-- 
2.1.1

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

* [PATCH 2/2] f2fs: show the number of writeback pages in stat
  2015-02-02 22:51 [PATCH 1/2] f2fs: keep PagePrivate during releasepage Jaegeuk Kim
@ 2015-02-02 22:51 ` Jaegeuk Kim
  2015-02-05  7:52   ` [f2fs-dev] " Chao Yu
  2015-02-05  7:50 ` [f2fs-dev] [PATCH 1/2] f2fs: keep PagePrivate during releasepage Chao Yu
  1 sibling, 1 reply; 4+ messages in thread
From: Jaegeuk Kim @ 2015-02-02 22:51 UTC (permalink / raw)
  To: linux-kernel, linux-fsdevel, linux-f2fs-devel; +Cc: Jaegeuk Kim

This patch adds the # of writeback pages in stat info.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 fs/f2fs/debug.c | 5 +++--
 fs/f2fs/f2fs.h  | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c
index 0f721f6..ac2bd8e 100644
--- a/fs/f2fs/debug.c
+++ b/fs/f2fs/debug.c
@@ -40,6 +40,7 @@ static void update_general_status(struct f2fs_sb_info *sbi)
 	si->ndirty_dirs = sbi->n_dirty_dirs;
 	si->ndirty_meta = get_pages(sbi, F2FS_DIRTY_META);
 	si->inmem_pages = get_pages(sbi, F2FS_INMEM_PAGES);
+	si->wb_pages = get_pages(sbi, F2FS_WRITEBACK);
 	si->total_count = (int)sbi->user_block_count / sbi->blocks_per_seg;
 	si->rsvd_segs = reserved_segments(sbi);
 	si->overp_segs = overprovision_segments(sbi);
@@ -266,8 +267,8 @@ static int stat_show(struct seq_file *s, void *v)
 		seq_printf(s, "\nExtent Hit Ratio: %d / %d\n",
 			   si->hit_ext, si->total_ext);
 		seq_puts(s, "\nBalancing F2FS Async:\n");
-		seq_printf(s, "  - inmem: %4d\n",
-			   si->inmem_pages);
+		seq_printf(s, "  - inmem: %4d, wb: %4d\n",
+			   si->inmem_pages, si->wb_pages);
 		seq_printf(s, "  - nodes: %4d in %4d\n",
 			   si->ndirty_node, si->node_pages);
 		seq_printf(s, "  - dents: %4d in dirs:%4d\n",
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index d89dc5d0..d005939c3 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -1550,7 +1550,7 @@ struct f2fs_stat_info {
 	int ndirty_node, ndirty_dent, ndirty_dirs, ndirty_meta;
 	int nats, dirty_nats, sits, dirty_sits, fnids;
 	int total_count, utilization;
-	int bg_gc, inline_inode, inline_dir, inmem_pages;
+	int bg_gc, inline_inode, inline_dir, inmem_pages, wb_pages;
 	unsigned int valid_count, valid_node_count, valid_inode_count;
 	unsigned int bimodal, avg_vblocks;
 	int util_free, util_valid, util_invalid;
-- 
2.1.1


------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/

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

* RE: [f2fs-dev] [PATCH 1/2] f2fs: keep PagePrivate during releasepage
  2015-02-02 22:51 [PATCH 1/2] f2fs: keep PagePrivate during releasepage Jaegeuk Kim
  2015-02-02 22:51 ` [PATCH 2/2] f2fs: show the number of writeback pages in stat Jaegeuk Kim
@ 2015-02-05  7:50 ` Chao Yu
  1 sibling, 0 replies; 4+ messages in thread
From: Chao Yu @ 2015-02-05  7:50 UTC (permalink / raw)
  To: 'Jaegeuk Kim', linux-kernel, linux-fsdevel, linux-f2fs-devel

> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> Sent: Tuesday, February 03, 2015 6:51 AM
> To: linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net
> Cc: Jaegeuk Kim
> Subject: [f2fs-dev] [PATCH 1/2] f2fs: keep PagePrivate during releasepage
> 
> If PagePrivate is removed by releasepage, f2fs loses counting dirty pages.
> 
> e.g., try_to_release_page will not release page when the page is dirty,
> but our releasepage removes PagePrivate.
> 
>     [<ffffffff81188d75>] try_to_release_page+0x35/0x50
>     [<ffffffff811996f9>] invalidate_inode_pages2_range+0x2f9/0x3b0
>     [<ffffffffa02a7f54>] ? truncate_blocks+0x384/0x4d0 [f2fs]
>     [<ffffffffa02b7583>] ? f2fs_direct_IO+0x283/0x290 [f2fs]
>     [<ffffffffa02b7fb0>] ? get_data_block_fiemap+0x20/0x20 [f2fs]
>     [<ffffffff8118aa53>] generic_file_direct_write+0x163/0x170
>     [<ffffffff8118ad06>] __generic_file_write_iter+0x2a6/0x350
>     [<ffffffff8118adef>] generic_file_write_iter+0x3f/0xb0
>     [<ffffffff81203081>] new_sync_write+0x81/0xb0
>     [<ffffffff81203837>] vfs_write+0xb7/0x1f0
>     [<ffffffff81204459>] SyS_write+0x49/0xb0
>     [<ffffffff817c286d>] system_call_fastpath+0x16/0x1b
> 
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

Reviewed-by: Chao Yu <chao2.yu@samsung.com>

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

* RE: [f2fs-dev] [PATCH 2/2] f2fs: show the number of writeback pages in stat
  2015-02-02 22:51 ` [PATCH 2/2] f2fs: show the number of writeback pages in stat Jaegeuk Kim
@ 2015-02-05  7:52   ` Chao Yu
  0 siblings, 0 replies; 4+ messages in thread
From: Chao Yu @ 2015-02-05  7:52 UTC (permalink / raw)
  To: 'Jaegeuk Kim', linux-kernel, linux-fsdevel, linux-f2fs-devel

> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> Sent: Tuesday, February 03, 2015 6:51 AM
> To: linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net
> Cc: Jaegeuk Kim
> Subject: [f2fs-dev] [PATCH 2/2] f2fs: show the number of writeback pages in stat
> 
> This patch adds the # of writeback pages in stat info.
> 
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

Reviewed-by: Chao Yu <chao2.yu@samsung.com>

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

end of thread, other threads:[~2015-02-05  7:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-02 22:51 [PATCH 1/2] f2fs: keep PagePrivate during releasepage Jaegeuk Kim
2015-02-02 22:51 ` [PATCH 2/2] f2fs: show the number of writeback pages in stat Jaegeuk Kim
2015-02-05  7:52   ` [f2fs-dev] " Chao Yu
2015-02-05  7:50 ` [f2fs-dev] [PATCH 1/2] f2fs: keep PagePrivate during releasepage Chao Yu

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).