vfs: return EOPNOTSUPP for FICLONE/FICLONERANGE/FIDEDUPERANGE#12853
Merged
copybara-service[bot] merged 1 commit intogoogle:masterfrom Apr 3, 2026
Merged
vfs: return EOPNOTSUPP for FICLONE/FICLONERANGE/FIDEDUPERANGE#12853copybara-service[bot] merged 1 commit intogoogle:masterfrom
copybara-service[bot] merged 1 commit intogoogle:masterfrom
Conversation
Linux returns EOPNOTSUPP when a filesystem does not support reflink. gVisor returned ENOTTY, breaking programs like syncthing that rely on EOPNOTSUPP to gracefully fall back to regular copy. Handle these ioctls in FileDescriptionDefaultImpl.Ioctl() so all filesystems without custom Ioctl get the correct errno automatically. Signed-off-by: Tan Yifeng <yiftan@tencent.com>
1bbc082 to
7435a6c
Compare
EtiennePerot
approved these changes
Apr 2, 2026
copybara-service bot
pushed a commit
that referenced
this pull request
Apr 2, 2026
Linux returns EOPNOTSUPP when a filesystem does not support reflink. gVisor returned ENOTTY, breaking programs like syncthing that rely on EOPNOTSUPP to gracefully fall back to regular copy. Handle these ioctls in FileDescriptionDefaultImpl.Ioctl() so all filesystems without custom Ioctl get the correct errno automatically. FUTURE_COPYBARA_INTEGRATE_REVIEW=#12853 from tanyifeng:vfs-ficlone-eopnotsupp 7435a6c PiperOrigin-RevId: 893757418
copybara-service bot
pushed a commit
that referenced
this pull request
Apr 2, 2026
Linux returns EOPNOTSUPP when a filesystem does not support reflink. gVisor returned ENOTTY, breaking programs like syncthing that rely on EOPNOTSUPP to gracefully fall back to regular copy. Handle these ioctls in FileDescriptionDefaultImpl.Ioctl() so all filesystems without custom Ioctl get the correct errno automatically. FUTURE_COPYBARA_INTEGRATE_REVIEW=#12853 from tanyifeng:vfs-ficlone-eopnotsupp 7435a6c PiperOrigin-RevId: 893757418
ayushr2
reviewed
Apr 2, 2026
| INSTANTIATE_TEST_SUITE_P(IoctlTest, IoctlTestSIOCGIFCONF, | ||
| ::testing::ValuesIn(IoctlSocketTypes())); | ||
|
|
||
| // FICLONE/FICLONERANGE/FIDEDUPERANGE should return EOPNOTSUPP on |
Collaborator
There was a problem hiding this comment.
These tests will fail when run on Linux. IMO syscall test is not required for this change. We primarliy use them to compare gVisor <-> Linux compatibility.
Contributor
Author
There was a problem hiding this comment.
You're right — I realized that on filesystems that support reflink, these ioctls would succeed instead of returning EOPNOTSUPP, so the tests could indeed fail on native Linux depending on the filesystem. I've send a follow-up pr #12863 to remove these test cases. Thanks for catching this!
tanyifeng
added a commit
to tanyifeng/gvisor
that referenced
this pull request
Apr 3, 2026
Remove the EOPNOTSUPP test cases for FICLONE, FICLONERANGE, and FIDEDUPERANGE ioctls added in google#12853 These tests assume the ioctls always fail with EOPNOTSUPP, which is only true on filesystems that do not support reflink, causing the tests to fail on native Linux. Signed-off-by: Tan Yifeng <yiftan@tencent.com>
copybara-service bot
pushed a commit
that referenced
this pull request
Apr 3, 2026
Remove the EOPNOTSUPP test cases for FICLONE, FICLONERANGE, and FIDEDUPERANGE ioctls added in #12853 These tests assume the ioctls always fail with EOPNOTSUPP, which is only true on filesystems that do not support reflink, causing the tests to fail on native Linux. FUTURE_COPYBARA_INTEGRATE_REVIEW=#12863 from tanyifeng:remove-ficlone-tests e1e815c PiperOrigin-RevId: 893842986
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Linux returns EOPNOTSUPP when a filesystem does not support reflink. gVisor returned ENOTTY, breaking programs like syncthing that rely on EOPNOTSUPP to gracefully fall back to regular copy.
Handle these ioctls in FileDescriptionDefaultImpl.Ioctl() so all filesystems without custom Ioctl get the correct errno automatically.