Skip to content

[nodefs] Return real values for statvfs via __syscall_statfs64 #22631 #22932

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Nov 27, 2024

Conversation

bgrgicak
Copy link
Contributor

This PR was originally implemented by @jeroenpf in #22631.
I'm adding a fix for a broken test and had to do it in a new branch because I can't push to the original branch.

See #22607

statfs syscall functions are returning hardcoded default values which can in some cases lead to unexpected results.

This PR introduces a way for __syscall_statfs64 to return real values if the underlying filesystem supports this. For now, I've only implemented this for the NODEFS filesystem but we can expand this to other filesystems when it makes sense.

Additionally, in the previous defaults, ffree could be larger than files which is incorrect, this has also been addressed.

Ive added a test test/fs/test_nodefs_statfs.c which can be executed by running:
test/runner test_fs_nodefs_statfs

As I am a new contributor I'm happy to get feedback and make improvements where needed.

@bgrgicak
Copy link
Contributor Author

I tested the failing test locally by running ./test/runner browser.test_offset_converte and it passed.
@sbc100 Am I running the correct test locally? If yes could this be a flaky test that just requires a rerun?

@sbc100
Copy link
Collaborator

sbc100 commented Nov 15, 2024

I tested the failing test locally by running ./test/runner browser.test_offset_converte and it passed. @sbc100 Am I running the correct test locally? If yes could this be a flaky test that just requires a rerun?

Yup that test is just flaky, sadly.

{{{ makeSetValue('buf', C_STRUCTS.statfs.f_fsid, '42', 'i32') }}};
{{{ makeSetValue('buf', C_STRUCTS.statfs.f_flags, '2', 'i32') }}}; // ST_NOSUID
{{{ makeSetValue('buf', C_STRUCTS.statfs.f_namelen, '255', 'i32') }}};
var defaults = FS.statfs(SYSCALLS.getStr(path));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you rename this? Perhaps stats instead of `defaults? (Since they might be real values now).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stats sound better. I made the change in cf570be.

Copy link
Collaborator

@sbc100 sbc100 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm with one final nit.

@kripken
Copy link
Member

kripken commented Nov 22, 2024

Is this ready to land?

@sbc100
Copy link
Collaborator

sbc100 commented Nov 22, 2024

@jeroenpf are you OK with this PR landing instead of #22631?

brandonpayton added a commit to WordPress/wordpress-playground that referenced this pull request Mar 7, 2025
Note: This work is continued from a PR started under the WordPress GH
org.

There are a couple of reasons for this upgrade:

1. I am having trouble rebuilding php-wasm on my current system.
References to older ubuntu images and emscripten versions [has given me
trouble](#2038 (comment)).
2. We want [this Emscripten
fix](emscripten-core/emscripten#22932) from
@jeroenpf and @bgrgicak which was first included in Emscripten 3.1.73.

This PR:
- Bumps the ubuntu docker image version due to build errors related to
missing image. Referencing a newer ubuntu image seemed to fix the
"missing image" errors.
- Bumps Emscripten version
- Adjusts Playground-specific patches to Emscripten output since the
latest breaks that patching.

- CI (once we can run GH actions on A8C's GHE instance)

---------

Co-authored-by: Brandon Payton <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants