Skip to content

Fix directfs restore for deleted regular file when read handle is not available #11919

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

copybara-service[bot]
Copy link

@copybara-service copybara-service bot commented Jul 12, 2025

Fix directfs restore for deleted regular file when read handle is not available

In such a situation, we can not rely on traditional methods (like openHandle())
to open a readable handle. This is because, for directfs to open a handle, it
needs to re-walk the file via the parent using openat(parentFD, name). This
does not work for deleted files, it will fail with ENOENT. runsc gofer works
around this by using /proc/self/fd/ to re-open the control FD in the desired
mode. However, the sentry does not have access to any procfs instance (for
security). See fcbc289 ("runsc: umount /proc in the sandbox namespace").

This change makes directfs just use the control FD to fetch file data. The
control FD should not be used for IO. We make an exception here for S/R.

Fixes #11903

… available

In such a situation, we can not rely on traditional methods (like openHandle())
to open a readable handle. This is because, for directfs to open a handle, it
needs to re-walk the file via the parent using openat(parentFD, name). This
does not work for deleted files, it will fail with ENOENT. runsc gofer works
around this by using /proc/self/fd/ to re-open the control FD in the desired
mode. However, the sentry does not have access to any procfs instance (for
security). See fcbc289 ("runsc: umount /proc in the sandbox namespace").

This change makes directfs just use the control FD to fetch file data. The
control FD should not be used for IO. We make an exception here for S/R.

Fixes #11903

PiperOrigin-RevId: 782379453
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
exported Issue was exported automatically
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Checkpoint failed with directfs: "failed to open read handle for deleted file"
1 participant