Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb719c59 authored by Namjae Jeon's avatar Namjae Jeon Committed by Jan Kara
Browse files

udf: don't increment lenExtents while writing to a hole



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: default avatarNamjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: default avatarAshish Sangwan <a.sangwan@samsung.com>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 2fb7d99d
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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,6 +772,7 @@ static sector_t inode_getblk(struct inode *inode, sector_t block,
			*err = -ENOSPC;
			return 0;
		}
		if (isBeyondEOF)
			iinfo->i_lenExtents += inode->i_sb->s_blocksize;
	}