repart: Stat temporary file again after mkfs

This makes sure we use the actual size after mkfs which seems to be
important for btrfs as it refuses to mount the partition otherwise.

Follow-up for 2843df3e57
This commit is contained in:
Daan De Meyer 2023-08-05 19:31:09 +02:00 committed by Luca Boccassi
parent cc1e1bb03e
commit 6ac299e3ce

View file

@ -5844,6 +5844,7 @@ static int context_minimize(Context *context) {
_cleanup_close_ int fd = -EBADF;
_cleanup_free_ char *hint = NULL;
sd_id128_t fs_uuid;
struct stat st;
uint64_t fsz;
if (p->dropped)
@ -5932,8 +5933,6 @@ static int context_minimize(Context *context) {
/* Read-only filesystems are minimal from the first try because they create and size the
* loopback file for us. */
if (fstype_is_ro(p->format)) {
struct stat st;
assert(fd < 0);
fd = open(temp, O_RDONLY|O_CLOEXEC|O_NONBLOCK);
@ -6012,12 +6011,13 @@ static int context_minimize(Context *context) {
return r;
}
assert(fd >= 0);
if (fstat(fd, &st) < 0)
return log_error_errno(errno, "Failed to stat temporary file: %m");
p->copy_blocks_path = TAKE_PTR(temp);
p->copy_blocks_path_is_our_file = true;
p->copy_blocks_fd = TAKE_FD(fd);
p->copy_blocks_size = fsz;
p->copy_blocks_size = st.st_size;
}
/* Now that we've done the data partitions, do the verity hash partitions. We do these in a separate