linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] f2fs: skip ->writepages for {mete,node}_inode during recovery
@ 2017-06-29 15:20 Chao Yu
  2017-06-29 15:20 ` [PATCH 2/2] f2fs: reuse original mount option in ->remount_fs Chao Yu
  0 siblings, 1 reply; 5+ messages in thread
From: Chao Yu @ 2017-06-29 15:20 UTC (permalink / raw)
  To: jaegeuk; +Cc: linux-f2fs-devel, linux-kernel, Chao Yu

From: Chao Yu <yuchao0@huawei.com>

Skip ->writepages in prior to ->writepage for {meta,node}_inode during
recovery, hence unneeded loop in ->writepages can be avoided.

Moreover, check SBI_POR_DOING earlier while writebacking pages.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
---
 fs/f2fs/checkpoint.c |  3 +++
 fs/f2fs/data.c       | 13 +++++++------
 fs/f2fs/node.c       |  3 +++
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index 12559a4b6c24..954917d582f8 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -269,6 +269,9 @@ static int f2fs_write_meta_pages(struct address_space *mapping,
 	struct f2fs_sb_info *sbi = F2FS_M_SB(mapping);
 	long diff, written;
 
+	if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
+		goto skip_write;
+
 	/* collect a number of dirty meta pages and write together */
 	if (wbc->for_kupdate ||
 		get_pages(sbi, F2FS_DIRTY_META) < nr_pages_to_skip(sbi, META))
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 9141bd19a902..d58b81213a86 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -1493,6 +1493,9 @@ static int __write_data_page(struct page *page, bool *submitted,
 
 	trace_f2fs_writepage(page, DATA);
 
+	if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
+		goto redirty_out;
+
 	if (page->index < end_index)
 		goto write;
 
@@ -1506,8 +1509,6 @@ static int __write_data_page(struct page *page, bool *submitted,
 
 	zero_user_segment(page, offset, PAGE_SIZE);
 write:
-	if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
-		goto redirty_out;
 	if (f2fs_is_drop_cache(inode))
 		goto out;
 	/* we should not write 0'th page having journal header */
@@ -1755,6 +1756,10 @@ static int f2fs_write_data_pages(struct address_space *mapping,
 	if (!get_dirty_pages(inode) && wbc->sync_mode == WB_SYNC_NONE)
 		return 0;
 
+	/* during POR, we don't need to trigger writepage at all. */
+	if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
+		goto skip_write;
+
 	if (S_ISDIR(inode->i_mode) && wbc->sync_mode == WB_SYNC_NONE &&
 			get_dirty_pages(inode) < nr_pages_to_skip(sbi, DATA) &&
 			available_free_memory(sbi, DIRTY_DENTS))
@@ -1764,10 +1769,6 @@ static int f2fs_write_data_pages(struct address_space *mapping,
 	if (is_inode_flag_set(inode, FI_DO_DEFRAG))
 		goto skip_write;
 
-	/* during POR, we don't need to trigger writepage at all. */
-	if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
-		goto skip_write;
-
 	trace_f2fs_writepages(mapping->host, wbc, DATA);
 
 	/* to avoid spliting IOs due to mixed WB_SYNC_ALL and WB_SYNC_NONE */
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index f6f46be139f4..fd57ffd88508 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1687,6 +1687,9 @@ static int f2fs_write_node_pages(struct address_space *mapping,
 	struct blk_plug plug;
 	long diff;
 
+	if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
+		goto skip_write;
+
 	/* balancing f2fs's metadata in background */
 	f2fs_balance_fs_bg(sbi);
 
-- 
2.13.0.90.g1eb437020

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

* [PATCH 2/2] f2fs: reuse original mount option in ->remount_fs
  2017-06-29 15:20 [PATCH 1/2] f2fs: skip ->writepages for {mete,node}_inode during recovery Chao Yu
@ 2017-06-29 15:20 ` Chao Yu
  2017-07-01  7:48   ` Jaegeuk Kim
  0 siblings, 1 reply; 5+ messages in thread
From: Chao Yu @ 2017-06-29 15:20 UTC (permalink / raw)
  To: jaegeuk; +Cc: linux-f2fs-devel, linux-kernel, Chao Yu

From: Chao Yu <yuchao0@huawei.com>

Don't clear old mount option before parse new option during ->remount_fs
like other generic filesystems.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
---
 fs/f2fs/super.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index f27c141cd8aa..af472f7968d0 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -846,7 +846,6 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
 			clear_sbi_flag(sbi, SBI_NEED_SB_WRITE);
 	}
 
-	sbi->mount_opt.opt = 0;
 	default_options(sbi);
 
 	/* parse mount options */
-- 
2.13.0.90.g1eb437020

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

* Re: [PATCH 2/2] f2fs: reuse original mount option in ->remount_fs
  2017-06-29 15:20 ` [PATCH 2/2] f2fs: reuse original mount option in ->remount_fs Chao Yu
@ 2017-07-01  7:48   ` Jaegeuk Kim
  2017-07-01 16:14     ` Chao Yu
  2017-07-05  4:05     ` Chao Yu
  0 siblings, 2 replies; 5+ messages in thread
From: Jaegeuk Kim @ 2017-07-01  7:48 UTC (permalink / raw)
  To: Chao Yu; +Cc: linux-f2fs-devel, linux-kernel, Chao Yu

On 06/29, Chao Yu wrote:
> From: Chao Yu <yuchao0@huawei.com>
> 
> Don't clear old mount option before parse new option during ->remount_fs
> like other generic filesystems.

So, what happened on your original patch?

commit 26666c8a4366debae30ae37d0688b2bec92d196a
    f2fs: fix to clean previous mount option when remount_fs

I think we need to rever the original patch tho.

Thanks,

> 
> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> ---
>  fs/f2fs/super.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index f27c141cd8aa..af472f7968d0 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -846,7 +846,6 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
>  			clear_sbi_flag(sbi, SBI_NEED_SB_WRITE);
>  	}
>  
> -	sbi->mount_opt.opt = 0;
>  	default_options(sbi);
>  
>  	/* parse mount options */
> -- 
> 2.13.0.90.g1eb437020

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

* Re: [PATCH 2/2] f2fs: reuse original mount option in ->remount_fs
  2017-07-01  7:48   ` Jaegeuk Kim
@ 2017-07-01 16:14     ` Chao Yu
  2017-07-05  4:05     ` Chao Yu
  1 sibling, 0 replies; 5+ messages in thread
From: Chao Yu @ 2017-07-01 16:14 UTC (permalink / raw)
  To: Jaegeuk Kim; +Cc: linux-f2fs-devel, linux-kernel, Chao Yu

On 2017/7/1 15:48, Jaegeuk Kim wrote:
> On 06/29, Chao Yu wrote:
>> From: Chao Yu <yuchao0@huawei.com>
>>
>> Don't clear old mount option before parse new option during ->remount_fs
>> like other generic filesystems>
> So, what happened on your original patch?
> 
> commit 26666c8a4366debae30ae37d0688b2bec92d196a
>     f2fs: fix to clean previous mount option when remount_fs
> 
> I think we need to rever the original patch tho.

I just removed this for passing some quota testcases in xfstests suit,
and after that, I didn't get further failures in other testcases.

Let me check this again.

Thanks,

> 
> Thanks,
> 
>>
>> Signed-off-by: Chao Yu <yuchao0@huawei.com>
>> ---
>>  fs/f2fs/super.c | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
>> index f27c141cd8aa..af472f7968d0 100644
>> --- a/fs/f2fs/super.c
>> +++ b/fs/f2fs/super.c
>> @@ -846,7 +846,6 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
>>  			clear_sbi_flag(sbi, SBI_NEED_SB_WRITE);
>>  	}
>>  
>> -	sbi->mount_opt.opt = 0;
>>  	default_options(sbi);
>>  
>>  	/* parse mount options */
>> -- 
>> 2.13.0.90.g1eb437020

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

* Re: [PATCH 2/2] f2fs: reuse original mount option in ->remount_fs
  2017-07-01  7:48   ` Jaegeuk Kim
  2017-07-01 16:14     ` Chao Yu
@ 2017-07-05  4:05     ` Chao Yu
  1 sibling, 0 replies; 5+ messages in thread
From: Chao Yu @ 2017-07-05  4:05 UTC (permalink / raw)
  To: Jaegeuk Kim; +Cc: linux-f2fs-devel, linux-kernel, Chao Yu

On 2017/7/1 15:48, Jaegeuk Kim wrote:
> On 06/29, Chao Yu wrote:
>> From: Chao Yu <yuchao0@huawei.com>
>>
>> Don't clear old mount option before parse new option during ->remount_fs
>> like other generic filesystems.
> 
> So, what happened on your original patch?
> 
> commit 26666c8a4366debae30ae37d0688b2bec92d196a
>     f2fs: fix to clean previous mount option when remount_fs

I think that patch is wrong, since the manual doesn't describe kernel logic,
so I'd like revert that patch, then f2fs ->remount_fs logic is more like
generic filesystem.

Thanks,

> 
> I think we need to rever the original patch tho.>
> Thanks,
> 
>>
>> Signed-off-by: Chao Yu <yuchao0@huawei.com>
>> ---
>>  fs/f2fs/super.c | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
>> index f27c141cd8aa..af472f7968d0 100644
>> --- a/fs/f2fs/super.c
>> +++ b/fs/f2fs/super.c
>> @@ -846,7 +846,6 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
>>  			clear_sbi_flag(sbi, SBI_NEED_SB_WRITE);
>>  	}
>>  
>> -	sbi->mount_opt.opt = 0;
>>  	default_options(sbi);
>>  
>>  	/* parse mount options */
>> -- 
>> 2.13.0.90.g1eb437020

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

end of thread, other threads:[~2017-07-05  4:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-29 15:20 [PATCH 1/2] f2fs: skip ->writepages for {mete,node}_inode during recovery Chao Yu
2017-06-29 15:20 ` [PATCH 2/2] f2fs: reuse original mount option in ->remount_fs Chao Yu
2017-07-01  7:48   ` Jaegeuk Kim
2017-07-01 16:14     ` Chao Yu
2017-07-05  4:05     ` 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).