summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2026-11-05 15:09:19 +0100
committerJan Kara <jack@suse.cz>2026-11-05 15:09:19 +0100
commita3b98efdb320e62ec0f89caaa67993a2d1c178be (patch)
tree99a0d6fc4d902b210fc145c25d641c1fb9a1ff59
parent94401199df90e1c2a50c6e4b73618ac5a4ba83ba (diff)
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>
-rw-r--r--fs/udf/balloc.c28
1 files changed, 10 insertions, 18 deletions
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);