diff options
| author | Jan Kara <jack@suse.cz> | 2026-11-05 15:09:19 +0100 |
|---|---|---|
| committer | Jan Kara <jack@suse.cz> | 2026-11-05 15:09:19 +0100 |
| commit | a3b98efdb320e62ec0f89caaa67993a2d1c178be (patch) | |
| tree | 99a0d6fc4d902b210fc145c25d641c1fb9a1ff59 | |
| parent | 94401199df90e1c2a50c6e4b73618ac5a4ba83ba (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.c | 28 |
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); |
