Messages in this thread | | | Date | Thu, 11 Oct 2012 20:11:39 +0200 | From | Jan Kara <> | Subject | Re: [PATCH 2/6] udf: don't increment lenExtents while writing to a hole |
| |
On Wed 10-10-12 00:09:12, Namjae Jeon wrote: > From: Namjae Jeon <namjae.jeon@samsung.com> > > Incrementing lenExtents even while writing to a hole is bad > for performance as calls to udf_discard_prealloc and > udf_truncate_tail_extent would not return from start if > isize != lenExtents > > Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> > Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com> Thanks. I've merged the patch.
Honza > --- > fs/udf/inode.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/fs/udf/inode.c b/fs/udf/inode.c > index 2b77593..8266f2e 100644 > --- a/fs/udf/inode.c > +++ b/fs/udf/inode.c > @@ -601,6 +601,7 @@ static sector_t inode_getblk(struct inode *inode, sector_t block, > struct udf_inode_info *iinfo = UDF_I(inode); > int goal = 0, pgoal = iinfo->i_location.logicalBlockNum; > int lastblock = 0; > + bool isBeyondEOF; > > *err = 0; > *new = 0; > @@ -680,7 +681,7 @@ static sector_t inode_getblk(struct inode *inode, sector_t block, > /* Are we beyond EOF? */ > if (etype == -1) { > int ret; > - > + isBeyondEOF = 1; > if (count) { > if (c) > laarr[0] = laarr[1]; > @@ -723,6 +724,7 @@ static sector_t inode_getblk(struct inode *inode, sector_t block, > endnum = c + 1; > lastblock = 1; > } else { > + isBeyondEOF = 0; > endnum = startnum = ((count > 2) ? 2 : count); > > /* if the current extent is in position 0, > @@ -770,7 +772,8 @@ static sector_t inode_getblk(struct inode *inode, sector_t block, > *err = -ENOSPC; > return 0; > } > - iinfo->i_lenExtents += inode->i_sb->s_blocksize; > + if (isBeyondEOF) > + iinfo->i_lenExtents += inode->i_sb->s_blocksize; > } > > /* if the extent the requsted block is located in contains multiple > -- > 1.7.9.5 > -- Jan Kara <jack@suse.cz> SUSE Labs, CR
| |