241 ERR(
"no fileref for stream\n");
246 ii = &
fileref->parent->fcb->inode_item;
292 TRACE(
"returning STATUS_CANT_WAIT\n");
301 TRACE(
"returning STATUS_SUCCESS\n");
378 TRACE(
"(%p, %I64x, %I64x, %p, %lx, %u, %u, %p, %p)\n",
FileObject,
FileOffset ?
FileOffset->QuadPart : 0,
Length ?
Length->QuadPart : 0,
382 WARN(
"can only lock files\n");
410 TRACE(
"(%p, %I64x, %I64x, %p, %lx, %p, %p)\n",
FileObject,
FileOffset ?
FileOffset->QuadPart : 0,
Length ?
Length->QuadPart : 0,
416 WARN(
"can only lock files\n");
443 WARN(
"can only lock files\n");
475 WARN(
"can only lock files\n");
#define KeQuerySystemTime(t)
struct _file_ref * parent
_In_ PLARGE_INTEGER EndingOffset
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
BOOLEAN NTAPI FsRtlFastCheckLockForRead(IN PFILE_LOCK FileLock, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN ULONG Key, IN PFILE_OBJECT FileObject, IN PVOID Process)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
BOOLEAN NTAPI FsRtlMdlReadCompleteDev(IN PFILE_OBJECT FileObject, IN PMDL MemoryDescriptorList, IN PDEVICE_OBJECT DeviceObject)
#define STATUS_INVALID_PARAMETER
_In_ PLARGE_INTEGER _Out_ struct _ERESOURCE ** ResourceToRelease
BOOLEAN NTAPI FsRtlMdlWriteCompleteDev(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain, IN PDEVICE_OBJECT DeviceObject)
_In_ WDFDPC _In_ BOOLEAN Wait
void init_fast_io_dispatch(FAST_IO_DISPATCH **fiod)
PFAST_IO_MDL_READ MdlRead
PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
BOOLEAN NTAPI FsRtlPrepareMdlWriteDev(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG LockKey, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
static void __stdcall fast_io_release_for_create_section(_In_ PFILE_OBJECT FileObject)
PFAST_IO_MDL_READ_COMPLETE MdlReadComplete
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
#define FILE_WRITE_ATTRIBUTES
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
NTSTATUS NTAPI FsRtlFastUnlockAllByKey(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN ULONG Key, IN PVOID Context OPTIONAL)
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS NTAPI FsRtlFastUnlockSingle(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN PEPROCESS Process, IN ULONG Key, IN PVOID Context OPTIONAL, IN BOOLEAN AlreadySynchronized)
static __inline bool is_subvol_readonly(root *r, PIRP Irp)
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
_Function_class_(FAST_IO_QUERY_BASIC_INFO)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN FailImmediately
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
#define PsGetCurrentProcess
static __inline uint64_t unix_time_to_win(BTRFS_TIME *t)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
BOOLEAN NTAPI FsRtlMdlReadDev(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG LockKey, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
FSRTL_ADVANCED_FCB_HEADER Header
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
PIRP NTAPI IoGetTopLevelIrp(VOID)
struct _file_ref * fileref
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define FILE_READ_ATTRIBUTES
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
#define FILE_ATTRIBUTE_NORMAL
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
#define FILE_STANDARD_INFORMATION
NTSTATUS NTAPI FsRtlFastUnlockAll(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN PVOID Context OPTIONAL)
static __inline FAST_IO_POSSIBLE fast_io_possible(fcb *fcb)
static void __stdcall fast_io_acquire_for_create_section(_In_ PFILE_OBJECT FileObject)
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
FAST_IO_DISPATCH FastIoDispatch
PFAST_IO_WRITE FastIoWrite
_In_ PFCB _In_ LONGLONG FileOffset
static __inline uint64_t fcb_alloc_size(fcb *fcb)
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN BOOLEAN ExclusiveLock
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
BOOLEAN NTAPI FsRtlCopyRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI FsRtlCopyWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
#define RtlZeroMemory(Destination, Length)
#define FSRTL_CACHE_TOP_LEVEL_IRP
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)
BOOLEAN NTAPI FsRtlFastCheckLockForWrite(IN PFILE_LOCK FileLock, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN ULONG Key, IN PFILE_OBJECT FileObject, IN PVOID Process)
struct _device_extension * Vcb
ULONG SizeOfFastIoDispatch
#define FILE_BASIC_INFORMATION