-
Notifications
You must be signed in to change notification settings - Fork 8
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
Add O_DIRECT support #79
base: main
Are you sure you want to change the base?
Conversation
@@ -64,6 +64,8 @@ generic/029 # mmap missing | |||
generic/030 # mmap missing | |||
generic/075 # file content mismatch failures (fds, etc) | |||
generic/080 # mmap missing | |||
generic/091 # skip fsx tests | |||
generic/094 # odirect streaming pre-alloc treated as failure in xfstests |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You know, I bet if we change the dio alloc_blocks to only allocate the size of the IO it'll fix these tests that were so cranky about our preallocation. It'd be worth trying them again once that's in place.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Still no go on this one :/
71072c1
to
85e4b6c
Compare
We want to first pass a mapping of unwritten extents to the blockdev_direct_IO call. Then based upon the amount of bytes written we want to convert those unwritten extents into written.
Currently if there is an extent on the last block the code will only set EOF on ENOENT. In the case that the last block has an extent it wont go to the next iteration due to iblock <= last. This then doesnt set the EOF on the last block in these cases. We want to just allow the loop to keep looping and rely on if (ext.start > last) to protect us from infinite loop.
In the buffered case page tail zeroing happens automatically. In the O_DIRECT case it does not so we need to add it in our setattr path just like EXT2. We want to zero the end of the block that contains i_size during truncate, so we just call block_truncate_page in set_inode_size.
Signed-off-by: Bryant G. Duffy-Ly <[email protected]>
Can one of the admins verify this patch? |
This won't automatically run in continuous integration without approval. A member of the Versity organization must allow it. |
No description provided.