From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2992746AbcBSCyj (ORCPT ); Thu, 18 Feb 2016 21:54:39 -0500 Received: from lucky1.263xmail.com ([211.157.147.131]:54039 "EHLO lucky1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753350AbcBSCyh (ORCPT ); Thu, 18 Feb 2016 21:54:37 -0500 X-263anti-spam: KSV:0; X-MAIL-GRAY: 1 X-MAIL-DELIVERY: 0 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-RL-SENDER: shawn.lin@rock-chips.com X-FST-TO: jaegeuk@kernel.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: shawn.lin@rock-chips.com X-UNIQUE-TAG: <47acd62e9197f5cc066e581a74f71333> X-DNS-TYPE: 0 From: Shawn Lin To: Jaegeuk Kim , Changman Lee Cc: Chao Yu , linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, Shawn Lin Subject: [PATCH] f2fs: add new wraper function for reading inline data Date: Fri, 19 Feb 2016 10:50:10 +0800 Message-Id: <1455850210-31439-1-git-send-email-shawn.lin@rock-chips.com> X-Mailer: git-send-email 1.8.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch add __read_inline_data which will no check PageUptodate and page->index. This can be reused by f2fs_convert_inline_page to reduce the redundant code copied from read_inline_data. Signed-off-by: Shawn Lin --- fs/f2fs/inline.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index d27347e..39eeff1 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c @@ -42,15 +42,11 @@ bool f2fs_may_inline_dentry(struct inode *inode) return true; } -void read_inline_data(struct page *page, struct page *ipage) +static inline void __read_inline_data(struct page *page, + struct page *ipage) { void *src_addr, *dst_addr; - if (PageUptodate(page)) - return; - - f2fs_bug_on(F2FS_P_SB(page), page->index); - zero_user_segment(page, MAX_INLINE_DATA, PAGE_CACHE_SIZE); /* Copy the whole inline data block */ @@ -61,6 +57,15 @@ void read_inline_data(struct page *page, struct page *ipage) kunmap_atomic(dst_addr); SetPageUptodate(page); } +void read_inline_data(struct page *page, struct page *ipage) +{ + if (PageUptodate(page)) + return; + + f2fs_bug_on(F2FS_P_SB(page), page->index); + + __read_inline_data(page, ipage); +} bool truncate_inline_inode(struct page *ipage, u64 from) { @@ -128,15 +133,8 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page) if (PageUptodate(page)) goto no_update; - zero_user_segment(page, MAX_INLINE_DATA, PAGE_CACHE_SIZE); + __read_inline_data(page, dn->inode_page); - /* Copy the whole inline data block */ - src_addr = inline_data_addr(dn->inode_page); - dst_addr = kmap_atomic(page); - memcpy(dst_addr, src_addr, MAX_INLINE_DATA); - flush_dcache_page(page); - kunmap_atomic(dst_addr); - SetPageUptodate(page); no_update: set_page_dirty(page); -- 2.3.7