HomeFreeBSD

makefs: fix calculation of file sizes

Description

makefs: fix calculation of file sizes

When a new FS image is created we need to calculate how much space each
file is going to consume.
Fix two bugs in that logic:

  1. Count the space needed for indirect blocks for large files.
  2. Normally the trailing data of a file is written to a block of frag size, 4 kB by default.

However for files that use indirect blocks a full block is allocated,
32kB by default. Take that into account.

Adjust size calculations to match what is done in ffs_mkfs routine:

  • Depending on the UFS version the superblock is stored at a different offset. Take that into account.
  • Add the cylinder group block size.
  • All of the above has to be aligned to the block size.

Finally, Remove "ncg" variable. It's always 1 and it was used to
multiply stuff.

PR: 229929
Reviewed by: mckusick
MFC after: 2 weeks
Sponsored by: Semihalf
Submitted by: Kornel Dulęba <mindal@semihalf.com>
Differential Revision: https://reviews.freebsd.org/D35131
Differential Revision: https://reviews.freebsd.org/D35132

Details

Provenance
asomersAuthored on May 16 2022, 10:32 PM
Reviewer
mckusick
Differential Revision
D35131: makefs(8): Fix calculation of metadata segmets sizes
Parents
rGc1e0431c2202: riscv: also enable includes, stats and stats_client in libclang_rt
Branches
Unknown
Tags
Unknown