(Note .CopyToAsync is pretty good; for certain combinations of flags)
Issues:
SeekCore which on Windows calls the blocking api SetFilePointerEx which the "Windows Server Performance Team Blog: Designing Applications for High Performance – Part III" (June 25, 2008) says about_Edit by carlossanlop: To focus on the Async/Sync improvements, I'm removing 3 issues from the list that are separate from that topic._
Thanks for collecting these into an “epic” 🙂 This is a candidate for some code debt work before 6.0 feature work starts.
@JeremyKuhne you've been a vocal advocate of improving FileStream in the past. Is there anything you want to add to this meta-issue?
Thank you @benadams for compiling the list.
May I suggest to focus this epic specifically for improving sync/async in FileStream, which seems to be the main topic of most of those issues? If agreed, then these issues can be removed from the epic and addressed separately:
FileStream.SetLength doesn't return file pointer to original value on failure.FileStream.Lock(Int64, Int64) failure on Linux - always uses F_WRLCK.FileStream.Flush(true) doesn't flush device buffer on macOS, while it does so on Windows.@stephentoub What do you think about #8307, #29173, and #28444 -- do you think those are standalone enough to treat separately from the bigger collection of issues? If so, we can go ahead and get started on those soon.
do you think those are standalone enough to treat separately from the bigger collection of issues?
Yes
Changed title to "user story terms" even though it's clearly not describing the current state.
io_uring for file I/O on Linux? 😉 https://www.scylladb.com/2020/05/05/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/
Most helpful comment
Changed title to "user story terms" even though it's clearly not describing the current state.