[PATCH] fs: udf: avoid assignment in condition when selecting allocation goal

Adarsh Das posted 1 patch 23 hours ago
fs/udf/inode.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
[PATCH] fs: udf: avoid assignment in condition when selecting allocation goal
Posted by Adarsh Das 23 hours ago
Avoid assignment inside an if condition when choosing the block
allocation goal in inode_getblk(), and make the priority order
explicit. No functional change.

Signed-off-by: Adarsh Das <adarshdas950@gmail.com>
---
 fs/udf/inode.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index 7fae8002344a..4a4cb42319af 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -734,7 +734,7 @@ static int inode_getblk(struct inode *inode, struct udf_map_rq *map)
 	sector_t offset = 0;
 	int8_t etype, tmpetype;
 	struct udf_inode_info *iinfo = UDF_I(inode);
-	udf_pblk_t goal = 0, pgoal = iinfo->i_location.logicalBlockNum;
+	udf_pblk_t goal = 0, pgoal = 0;
 	int lastblock = 0;
 	bool isBeyondEOF = false;
 	int ret = 0;
@@ -893,11 +893,10 @@ static int inode_getblk(struct inode *inode, struct udf_map_rq *map)
 	else { /* otherwise, allocate a new block */
 		if (iinfo->i_next_alloc_block == map->lblk)
 			goal = iinfo->i_next_alloc_goal;
-
-		if (!goal) {
-			if (!(goal = pgoal)) /* XXX: what was intended here? */
-				goal = iinfo->i_location.logicalBlockNum + 1;
-		}
+		else if (pgoal)
+			goal = pgoal;
+		else
+			goal = iinfo->i_location.logicalBlockNum + 1;
 
 		newblocknum = udf_new_block(inode->i_sb, inode,
 				iinfo->i_location.partitionReferenceNum,
-- 
2.53.0
Re: [PATCH] fs: udf: avoid assignment in condition when selecting allocation goal
Posted by Jan Kara 20 hours ago
On Fri 06-02-26 18:26:38, Adarsh Das wrote:
> Avoid assignment inside an if condition when choosing the block
> allocation goal in inode_getblk(), and make the priority order
> explicit. No functional change.
> 
> Signed-off-by: Adarsh Das <adarshdas950@gmail.com>
> ---
>  fs/udf/inode.c | 11 +++++------
>  1 file changed, 5 insertions(+), 6 deletions(-)

Thanks for the cleanup. I agree it is desirable. But:

> @@ -893,11 +893,10 @@ static int inode_getblk(struct inode *inode, struct udf_map_rq *map)
>  	else { /* otherwise, allocate a new block */
>  		if (iinfo->i_next_alloc_block == map->lblk)
>  			goal = iinfo->i_next_alloc_goal;
> -
> -		if (!goal) {
> -			if (!(goal = pgoal)) /* XXX: what was intended here? */
> -				goal = iinfo->i_location.logicalBlockNum + 1;
> -		}
> +		else if (pgoal)

I don't think the 'else' here is correct. When map->lblk is zero, it can
happen that i_next_alloc_goal will be 0 as well. Previously we've used
iinfo->i_location.logicalBlockNum + 1 for such cases but now we would leave
0 in 'goal'. Anyway, I'll fix this up on commit so this is just
informational.

								Honza

> +			goal = pgoal;
> +		else
> +			goal = iinfo->i_location.logicalBlockNum + 1;
>  
>  		newblocknum = udf_new_block(inode->i_sb, inode,
>  				iinfo->i_location.partitionReferenceNum,
> -- 
> 2.53.0
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR