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
copybara-service bot
pushed a commit
that referenced
this pull request
Apr 8, 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
copybara-service bot
pushed a commit
that referenced
this pull request
Apr 8, 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
copybara-service bot
pushed a commit
that referenced
this pull request
Apr 8, 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
TheBlindArchitect
pushed a commit
to XSLabs/fuchsia
that referenced
this pull request
Apr 12, 2026
This should pass the new gvisor tests added in google/gvisor#12853 Looks like this also passed a LTP test! Fixed: 399386298 Change-Id: I0090c1c117dced996d8f95a0348a468db6a32502 Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1564583 Fuchsia-Auto-Submit: David Song <wintermelons@google.com> Commit-Queue: David Song <wintermelons@google.com> Reviewed-by: Aaron Knobloch <aknobloch@google.com>
TheBlindArchitect
pushed a commit
to XSLabs/integration
that referenced
this pull request
Apr 12, 2026
…y default This should pass the new gvisor tests added in google/gvisor#12853 Looks like this also passed a LTP test! Original-Fixed: 399386298 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1564583 Original-Revision: 20a5d01c26d39b7fba7000a9991f2e1f45386296 GitOrigin-RevId: 7b7517fa1671ecdbdf44d5fab0a3794280bab007 Change-Id: I28cef5d87f4d691f9b06e1f38ab20904c1d3d814
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.