Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

calocation: fix ESTALE when extracting to regular file #218

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

gportay
Copy link
Contributor

@gportay gportay commented Jun 21, 2019

Dear Maintainer(s),

I met the issue discribed below when I want to extract an archive in an existing regular file. Note that it works well if the file is a block device.

I do not think this is the appropriate fix. It is much like a workaround. I need your help to fix it properly.

I would like to know why it is interresting to make such a test on the modification time of the file.

Regards,
Gaël


There is an issue when an archive is extracted to a regular file that
exists already.

# Extract the archive.caibx to dest.bin (dest.bin does not exist yet)
$ casync extract http://localhost/archive.caibx dest.bin

# Extract the archive.caibx to existing dest.bin
$ casync extract http://localhost/archive.caibx dest.bin --log-level debug --verbose
Acquiring http://localhost/archive.caibx...
Setting min/avg/max chunk size: 16384 / 65536 / 262144
Failed to run decoder step: Stale file handle
Failed to run synchronizer: Stale file handle

The error raised is a difference in the modify time.

In the case of the destination regular file exists (ie. the second call
in the example above), the path goes to several fallocate/write calls
that causes the modification time to be updated and leads to that error.

This commit drops the check for the modification time.

There is an issue when an archive is extracted to a regular file that
exists already.

	# Extract the archive.caibx to dest.bin (dest.bin does not exist yet)
	$ casync extract http://localhost/archive.caibx dest.bin

	# Extract the archive.caibx to existing dest.bin
	$ casync extract http://localhost/archive.caibx dest.bin --log-level debug --verbose
	Acquiring http://localhost/archive.caibx...
	Setting min/avg/max chunk size: 16384 / 65536 / 262144
	Failed to run decoder step: Stale file handle
	Failed to run synchronizer: Stale file handle

The error raised is a difference in the modify time.

In the case of the destination regular file exists (ie. the second call
in the example above), the path goes to several fallocate/write calls
that causes the modification time to be updated and leads to that error.

This commit drops the check for the modification time.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant