From: Jaegeuk Kim <jaegeuk@kernel.org> To: Chao Yu <chao2.yu@samsung.com> Cc: Changman Lee <cm224.lee@samsung.com>, linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: Re: [f2fs-dev][RFC PATCH 03/10] f2fs: introduce f2fs_map_bh to clean codes of check_extent_cache Date: Thu, 22 Jan 2015 16:24:34 -0800 [thread overview] Message-ID: <20150123002434.GC16473@jaegeuk-mac02> (raw) In-Reply-To: <000701d02e37$0b11cfa0$21356ee0$@samsung.com> Hi Chao, On Mon, Jan 12, 2015 at 03:11:04PM +0800, Chao Yu wrote: > This patch introduces f2fs_map_bh to clean codes of check_extent_cache. > > Signed-off-by: Chao Yu <chao2.yu@samsung.com> > --- > fs/f2fs/data.c | 42 ++++++++++++++++++++++++++++-------------- > 1 file changed, 28 insertions(+), 14 deletions(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index 935a23b..5a3e489 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -248,8 +248,30 @@ int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index) > return err; > } > > +static void f2fs_map_bh(struct inode *inode, pgoff_t pgofs, > + struct extent_info *ei, struct buffer_head *bh_result) > +{ > + unsigned int blkbits = inode->i_sb->s_blocksize_bits; > + pgoff_t start_fofs, end_fofs; > + block_t start_blkaddr; > + size_t count; > + > + start_fofs = ei->fofs; > + end_fofs = ei->fofs + ei->len - 1; > + start_blkaddr = ei->blk; > + > + clear_buffer_new(bh_result); > + map_bh(bh_result, inode->i_sb, > + start_blkaddr + pgofs - start_fofs); > + count = end_fofs - pgofs + 1; How about cleaning this codes like this? static void f2fs_map_bh(struct super_block *sb, pgoff_t pgofs, struct extent_info *ei, struct buffer_head *bh_result) { unsigned int blkbits = sb->s_blocksize_bits; size_t count; clear_buffer_new(bh_result); map_bh(bh_result, sb, ei->blk + pgofs - ei->fofs); count = ei->fofs + ei->len - pgofs; if (count < (UINT_MAX >> blkbits)) bh_result->b_size = (count << blkbits); else bh_result->b_size = UINT_MAX; } > + if (count < (UINT_MAX >> blkbits)) > + bh_result->b_size = (count << blkbits); > + else > + bh_result->b_size = UINT_MAX; > +} > + > static int check_extent_cache(struct inode *inode, pgoff_t pgofs, > - struct buffer_head *bh_result) > + struct extent_info *ei) > { > struct f2fs_inode_info *fi = F2FS_I(inode); > pgoff_t start_fofs, end_fofs; > @@ -271,18 +293,7 @@ static int check_extent_cache(struct inode *inode, pgoff_t pgofs, > start_blkaddr = fi->ext.blk; > > if (pgofs >= start_fofs && pgofs <= end_fofs) { > - unsigned int blkbits = inode->i_sb->s_blocksize_bits; > - size_t count; > - > - clear_buffer_new(bh_result); > - map_bh(bh_result, inode->i_sb, > - start_blkaddr + pgofs - start_fofs); > - count = end_fofs - pgofs + 1; > - if (count < (UINT_MAX >> blkbits)) > - bh_result->b_size = (count << blkbits); > - else > - bh_result->b_size = UINT_MAX; > - > + *ei = fi->ext; > stat_inc_read_hit(inode->i_sb); > read_unlock(&fi->ext_lock); > return 1; > @@ -608,13 +619,16 @@ static int __get_data_block(struct inode *inode, sector_t iblock, > int mode = create ? ALLOC_NODE : LOOKUP_NODE_RA; > pgoff_t pgofs, end_offset; > int err = 0, ofs = 1; > + struct extent_info ei; > bool allocated = false; > > /* Get the page offset from the block offset(iblock) */ > pgofs = (pgoff_t)(iblock >> (PAGE_CACHE_SHIFT - blkbits)); > > - if (check_extent_cache(inode, pgofs, bh_result)) > + if (check_extent_cache(inode, pgofs, &ei)) { > + f2fs_map_bh(inode, pgofs, &ei, bh_result); > goto out; > + } > > if (create) { > f2fs_balance_fs(F2FS_I_SB(inode)); > -- > 2.2.1
WARNING: multiple messages have this Message-ID (diff)
From: Jaegeuk Kim <jaegeuk@kernel.org> To: Chao Yu <chao2.yu@samsung.com> Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Subject: Re: [RFC PATCH 03/10] f2fs: introduce f2fs_map_bh to clean codes of check_extent_cache Date: Thu, 22 Jan 2015 16:24:34 -0800 [thread overview] Message-ID: <20150123002434.GC16473@jaegeuk-mac02> (raw) In-Reply-To: <000701d02e37$0b11cfa0$21356ee0$@samsung.com> Hi Chao, On Mon, Jan 12, 2015 at 03:11:04PM +0800, Chao Yu wrote: > This patch introduces f2fs_map_bh to clean codes of check_extent_cache. > > Signed-off-by: Chao Yu <chao2.yu@samsung.com> > --- > fs/f2fs/data.c | 42 ++++++++++++++++++++++++++++-------------- > 1 file changed, 28 insertions(+), 14 deletions(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index 935a23b..5a3e489 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -248,8 +248,30 @@ int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index) > return err; > } > > +static void f2fs_map_bh(struct inode *inode, pgoff_t pgofs, > + struct extent_info *ei, struct buffer_head *bh_result) > +{ > + unsigned int blkbits = inode->i_sb->s_blocksize_bits; > + pgoff_t start_fofs, end_fofs; > + block_t start_blkaddr; > + size_t count; > + > + start_fofs = ei->fofs; > + end_fofs = ei->fofs + ei->len - 1; > + start_blkaddr = ei->blk; > + > + clear_buffer_new(bh_result); > + map_bh(bh_result, inode->i_sb, > + start_blkaddr + pgofs - start_fofs); > + count = end_fofs - pgofs + 1; How about cleaning this codes like this? static void f2fs_map_bh(struct super_block *sb, pgoff_t pgofs, struct extent_info *ei, struct buffer_head *bh_result) { unsigned int blkbits = sb->s_blocksize_bits; size_t count; clear_buffer_new(bh_result); map_bh(bh_result, sb, ei->blk + pgofs - ei->fofs); count = ei->fofs + ei->len - pgofs; if (count < (UINT_MAX >> blkbits)) bh_result->b_size = (count << blkbits); else bh_result->b_size = UINT_MAX; } > + if (count < (UINT_MAX >> blkbits)) > + bh_result->b_size = (count << blkbits); > + else > + bh_result->b_size = UINT_MAX; > +} > + > static int check_extent_cache(struct inode *inode, pgoff_t pgofs, > - struct buffer_head *bh_result) > + struct extent_info *ei) > { > struct f2fs_inode_info *fi = F2FS_I(inode); > pgoff_t start_fofs, end_fofs; > @@ -271,18 +293,7 @@ static int check_extent_cache(struct inode *inode, pgoff_t pgofs, > start_blkaddr = fi->ext.blk; > > if (pgofs >= start_fofs && pgofs <= end_fofs) { > - unsigned int blkbits = inode->i_sb->s_blocksize_bits; > - size_t count; > - > - clear_buffer_new(bh_result); > - map_bh(bh_result, inode->i_sb, > - start_blkaddr + pgofs - start_fofs); > - count = end_fofs - pgofs + 1; > - if (count < (UINT_MAX >> blkbits)) > - bh_result->b_size = (count << blkbits); > - else > - bh_result->b_size = UINT_MAX; > - > + *ei = fi->ext; > stat_inc_read_hit(inode->i_sb); > read_unlock(&fi->ext_lock); > return 1; > @@ -608,13 +619,16 @@ static int __get_data_block(struct inode *inode, sector_t iblock, > int mode = create ? ALLOC_NODE : LOOKUP_NODE_RA; > pgoff_t pgofs, end_offset; > int err = 0, ofs = 1; > + struct extent_info ei; > bool allocated = false; > > /* Get the page offset from the block offset(iblock) */ > pgofs = (pgoff_t)(iblock >> (PAGE_CACHE_SHIFT - blkbits)); > > - if (check_extent_cache(inode, pgofs, bh_result)) > + if (check_extent_cache(inode, pgofs, &ei)) { > + f2fs_map_bh(inode, pgofs, &ei, bh_result); > goto out; > + } > > if (create) { > f2fs_balance_fs(F2FS_I_SB(inode)); > -- > 2.2.1 ------------------------------------------------------------------------------ New Year. New Location. New Benefits. New Data Center in Ashburn, VA. GigeNET is offering a free month of service with a new server in Ashburn. Choose from 2 high performing configs, both with 100TB of bandwidth. Higher redundancy.Lower latency.Increased capacity.Completely compliant. http://p.sf.net/sfu/gigenet
next prev parent reply other threads:[~2015-01-23 0:24 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-01-12 7:11 [f2fs-dev][RFC PATCH 03/10] f2fs: introduce f2fs_map_bh to clean codes of check_extent_cache Chao Yu 2015-01-23 0:24 ` Jaegeuk Kim [this message] 2015-01-23 0:24 ` [RFC " Jaegeuk Kim 2015-01-23 1:52 ` [f2fs-dev][RFC " Chao Yu
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20150123002434.GC16473@jaegeuk-mac02 \ --to=jaegeuk@kernel.org \ --cc=chao2.yu@samsung.com \ --cc=cm224.lee@samsung.com \ --cc=linux-f2fs-devel@lists.sourceforge.net \ --cc=linux-kernel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.