Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
update TOC
  • Loading branch information
adamsitnik committed Feb 9, 2021
commit 3da8076711e206a0f05ba3b0e8b3b025525fdb33
66 changes: 32 additions & 34 deletions src/libraries/System.IO.FileSystem/FileStreamRewrite.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,35 @@
# FileStream 6.0

- [FileStream 6.0](#filestream-60)
* [Things to do before starting the rewrite](#things-to-do-before-starting-the-rewrite)
+ [Gather API usage statistics](#gather-api-usage-statistics)
+ [Cooperate](#cooperate)
* [Existing issues](#existing-issues)
+ [Creating FileStream](#creating-filestream)
- [Add new APIs that allow for opening file for async IO](#add-new-apis-that-allow-for-opening-file-for-async-io)
- [Avoid unnecessary allocations when using FileStream](#avoid-unnecessary-allocations-when-using-filestream)
- [Expose FileOptions.NoBuffering flag and support O_DIRECT on Linux](#expose-fileoptionsnobuffering-flag-and-support-o-direct-on-linux)
+ [Async IO](#async-io)
- [Win32 FileStream will issue a seek on every ReadAsync call](#win32-filestream-will-issue-a-seek-on-every-readasync-call)
- [Win32 FileStream turns async reads into sync reads](#win32-filestream-turns-async-reads-into-sync-reads)
- [Asynchronous random file access with FileStream Read vs ReadAsync in a loop / parallel (ReadAsync is slow)](#asynchronous-random-file-access-with-filestream-read-vs-readasync-in-a-loop---parallel--readasync-is-slow-)
- [FileStream.Windows useAsync WriteAsync calls blocking apis](#filestreamwindows-useasync-writeasync-calls-blocking-apis)
- [FileStream.FlushAsync ends up doing synchronous writes](#filestreamflushasync-ends-up-doing-synchronous-writes)
- [Use PreallocatedOverlapped when internal FileStream buffer isn't being used on Windows](#use-preallocatedoverlapped-when-internal-filestream-buffer-isn-t-being-used-on-windows)
- [Async File IO APIs mimicking Win32 OVERLAPPED](#async-file-io-apis-mimicking-win32-overlapped)
- [File.ReadAllTextAsync not behaving asynchronously when called on inaccessible network files](#filereadalltextasync-not-behaving-asynchronously-when-called-on-inaccessible-network-files)
- [FileStream file preallocation performance](#filestream-file-preallocation-performance)
- [File.WriteAllTextAsync performance issues](#filewritealltextasync-performance-issues)
- [Cancellation support](#cancellation-support)
+ [Other APIs](#other-apis)
- [File allocation inconsistency between Windows and Linux and sparse allocations](#file-allocation-inconsistency-between-windows-and-linux-and-sparse-allocations)
- [Platform-dependent FileStream permissions behavior](#platform-dependent-filestream-permissions-behavior)
- [System.IO.FileSystem tests failing on FreeBSD](#systemiofilesystem-tests-failing-on-freebsd)
- [SetCreationTime, SetLastAccessTime, SetLastWriteTime Should not open a new stream to obtain a SafeFileHandle](#setcreationtime--setlastaccesstime--setlastwritetime-should-not-open-a-new-stream-to-obtain-a-safefilehandle)
- [Support SeBackupPrivilege in System.IO.Filestream API](#support-sebackupprivilege-in-systemiofilestream-api)
* [Priorities](#priorities)
+ [Must have](#must-have)
+ [Great to have](#great-to-have)
+ [Nice to have](#nice-to-have)
+ [Future](#future)
- [Things to do before starting the rewrite](#things-to-do-before-starting-the-rewrite)
* [Gather API usage statistics](#gather-api-usage-statistics)
* [Cooperate](#cooperate)
- [Existing issues](#existing-issues)
* [Creating FileStream](#creating-filestream)
+ [Add new APIs that allow for opening file for async IO](#add-new-apis-that-allow-for-opening-file-for-async-io)
+ [Avoid unnecessary allocations when using FileStream](#avoid-unnecessary-allocations-when-using-filestream)
+ [Expose FileOptions.NoBuffering flag and support O_DIRECT on Linux](#expose-fileoptionsnobuffering-flag-and-support-o-direct-on-linux)
* [Async IO](#async-io)
+ [Win32 FileStream will issue a seek on every ReadAsync call](#win32-filestream-will-issue-a-seek-on-every-readasync-call)
+ [Win32 FileStream turns async reads into sync reads](#win32-filestream-turns-async-reads-into-sync-reads)
+ [Asynchronous random file access with FileStream Read vs ReadAsync in a loop / parallel (ReadAsync is slow)](#asynchronous-random-file-access-with-filestream-read-vs-readasync-in-a-loop---parallel--readasync-is-slow-)
+ [FileStream.Windows useAsync WriteAsync calls blocking apis](#filestreamwindows-useasync-writeasync-calls-blocking-apis)
+ [FileStream.FlushAsync ends up doing synchronous writes](#filestreamflushasync-ends-up-doing-synchronous-writes)
+ [Use PreallocatedOverlapped when internal FileStream buffer isn't being used on Windows](#use-preallocatedoverlapped-when-internal-filestream-buffer-isn-t-being-used-on-windows)
+ [Async File IO APIs mimicking Win32 OVERLAPPED](#async-file-io-apis-mimicking-win32-overlapped)
+ [File.ReadAllTextAsync not behaving asynchronously when called on inaccessible network files](#filereadalltextasync-not-behaving-asynchronously-when-called-on-inaccessible-network-files)
+ [FileStream file preallocation performance](#filestream-file-preallocation-performance)
+ [File.WriteAllTextAsync performance issues](#filewritealltextasync-performance-issues)
+ [Cancellation support](#cancellation-support)
* [Other APIs](#other-apis)
+ [File allocation inconsistency between Windows and Linux and sparse allocations](#file-allocation-inconsistency-between-windows-and-linux-and-sparse-allocations)
+ [Platform-dependent FileStream permissions behavior](#platform-dependent-filestream-permissions-behavior)
+ [System.IO.FileSystem tests failing on FreeBSD](#systemiofilesystem-tests-failing-on-freebsd)
+ [SetCreationTime, SetLastAccessTime, SetLastWriteTime Should not open a new stream to obtain a SafeFileHandle](#setcreationtime--setlastaccesstime--setlastwritetime-should-not-open-a-new-stream-to-obtain-a-safefilehandle)
+ [Support SeBackupPrivilege in System.IO.Filestream API](#support-sebackupprivilege-in-systemiofilestream-api)
- [Priorities](#priorities)
* [Must have](#must-have)
* [Great to have](#great-to-have)
* [Nice to have](#nice-to-have)
* [Future](#future)
- [Planning](#planning)

## Things to do before starting the rewrite

Expand Down