diff mbox

[1/3] f2fs: use f2fs_submit_page_bio for ra_meta_pages

Message ID 20170510234816.3373-1-jaegeuk@kernel.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jaegeuk Kim May 10, 2017, 11:48 p.m. UTC
This patch avoids to use f2fs_submit_merged_bio for read, which was the only
read case.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 fs/f2fs/checkpoint.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Chao Yu May 11, 2017, 1:24 a.m. UTC | #1
Hi Jaegeuk,

On 2017/5/11 7:48, Jaegeuk Kim wrote:
> This patch avoids to use f2fs_submit_merged_bio for read, which was the only
> read case.

This makes f2fs losing the chance to merge multiple pages into one bio during
reading continuous physical blocks, it may cause potential performance
regression, how about using a local bio in ra_meta_pages to cache more pages?

Thanks,

> 
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
>  fs/f2fs/checkpoint.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> index ea9c317b5916..8d92f8249000 100644
> --- a/fs/f2fs/checkpoint.c
> +++ b/fs/f2fs/checkpoint.c
> @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
>  		}
>  
>  		fio.page = page;
> -		fio.old_blkaddr = fio.new_blkaddr;
> -		f2fs_submit_page_mbio(&fio);
> +		f2fs_submit_page_bio(&fio);
>  		f2fs_put_page(page, 0);
>  	}
>  out:
> -	f2fs_submit_merged_bio(sbi, META, READ);
>  	blk_finish_plug(&plug);
>  	return blkno - start;
>  }
>
Chao Yu May 11, 2017, 1:47 a.m. UTC | #2
On 2017/5/11 9:24, Chao Yu wrote:
> Hi Jaegeuk,
> 
> On 2017/5/11 7:48, Jaegeuk Kim wrote:
>> This patch avoids to use f2fs_submit_merged_bio for read, which was the only
>> read case.
> 
> This makes f2fs losing the chance to merge multiple pages into one bio during
> reading continuous physical blocks, it may cause potential performance
> regression, how about using a local bio in ra_meta_pages to cache more pages?

BTW, need to remove sbi->read_io as well?

Thanks,

> 
> Thanks,
> 
>>
>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>> ---
>>  fs/f2fs/checkpoint.c | 4 +---
>>  1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
>> index ea9c317b5916..8d92f8249000 100644
>> --- a/fs/f2fs/checkpoint.c
>> +++ b/fs/f2fs/checkpoint.c
>> @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
>>  		}
>>  
>>  		fio.page = page;
>> -		fio.old_blkaddr = fio.new_blkaddr;
>> -		f2fs_submit_page_mbio(&fio);
>> +		f2fs_submit_page_bio(&fio);
>>  		f2fs_put_page(page, 0);
>>  	}
>>  out:
>> -	f2fs_submit_merged_bio(sbi, META, READ);
>>  	blk_finish_plug(&plug);
>>  	return blkno - start;
>>  }
>>
> 
> 
> .
>
Jaegeuk Kim May 11, 2017, 2:41 a.m. UTC | #3
On 05/11, Chao Yu wrote:
> Hi Jaegeuk,
> 
> On 2017/5/11 7:48, Jaegeuk Kim wrote:
> > This patch avoids to use f2fs_submit_merged_bio for read, which was the only
> > read case.
> 
> This makes f2fs losing the chance to merge multiple pages into one bio during
> reading continuous physical blocks, it may cause potential performance
> regression, how about using a local bio in ra_meta_pages to cache more pages?

This is a readahead flow, which is asynchronous and not a performance critical
flow. And, I expect blk_plug is still able to merge them. We're using this in
readahead of node blocks as well.

Thanks,

> 
> Thanks,
> 
> > 
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > ---
> >  fs/f2fs/checkpoint.c | 4 +---
> >  1 file changed, 1 insertion(+), 3 deletions(-)
> > 
> > diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> > index ea9c317b5916..8d92f8249000 100644
> > --- a/fs/f2fs/checkpoint.c
> > +++ b/fs/f2fs/checkpoint.c
> > @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
> >  		}
> >  
> >  		fio.page = page;
> > -		fio.old_blkaddr = fio.new_blkaddr;
> > -		f2fs_submit_page_mbio(&fio);
> > +		f2fs_submit_page_bio(&fio);
> >  		f2fs_put_page(page, 0);
> >  	}
> >  out:
> > -	f2fs_submit_merged_bio(sbi, META, READ);
> >  	blk_finish_plug(&plug);
> >  	return blkno - start;
> >  }
> >
Jaegeuk Kim May 11, 2017, 2:41 a.m. UTC | #4
On 05/11, Chao Yu wrote:
> On 2017/5/11 9:24, Chao Yu wrote:
> > Hi Jaegeuk,
> > 
> > On 2017/5/11 7:48, Jaegeuk Kim wrote:
> >> This patch avoids to use f2fs_submit_merged_bio for read, which was the only
> >> read case.
> > 
> > This makes f2fs losing the chance to merge multiple pages into one bio during
> > reading continuous physical blocks, it may cause potential performance
> > regression, how about using a local bio in ra_meta_pages to cache more pages?
> 
> BTW, need to remove sbi->read_io as well?

Yup.

> 
> Thanks,
> 
> > 
> > Thanks,
> > 
> >>
> >> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> >> ---
> >>  fs/f2fs/checkpoint.c | 4 +---
> >>  1 file changed, 1 insertion(+), 3 deletions(-)
> >>
> >> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> >> index ea9c317b5916..8d92f8249000 100644
> >> --- a/fs/f2fs/checkpoint.c
> >> +++ b/fs/f2fs/checkpoint.c
> >> @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
> >>  		}
> >>  
> >>  		fio.page = page;
> >> -		fio.old_blkaddr = fio.new_blkaddr;
> >> -		f2fs_submit_page_mbio(&fio);
> >> +		f2fs_submit_page_bio(&fio);
> >>  		f2fs_put_page(page, 0);
> >>  	}
> >>  out:
> >> -	f2fs_submit_merged_bio(sbi, META, READ);
> >>  	blk_finish_plug(&plug);
> >>  	return blkno - start;
> >>  }
> >>
> > 
> > 
> > .
> >
Chao Yu May 11, 2017, 3:22 a.m. UTC | #5
On 2017/5/11 10:41, Jaegeuk Kim wrote:
> On 05/11, Chao Yu wrote:
>> Hi Jaegeuk,
>>
>> On 2017/5/11 7:48, Jaegeuk Kim wrote:
>>> This patch avoids to use f2fs_submit_merged_bio for read, which was the only
>>> read case.
>>
>> This makes f2fs losing the chance to merge multiple pages into one bio during
>> reading continuous physical blocks, it may cause potential performance
>> regression, how about using a local bio in ra_meta_pages to cache more pages?
> 
> This is a readahead flow, which is asynchronous and not a performance critical
> flow. And, I expect blk_plug is still able to merge them. We're using this in
> readahead of node blocks as well.

Confirmed, block plug can do the merge. :)

Thanks,

> 
> Thanks,
> 
>>
>> Thanks,
>>
>>>
>>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>>> ---
>>>  fs/f2fs/checkpoint.c | 4 +---
>>>  1 file changed, 1 insertion(+), 3 deletions(-)
>>>
>>> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
>>> index ea9c317b5916..8d92f8249000 100644
>>> --- a/fs/f2fs/checkpoint.c
>>> +++ b/fs/f2fs/checkpoint.c
>>> @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
>>>  		}
>>>  
>>>  		fio.page = page;
>>> -		fio.old_blkaddr = fio.new_blkaddr;
>>> -		f2fs_submit_page_mbio(&fio);
>>> +		f2fs_submit_page_bio(&fio);
>>>  		f2fs_put_page(page, 0);
>>>  	}
>>>  out:
>>> -	f2fs_submit_merged_bio(sbi, META, READ);
>>>  	blk_finish_plug(&plug);
>>>  	return blkno - start;
>>>  }
>>>
> 
> .
>
diff mbox

Patch

diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index ea9c317b5916..8d92f8249000 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -207,12 +207,10 @@  int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
 		}
 
 		fio.page = page;
-		fio.old_blkaddr = fio.new_blkaddr;
-		f2fs_submit_page_mbio(&fio);
+		f2fs_submit_page_bio(&fio);
 		f2fs_put_page(page, 0);
 	}
 out:
-	f2fs_submit_merged_bio(sbi, META, READ);
 	blk_finish_plug(&plug);
 	return blkno - start;
 }