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
Make linux file write life time hinting work #12595
Conversation
Could you have a quick look over this @ajkr ? Cheers! |
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.
Thanks!
@ajkr has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
env/io_posix.cc
Outdated
if (hint == write_hint_) { | ||
return; | ||
} | ||
if (fcntl(fd_, F_SET_RW_HINT, &hint) == 0) { | ||
if (fcntl(fd_, F_SET_RW_HINT, &fcntl_hint)) { |
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.
Keep the condition "== 0"?
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.
good catch! fixed. Thanks!
The life time hint fcntl takes a 64-bit unsigned int, so make sure to pass a uint64_t when doing the syscall. Signed-off-by: Hans Holmberg <hans.holmberg@wdc.com>
@yhr has updated the pull request. You must reimport the pull request before landing. |
@ajkr has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
The life time hint fcntl takes a 64-bit unsigned int, so make sure to pass a uint64_t when doing the syscall.
See:
https://man7.org/linux/man-pages/man2/fcntl.2.html
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c75b1d9421f80f4143e389d2d50ddfc8a28c8c35
This is one of those "How did this ever work?", as Env::WriteLifeTimeHint hint is definitely not the same as an 64-bit unsigned int.
What's surprising is that SetWriteLifeTimeHint does pass a valid hint from time to time.
Thanks,
Hans