mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2026-04-25 13:26:00 +03:00
[GH-ISSUE #1519] Consider changing failed chown/chmod return codes from -EIO to -EFBIG #798
Labels
No labels
bug
bug
dataloss
duplicate
enhancement
feature request
help wanted
invalid
need info
performance
pull-request
question
question
testing
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/s3fs-fuse#798
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @CarstenGrohmann on GitHub (Jan 15, 2021).
Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/1519
I run rsync to copy a 10GB file from local storage to a S3 bucket using
-o nomultipart. rsync failed with "Input/output error (5)":I spend some time to trace this issue down. It's triggered by
put_headers()because the file is to big for a non-multipart attribute change according the AWS S3 standard:github.com/s3fs-fuse/s3fs-fuse@a6563211af/src/s3fs.cpp (L726-L730)put_headers()returns-EFBIGtos3fs_chown()ands3fs_chown()changes the result to-EIO:github.com/s3fs-fuse/s3fs-fuse@a6563211af/src/s3fs.cpp (L1810-L1811)Is it possible to adapt the source code to do not change from EFBIG to EIO in such cases?
Additional Information
Version of s3fs being used (s3fs --version)
release 1.88
Version of fuse being used (pkg-config --modversion fuse, rpm -qi fuse, dpkg -s fuse)
2.9.2
Kernel information (uname -r)
command result: 3.10.0-957.10.1.el7.x86_64
GNU/Linux Distribution, if applicable (cat /etc/os-release)
Red Hat Enterprise Linux Server 7.6 (Maipo)
s3fs command line used, if applicable
s3fs debug logs:
@gaul commented on GitHub (Jan 16, 2021):
This seems reasonable, however there is some sloppiness in how error codes are handled. For example,
put_headersshould return a negative errno, but it also returns the direct result ofMultipartHeadRequest, which returns -1 instead ofEIOor similar. We need to audit the call sites to prevent unintentionally returning -1 asEPERM.