Commit a3b98efdb320 for kernel
commit a3b98efdb320e62ec0f89caaa67993a2d1c178be
Author: Jan Kara <jack@suse.cz>
Date: Thu Nov 5 15:09:19 2026 +0100
udf: Simplify udf_table_prealloc_blocks()
Simplify handling when the specified extent is not found in the table
of free blocks.
Signed-off-by: Jan Kara <jack@suse.cz>
diff --git a/fs/udf/balloc.c b/fs/udf/balloc.c
index 75124188e745..b6551cc7c6cf 100644
--- a/fs/udf/balloc.c
+++ b/fs/udf/balloc.c
@@ -525,30 +525,22 @@ static int udf_table_prealloc_blocks(struct super_block *sb,
while (first_block != eloc.logicalBlockNum) {
ret = udf_next_aext(table, &epos, &eloc, &elen, &etype, 1);
- if (ret < 0)
+ if (ret <= 0)
goto err_out;
- if (ret == 0)
- break;
udf_debug("eloc=%u, elen=%u, first_block=%u\n",
eloc.logicalBlockNum, elen, first_block);
}
- if (ret > 0 && first_block == eloc.logicalBlockNum) {
- epos.offset -= adsize;
-
- alloc_count = (elen >> sb->s_blocksize_bits);
- if (alloc_count > block_count) {
- alloc_count = block_count;
- eloc.logicalBlockNum += alloc_count;
- elen -= (alloc_count << sb->s_blocksize_bits);
- udf_write_aext(table, &epos, &eloc,
- (etype << 30) | elen, 1);
- } else
- udf_delete_aext(table, epos, &freed);
- } else {
- alloc_count = 0;
- }
+ epos.offset -= adsize;
+ alloc_count = (elen >> sb->s_blocksize_bits);
+ if (alloc_count > block_count) {
+ alloc_count = block_count;
+ eloc.logicalBlockNum += alloc_count;
+ elen -= (alloc_count << sb->s_blocksize_bits);
+ udf_write_aext(table, &epos, &eloc, (etype << 30) | elen, 1);
+ } else
+ udf_delete_aext(table, epos, &freed);
err_out:
brelse(epos.bh);