[GH-ISSUE #1695] Issues with renaming file over top of existing file. #878

Closed
opened 2026-03-04 01:49:37 +03:00 by kerem · 3 comments
Owner

Originally created by @dukey on GitHub (Jun 21, 2021).
Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/1695

Additional Information

The following information is very important in order to help us to help you. Omission of the following details may delay your support request or receive no attention at all.
Keep in mind that the commands we provide to retrieve information are oriented to GNU/Linux Distributions, so you could need to use others if you use s3fs on macOS or BSD

Version of s3fs being used (s3fs --version)

example: 1.00
V1.89

Version of fuse being used (pkg-config --modversion fuse, rpm -qi fuse, dpkg -s fuse)

example: 2.9.4
2.9.2

Kernel information (uname -r)

command result: uname -r
3.10.0-1160.25.1.el7.x86_64

GNU/Linux Distribution, if applicable (cat /etc/os-release)

command result: cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

s3fs command line used, if applicable

/etc/fstab entry, if applicable

s3fs syslog messages (grep s3fs /var/log/syslog, journalctl | grep s3fs, or s3fs outputs)

if you execute s3fs with dbglevel, curldbg option, you can get detail debug messages

s3fs[20635]: curl.cpp:RequestPerform(2346): HTTP response code 400, returning EIO. Body Text: <Error><Code>InvalidArgument</Code><Message>Range specified is not valid for source object of size: 29804360</Message><ArgumentName>x-amz-copy-source-range</ArgumentName><ArgumentValue>bytes=0-29804360</ArgumentValue><RequestId>K0W8R2ZYAGHFE19Q</RequestId><HostId>jFax1Jm6pQLvAMGCzhIZ+6txQFOBndeQFFpUJL5smJkOyYOWcW78Dh9MSfp7Sv8GV0qPg1izCMc=</HostId></Error>
s3fs[20635]: curl_multi.cpp:MultiPerform(172): thread terminated with non-zero return code: -5
s3fs[20635]: curl_multi.cpp:MultiRead(205): failed a request(400: https://{bucket}{path}/{filename.ext}?partNumber=1&uploadId=yNvwizoaiz4Zi9OO3sOqbjH0uwTP.WXVNB68NyVGW5HP17dvsJgb.BodMrTP3byiKE6g0D0RkkkVYT_orqdcu43PX4qZxy6_Qc7RH2cFzflESZ5gfqpExDFLhURhNhMDl3Bwl_pNt5i_zIkn9uIR8g--)


Details about issue

I/O errors when renaming a {filename.ext}tmp over top of an existing {filename.ext} file. This only occurs with some files. Files in question are in EXR format, but can not be shared.

Originally created by @dukey on GitHub (Jun 21, 2021). Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/1695 ### Additional Information _The following information is very important in order to help us to help you. Omission of the following details may delay your support request or receive no attention at all._ _Keep in mind that the commands we provide to retrieve information are oriented to GNU/Linux Distributions, so you could need to use others if you use s3fs on macOS or BSD_ #### Version of s3fs being used (s3fs --version) _example: 1.00_ V1.89 #### Version of fuse being used (pkg-config --modversion fuse, rpm -qi fuse, dpkg -s fuse) _example: 2.9.4_ 2.9.2 #### Kernel information (uname -r) _command result: uname -r_ 3.10.0-1160.25.1.el7.x86_64 #### GNU/Linux Distribution, if applicable (cat /etc/os-release) _command result: cat /etc/os-release_ NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" #### s3fs command line used, if applicable ``` ``` #### /etc/fstab entry, if applicable ``` ``` #### s3fs syslog messages (grep s3fs /var/log/syslog, journalctl | grep s3fs, or s3fs outputs) _if you execute s3fs with dbglevel, curldbg option, you can get detail debug messages_ ``` s3fs[20635]: curl.cpp:RequestPerform(2346): HTTP response code 400, returning EIO. Body Text: <Error><Code>InvalidArgument</Code><Message>Range specified is not valid for source object of size: 29804360</Message><ArgumentName>x-amz-copy-source-range</ArgumentName><ArgumentValue>bytes=0-29804360</ArgumentValue><RequestId>K0W8R2ZYAGHFE19Q</RequestId><HostId>jFax1Jm6pQLvAMGCzhIZ+6txQFOBndeQFFpUJL5smJkOyYOWcW78Dh9MSfp7Sv8GV0qPg1izCMc=</HostId></Error> s3fs[20635]: curl_multi.cpp:MultiPerform(172): thread terminated with non-zero return code: -5 s3fs[20635]: curl_multi.cpp:MultiRead(205): failed a request(400: https://{bucket}{path}/{filename.ext}?partNumber=1&uploadId=yNvwizoaiz4Zi9OO3sOqbjH0uwTP.WXVNB68NyVGW5HP17dvsJgb.BodMrTP3byiKE6g0D0RkkkVYT_orqdcu43PX4qZxy6_Qc7RH2cFzflESZ5gfqpExDFLhURhNhMDl3Bwl_pNt5i_zIkn9uIR8g--) ``` ### Details about issue I/O errors when renaming a {filename.ext}tmp over top of an existing {filename.ext} file. This only occurs with some files. Files in question are in EXR format, but can not be shared.
kerem closed this issue 2026-03-04 01:49:37 +03:00
Author
Owner

@gaul commented on GitHub (Jun 21, 2021):

Is the object smaller than the error message size?

<Message>Range specified is not valid for source object of size: 29804360</Message>

Do you use AWS or another S3 implementation?

<!-- gh-comment-id:865420762 --> @gaul commented on GitHub (Jun 21, 2021): Is the object smaller than the error message size? ``` <Message>Range specified is not valid for source object of size: 29804360</Message> ``` Do you use AWS or another S3 implementation?
Author
Owner

@dukey commented on GitHub (Jun 22, 2021):

This is using AWS S3.

The S3 object sizes for the two files match the file sizes as reported by ls.

The object size in the error (29804360) matches the source file in the move. The destination file is 1 byte larger (in this case)

I can re-create the problem by doing the following:

create test.dat size=29804361 bytes
create test.dat.tmp size=29804360 bytes
mv test.dat.tmp ftest.dat

output:
mv: cannot move ‘test.dat.tmp’ to ‘test.dat’: Input/output error

<!-- gh-comment-id:865466522 --> @dukey commented on GitHub (Jun 22, 2021): This is using AWS S3. The S3 object sizes for the two files match the file sizes as reported by ls. The object size in the error (29804360) matches the source file in the move. The destination file is 1 byte larger (in this case) I can re-create the problem by doing the following: create test.dat size=29804361 bytes create test.dat.tmp size=29804360 bytes mv test.dat.tmp ftest.dat output: mv: cannot move ‘test.dat.tmp’ to ‘test.dat’: Input/output error
Author
Owner

@ggtakec commented on GitHub (Jun 25, 2021):

@dukey Thank you for the detailed bug information.
I confirmed the code of the problem and posted a PR #1698.
Please wait a moment for the code to be merged.

<!-- gh-comment-id:868548281 --> @ggtakec commented on GitHub (Jun 25, 2021): @dukey Thank you for the detailed bug information. I confirmed the code of the problem and posted a PR #1698. Please wait a moment for the code to be merged.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/s3fs-fuse#878
No description provided.