Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1355584 > unrolled thread
| Started by | Shawn Lin <shawn.lin@rock-chips.com> |
|---|---|
| First post | 2016-03-11 04:40 +0100 |
| Last post | 2016-03-11 08:30 +0100 |
| Articles | 7 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH 0/8] some cleanup of inline flag checking Shawn Lin <shawn.lin@rock-chips.com> - 2016-03-11 04:40 +0100
[PATCH 3/8] f2fs: check inline flag ahead for f2fs_read_inline_data Shawn Lin <shawn.lin@rock-chips.com> - 2016-03-11 04:40 +0100
[PATCH 5/8] f2fs: f2fs: check inline flag ahead for f2fs_inline_data_fiemap Shawn Lin <shawn.lin@rock-chips.com> - 2016-03-11 04:40 +0100
[PATCH 2/8] f2fs: remove checing inline data flag for f2fs_write_data_page Shawn Lin <shawn.lin@rock-chips.com> - 2016-03-11 04:40 +0100
RE: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking Chao Yu <chao2.yu@samsung.com> - 2016-03-11 06:40 +0100
Re: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking Shawn Lin <shawn.lin@kernel-upstream.org> - 2016-03-11 07:40 +0100
RE: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking Chao Yu <chao2.yu@samsung.com> - 2016-03-11 08:30 +0100
| From | Shawn Lin <shawn.lin@rock-chips.com> |
|---|---|
| Date | 2016-03-11 04:40 +0100 |
| Subject | [PATCH 0/8] some cleanup of inline flag checking |
| Message-ID | <rbm5I-8y-5@gated-at.bofh.it> |
This patchset is going to remove some redunant checking of inline data flag and also going to avoid some unnecessary cpu waste when doing inline stuff. Note: Sorry for sending previous four patches in separate, let drop them and make them in this thread for better review. Shawn Lin (8): f2fs: check inline flag ahead for f2fs_write_inline_data f2fs: remove checing inline data flag for f2fs_write_data_page f2fs: check inline flag ahead for f2fs_read_inline_data f2fs: remove redundant checking of inline data flag f2fs: f2fs: check inline flag ahead for f2fs_inline_data_fiemap f2fs: remove checing inline data flag for f2fs_fiemap f2fs: remove unnecessary inline checking for f2fs_convert_inline_inode f2fs: check inline flag ahead for get_dnode_of_data fs/f2fs/data.c | 17 +++++++---------- fs/f2fs/inline.c | 27 ++++++++++----------------- fs/f2fs/node.c | 12 +++++------- 3 files changed, 22 insertions(+), 34 deletions(-) -- 2.3.7
[toc] | [next] | [standalone]
| From | Shawn Lin <shawn.lin@rock-chips.com> |
|---|---|
| Date | 2016-03-11 04:40 +0100 |
| Subject | [PATCH 3/8] f2fs: check inline flag ahead for f2fs_read_inline_data |
| Message-ID | <rbm5I-8y-23@gated-at.bofh.it> |
| In reply to | #1355584 |
No matter inline data flag is set or not, get_node_page is
going work now. But actually we can avoid it by puting the
check of inline data flag in advance to save this cpu cycle.
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
---
fs/f2fs/inline.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 0926eab..69a4806 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -81,17 +81,15 @@ int f2fs_read_inline_data(struct inode *inode, struct page *page)
{
struct page *ipage;
+ if (!f2fs_has_inline_data(inode))
+ return -EAGAIN;
+
ipage = get_node_page(F2FS_I_SB(inode), inode->i_ino);
if (IS_ERR(ipage)) {
unlock_page(page);
return PTR_ERR(ipage);
}
- if (!f2fs_has_inline_data(inode)) {
- f2fs_put_page(ipage, 1);
- return -EAGAIN;
- }
-
if (page->index)
zero_user_segment(page, 0, PAGE_CACHE_SIZE);
else
--
2.3.7
[toc] | [prev] | [next] | [standalone]
| From | Shawn Lin <shawn.lin@rock-chips.com> |
|---|---|
| Date | 2016-03-11 04:40 +0100 |
| Subject | [PATCH 5/8] f2fs: f2fs: check inline flag ahead for f2fs_inline_data_fiemap |
| Message-ID | <rbm5J-8y-27@gated-at.bofh.it> |
| In reply to | #1355584 |
No matter inline data flag is set or not, get_node_page is
going work now. But actually we can avoid it by puting the
check of inline data flag in advance to save this cpu cycle.
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
---
fs/f2fs/inline.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 69a4806..394feee 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -566,15 +566,13 @@ int f2fs_inline_data_fiemap(struct inode *inode,
struct page *ipage;
int err = 0;
+ if (!f2fs_has_inline_data(inode))
+ return -EAGAIN;
+
ipage = get_node_page(F2FS_I_SB(inode), inode->i_ino);
if (IS_ERR(ipage))
return PTR_ERR(ipage);
- if (!f2fs_has_inline_data(inode)) {
- err = -EAGAIN;
- goto out;
- }
-
ilen = min_t(size_t, MAX_INLINE_DATA, i_size_read(inode));
if (start >= ilen)
goto out;
--
2.3.7
[toc] | [prev] | [next] | [standalone]
| From | Shawn Lin <shawn.lin@rock-chips.com> |
|---|---|
| Date | 2016-03-11 04:40 +0100 |
| Subject | [PATCH 2/8] f2fs: remove checing inline data flag for f2fs_write_data_page |
| Message-ID | <rbm5J-8y-29@gated-at.bofh.it> |
| In reply to | #1355584 |
Remove the f2fs_has_inline_data for f2fs_write_data_page, and let f2fs_write_inline_data take over gatekeeper of checking inline data flag. Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> --- fs/f2fs/data.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index e5c762b..38c834e 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1192,8 +1192,7 @@ write: err = -EAGAIN; f2fs_lock_op(sbi); - if (f2fs_has_inline_data(inode)) - err = f2fs_write_inline_data(inode, page); + err = f2fs_write_inline_data(inode, page); if (err == -EAGAIN) err = do_write_data_page(&fio); f2fs_unlock_op(sbi); -- 2.3.7
[toc] | [prev] | [next] | [standalone]
| From | Chao Yu <chao2.yu@samsung.com> |
|---|---|
| Date | 2016-03-11 06:40 +0100 |
| Subject | RE: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking |
| Message-ID | <rbnXP-1nu-1@gated-at.bofh.it> |
| In reply to | #1355584 |
Hi Shawn, > -----Original Message----- > From: Shawn Lin [mailto:shawn.lin@rock-chips.com] > Sent: Friday, March 11, 2016 11:28 AM > To: Jaegeuk Kim > Cc: Shawn Lin; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net > Subject: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking > > > This patchset is going to remove some redunant checking > of inline data flag and also going to avoid some unnecessary > cpu waste when doing inline stuff. When we are accessing inline inode, inline inode conversion can happen concurrently, we should check inline flag again under inode page's lock to avoid accessing the wrong inline data which may have been converted. Thanks, > > Note: > Sorry for sending previous four patches in separate, let > drop them and make them in this thread for better review. > > > > Shawn Lin (8): > f2fs: check inline flag ahead for f2fs_write_inline_data > f2fs: remove checing inline data flag for f2fs_write_data_page > f2fs: check inline flag ahead for f2fs_read_inline_data > f2fs: remove redundant checking of inline data flag > f2fs: f2fs: check inline flag ahead for f2fs_inline_data_fiemap > f2fs: remove checing inline data flag for f2fs_fiemap > f2fs: remove unnecessary inline checking for f2fs_convert_inline_inode > f2fs: check inline flag ahead for get_dnode_of_data > > fs/f2fs/data.c | 17 +++++++---------- > fs/f2fs/inline.c | 27 ++++++++++----------------- > fs/f2fs/node.c | 12 +++++------- > 3 files changed, 22 insertions(+), 34 deletions(-) > > -- > 2.3.7 > > > > ------------------------------------------------------------------------------ > Transform Data into Opportunity. > Accelerate data analysis in your applications with > Intel Data Analytics Acceleration Library. > Click to learn more. > http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
[toc] | [prev] | [next] | [standalone]
| From | Shawn Lin <shawn.lin@kernel-upstream.org> |
|---|---|
| Date | 2016-03-11 07:40 +0100 |
| Subject | Re: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking |
| Message-ID | <rboTT-22L-1@gated-at.bofh.it> |
| In reply to | #1355616 |
Hi Chao Yu, On 2016/3/11 13:29, Chao Yu wrote: > Hi Shawn, > >> -----Original Message----- >> From: Shawn Lin [mailto:shawn.lin@rock-chips.com] >> Sent: Friday, March 11, 2016 11:28 AM >> To: Jaegeuk Kim >> Cc: Shawn Lin; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net >> Subject: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking >> >> >> This patchset is going to remove some redunant checking >> of inline data flag and also going to avoid some unnecessary >> cpu waste when doing inline stuff. > > When we are accessing inline inode, inline inode conversion can happen > concurrently, we should check inline flag again under inode page's lock > to avoid accessing the wrong inline data which may have been converted. > that sounds reasonable at first glance, and it more seems like that mopst part of this patchset is just puting the checking in the right way. If we need to check the inline inode under the protection of inode page's lock, it means any callers who calling inline API stuff is wasting time on checing the flag outside the API, right? So we can just remove the redundant checking of the caller, but not change the behaviour of checing inline flag under page's lock? Thanks for catching it. > Thanks, > >> >> Note: >> Sorry for sending previous four patches in separate, let >> drop them and make them in this thread for better review. >> >> >> >> Shawn Lin (8): >> f2fs: check inline flag ahead for f2fs_write_inline_data >> f2fs: remove checing inline data flag for f2fs_write_data_page >> f2fs: check inline flag ahead for f2fs_read_inline_data >> f2fs: remove redundant checking of inline data flag >> f2fs: f2fs: check inline flag ahead for f2fs_inline_data_fiemap >> f2fs: remove checing inline data flag for f2fs_fiemap >> f2fs: remove unnecessary inline checking for f2fs_convert_inline_inode >> f2fs: check inline flag ahead for get_dnode_of_data >> >> fs/f2fs/data.c | 17 +++++++---------- >> fs/f2fs/inline.c | 27 ++++++++++----------------- >> fs/f2fs/node.c | 12 +++++------- >> 3 files changed, 22 insertions(+), 34 deletions(-) >> >> -- >> 2.3.7 >> >> >> >> ------------------------------------------------------------------------------ >> Transform Data into Opportunity. >> Accelerate data analysis in your applications with >> Intel Data Analytics Acceleration Library. >> Click to learn more. >> http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 >> _______________________________________________ >> Linux-f2fs-devel mailing list >> Linux-f2fs-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel > > > ------------------------------------------------------------------------------ > Transform Data into Opportunity. > Accelerate data analysis in your applications with > Intel Data Analytics Acceleration Library. > Click to learn more. > http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel >
[toc] | [prev] | [next] | [standalone]
| From | Chao Yu <chao2.yu@samsung.com> |
|---|---|
| Date | 2016-03-11 08:30 +0100 |
| Subject | RE: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking |
| Message-ID | <rbpGi-2IW-5@gated-at.bofh.it> |
| In reply to | #1355626 |
Hi Shawn, > -----Original Message----- > From: Shawn Lin [mailto:shawn.lin@kernel-upstream.org] > Sent: Friday, March 11, 2016 2:34 PM > To: Chao Yu; 'Shawn Lin'; 'Jaegeuk Kim' > Cc: shawn.lin@kernel-upstream.org; linux-kernel@vger.kernel.org; > linux-f2fs-devel@lists.sourceforge.net > Subject: Re: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking > > Hi Chao Yu, > > On 2016/3/11 13:29, Chao Yu wrote: > > Hi Shawn, > > > >> -----Original Message----- > >> From: Shawn Lin [mailto:shawn.lin@rock-chips.com] > >> Sent: Friday, March 11, 2016 11:28 AM > >> To: Jaegeuk Kim > >> Cc: Shawn Lin; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net > >> Subject: [f2fs-dev] [PATCH 0/8] some cleanup of inline flag checking > >> > >> > >> This patchset is going to remove some redunant checking > >> of inline data flag and also going to avoid some unnecessary > >> cpu waste when doing inline stuff. > > > > When we are accessing inline inode, inline inode conversion can happen > > concurrently, we should check inline flag again under inode page's lock > > to avoid accessing the wrong inline data which may have been converted. > > > > that sounds reasonable at first glance, and it more seems like that > mopst part of this patchset is just puting the checking in the right way. > > If we need to check the inline inode under the protection of inode > page's lock, it means any callers who calling inline API stuff is > wasting time on checing the flag outside the API, right? As you know, inline conversion was designed as one-way operation, which means inline inode can only be converted to normal inode, but can not be converted in the opposite way. So here, with original design, it is OK to handle inode as regular one if we detect that it is a non-inline inode, since it won't be converted to inline one, otherwise, we should take inode page's lock and check the flag again. Thanks, > > So we can just remove the redundant checking of the caller, but not > change the behaviour of checing inline flag under page's lock? > > Thanks for catching it. > > > Thanks, > > > >> > >> Note: > >> Sorry for sending previous four patches in separate, let > >> drop them and make them in this thread for better review. > >> > >> > >> > >> Shawn Lin (8): > >> f2fs: check inline flag ahead for f2fs_write_inline_data > >> f2fs: remove checing inline data flag for f2fs_write_data_page > >> f2fs: check inline flag ahead for f2fs_read_inline_data > >> f2fs: remove redundant checking of inline data flag > >> f2fs: f2fs: check inline flag ahead for f2fs_inline_data_fiemap > >> f2fs: remove checing inline data flag for f2fs_fiemap > >> f2fs: remove unnecessary inline checking for f2fs_convert_inline_inode > >> f2fs: check inline flag ahead for get_dnode_of_data > >> > >> fs/f2fs/data.c | 17 +++++++---------- > >> fs/f2fs/inline.c | 27 ++++++++++----------------- > >> fs/f2fs/node.c | 12 +++++------- > >> 3 files changed, 22 insertions(+), 34 deletions(-) > >> > >> -- > >> 2.3.7 > >> > >> > >> > >> ------------------------------------------------------------------------------ > >> Transform Data into Opportunity. > >> Accelerate data analysis in your applications with > >> Intel Data Analytics Acceleration Library. > >> Click to learn more. > >> http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 > >> _______________________________________________ > >> Linux-f2fs-devel mailing list > >> Linux-f2fs-devel@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel > > > > > > ------------------------------------------------------------------------------ > > Transform Data into Opportunity. > > Accelerate data analysis in your applications with > > Intel Data Analytics Acceleration Library. > > Click to learn more. > > http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 > > _______________________________________________ > > Linux-f2fs-devel mailing list > > Linux-f2fs-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel > >
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web