Open dan-hipschman opened 3 years ago
@djs55 PTAL
Issues go stale after 90 days of inactivity.
Mark the issue as fresh with /remove-lifecycle stale
comment.
Stale issues will be closed after an additional 30 days of inactivity.
Prevent issues from auto-closing with an /lifecycle frozen
comment.
If this issue is safe to close now please do so.
Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows. /lifecycle stale
/remove-lifecycle stale
/lifecycle frozen
Can you still reproduce this issue? Downstream at Zig, we can not, but maybe we missed something on testing.
Hi,
I have a FAT32 filesystem that I'm bind mounting. Note that FAT32 does not support hard links.
I'm running a program in Docker that tries to make a hard link on this filesystem. It's expecting
errno
to be set toENOTSUP
(which it handles gracefully), but when using thegRPC-FUSE
filesystemerrno
is set toEIO
(which causes the program to exit). This makes sense because typicallyEIO
is used for hardware problems, so the program thinks there's a problem with the hardware and gives up. It handlesENOTSUP
gracefully because that's used for unsupported operations, so the program falls back to supported operations (such as making a copy).As further evidence that the correct errno should be
ENOTSUP
, that is also what is set when trying to do a hard link both natively and withosxfs
:Trying to make a hardlink on Mac:
Trying to make a hardlink in container using
osxfs
:(Apparently
ENOTSUP
is 45 on Mac and 95 on Linux.)Trying to make a hardlink in container using
gRPC-FUSE
:Expected behavior
Hard linking on a bind mounted FAT filesystem results in errno being set to
ENOTSUP
.Actual behavior
errno is set to
EIO
.Information
I tested this on both stable and edge.
Stable version:
Edge version:
Steps to reproduce the behavior
docker run -it --mount type=bind,src=/Volumes/DRIVE_NAME,dst=/fat python bash
python -c 'import os; os.link("/fat/some_file", "/fat/foo")'