This repository has been archived by the owner on Feb 26, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 178
Conversation
This file contains 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
This adds an interface to "punch holes" (deallocate space) in VFS files. The interface is identical to the Solaris VOP_SPACE interface. This interface is necessary for TRIM support on file vdevs. This is implemented using Linux fallocate(FALLOC_FL_PUNCH_HOLE), which was introduced in 2.6.38. For a brief time before 2.6.38 this was done using the truncate_range inode operation, which was quickly deprecated. This patch only supports FALLOC_FL_PUNCH_HOLE.
@dechamps I'm going to hold of merging this until -rc12 since I want to get something known stable tagged soonish. |
Currently, VOP_SPACE() returns a negative error code in some cases. It shouldn't. This patch fixes that.
Don't merge this just yet, I'll be adding |
Reverts a remarkably dumb part of 0c0cb0d. "Yo Dawg, we heard you like configure checks so we put a #define in your #define so you can #ifdef while you #ifdef"
Okay, this is ready for merging now. Just squash everything together and you're good to go. |
This adds support for the truncate_range() inode operation to VOP_SPACE() for file hole punching. This API is deprecated and removed in 3.5, so it's only useful for old kernels.
On tmpfs, the truncate_range() inode operation translates to shmem_truncate_range(). Unfortunately, this function expects the end offset to be inclusive and aligned to the end of a page. If it is not, the kernel will stop with a BUG_ON(). This patch fixes the issue by adapting to the constraints set forth by shmem_truncate_range().
@behlendorf: now would probably be a good time to merge this. |
Yup. I was working on pulling it in yesterday I'll get it finished today. |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
This adds an interface to "punch holes" (deallocate space) in VFS files. The interface is identical to the Solaris
VOP_SPACE
interface. This interface is necessary for TRIM support on file vdevs (see openzfs/zfs#924).This is implemented using Linux
fallocate(FALLOC_FL_PUNCH_HOLE)
, which was introduced in 2.6.38. For a brief time before 2.6.38 this was done using thetruncate_range
inode operation, which was quickly deprecated. This patch only supportsFALLOC_FL_PUNCH_HOLE
.@behlendorf: like the previous patch, you can either wait for ZFS TRIM support to be finished or you can merge this now. Your call.