-
Notifications
You must be signed in to change notification settings - Fork 13.1k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
std: use more LFS functions on Linux #31668
Conversation
This follows the pattern already used for stat functions from rust-lang#31551. Now `ftruncate`, `lseek`, and `readdir_r` use their explicit 64-bit variants for LFS support, using wider `off_t` and `dirent` types. This also updates to `open64`, which uses no different types but implies the `O_LARGEFILE` flag. Non-Linux platforms just map their normal functions to the 64-bit names. r? @alexcrichton
What happens if someone writes the following on a 32bit platform? let file = File::from_raw_fd(libc::open(...)); // non LFS open
file.set_len(u32::MAX + 1); I assume (hope) this fails gracefully (or succeeds) but doesn't do anything weird. |
@Stebalien good question -- assuming you do cast that We'll also assume your file wasn't already >=2GB, or that AFAICT Rust doesn't care at all, so it's up to the kernel's behavior. System call Actually, the old behavior would have been the "weird" one, silently taking |
This follows the pattern already used for stat functions from #31551. Now `ftruncate`, `lseek`, and `readdir_r` use their explicit 64-bit variants for LFS support, using wider `off_t` and `dirent` types. This also updates to `open64`, which uses no different types but implies the `O_LARGEFILE` flag. Non-Linux platforms just map their normal functions to the 64-bit names. r? @alexcrichton
@cuviper Thanks. I just wanted to make sure that mixing and matching LFS/non LFS syscalls wouldn't' cause any problems (for backwards comparability). |
This follows the pattern already used for stat functions from #31551. Now
ftruncate
,lseek
, andreaddir_r
use their explicit 64-bit variants forLFS support, using wider
off_t
anddirent
types. This also updates toopen64
, which uses no different types but implies theO_LARGEFILE
flag.Non-Linux platforms just map their normal functions to the 64-bit names.
r? @alexcrichton