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
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

(cherry picked from commit ecdc04d006de93eb343ce3b77208abd937d4f8ac)

Details

Provenance
asomersAuthored on May 16 2022, 10:32 PM
Reviewer
mckusick
Differential Revision
D35131: makefs(8): Fix calculation of metadata segmets sizes
Parents
rG1f44d1861a01: fusefs: handle evil servers that return illegal inode numbers
Branches
Unknown
Tags
Unknown