[hatari-devel] GemDOS_DFree (was: EmuTOS 1.4 on Hatari 2.5.0) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- To: Hatari Development <hatari-devel@xxxxxxxxxxxxxxxxxxx>, "emutos-devel@xxxxxxxxxxxxxxxxxxxxx" <emutos-devel@xxxxxxxxxxxxxxxxxxxxx>
- Subject: [hatari-devel] GemDOS_DFree (was: EmuTOS 1.4 on Hatari 2.5.0)
- From: Christian Zietz <czietz@xxxxxxx>
- Date: Mon, 9 Jun 2025 14:29:03 +0200
- Autocrypt: addr=czietz@xxxxxxx; keydata= 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
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1749472144; x=1750076944; i=czietz@xxxxxxx; bh=a3foTyC+rOXtOvwvd8MDc2HbemTbHX7zk0J7LulB/eM=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: References:From:In-Reply-To:Content-Type: Content-Transfer-Encoding:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=XsL4KkSx9o6BwHNlLvH+AyAf/UZ7CiMCJ8wRFD0aw+7hCRBEGenVd++qjr6p36CD g5H0oaNiNG1i1FhEivzgZZ7iYxZzEitP1h5Mojwg5c1VeLYp0e8aT6bvi9VnCXQ5e Sy+LAvOQRuedi7ZzwdbJZA/HuxV3KcVlwvqtkIvwDZJxbJDXPYubcYS2/H0QvzAJV tmsjD4TdENXxMahhFtfdoA5sllcSjSGQGY5WLueSJmyj8dehGGHVx39FLt5pDVv0k JtW+HdPrMyhFvQgm8sX1jz9OJiN0b8HirJcUS9KfDeh8//eNBI0tBBVV14JJ9ZuKW pAg39V0OqKAGsr4/wQ==
- Ui-outboundreport: notjunk:1;M01:P0:tcAPT9q7VOM=;s7N1Lnad3/gw3hSscHezyQfnpBK +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
NOTE: I'm moving this discussion over to the Hatari mailing list, as it
is not an EmuTOS issue. See emutos-devel how it started:
https://sourceforge.net/p/emutos/mailman/emutos-devel/thread/bf8eb83e-f392-42ea-812a-0188e24ab0d2%40helsinkinet.fi/#msg59192999.
Thorsten Otto via Emutos-devel schrieb:
But could still be a problem there. The code uses local int variables,
Yes, see the email I sent a few hours before yours:
https://sourceforge.net/p/emutos/mailman/emutos-devel/thread/45460795-128b-408c-9c7e-230ed8a458ba%40gmx.net/#msg59193010
which may overflow (most likely on modern systems, the members in
statvfs are int64_t)
I made a little test program and ran it on GitHub (where one has access
to macOS):
struct statvfs x;
int rv;
printf("sizeof(struct statvfs) = %ld\n", (long)sizeof(struct statvfs));
printf("sizeof(f_bfree) = %ld\n", (long)sizeof(x.f_bfree));
printf("sizeof(f_bavail) = %ld\n", (long)sizeof(x.f_bavail));
rv = statvfs("/", &x);
printf("statfs() = %d\n", rv);
printf("f_blocks = %ld\n", (long)x.f_blocks);
printf("f_frsize = %ld\n", (long)x.f_frsize);
printf("f_bfree = %ld\n", (long)x.f_bfree);
printf("f_bavail = %ld\n", (long)x.f_bavail);
printf("f_bsize = %ld\n", (long)x.f_bsize);
The results on macOS are ... interesting:
sizeof(struct statvfs) = 64
sizeof(f_bfree) = 4
sizeof(f_bavail) = 4
statfs() = 0
f_blocks = 83758080
f_frsize = 4096
f_bfree = 11770043
f_bavail = 11770043
f_bsize = 4161536
First the members are just 4 bytes (32 bits) long! Then, the total file
system size is specified by POSIX to be "f_blocks*f_frsize". But it is
not clearly specified, whether the free blocks are given in units of
"f_frsize" or "f_bsize". Hatari uses different units for total and free
space: "Total = buf.f_blocks/1024 * buf.f_frsize" and "Free = Free/1024
* buf.f_bsize". But with the values above, this calculation gives more
free space than total space on macOS!
If we look into how Apple fills these fields:
https://github.com/apple-oss-distributions/Libc/blob/63976b830a836a22649b806fe62e8614fe3e5555/emulated/statvfs.c#L35
.... "f_bsize" corresponds to "f_iosize", which is the "optimal transfer
block size". Thus, I'm not sure if it correct to use "f_bsize" here.
Very confusing. I guess the original post will just have to accept that
the values on macOS are rubbish.
In any case, this does not seem to be a regression within Hatari.
Regards
Christian
--
Christian Zietz - CHZ-Soft - czietz@xxxxxxx
WWW: https://www.chzsoft.de/
New GnuPG-Key-ID: 0x8708B34C827B159E