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");
static __inline FAST_IO_POSSIBLE fast_io_possible(fcb *fcb)
static __inline uint64_t fcb_alloc_size(fcb *fcb)
static __inline bool is_subvol_readonly(root *r, PIRP Irp)
_In_ PFCB _In_ LONGLONG FileOffset
#define FILE_ATTRIBUTE_NORMAL
static void __stdcall fast_io_release_for_create_section(_In_ PFILE_OBJECT FileObject)
FAST_IO_DISPATCH FastIoDispatch
void init_fast_io_dispatch(FAST_IO_DISPATCH **fiod)
static void __stdcall fast_io_acquire_for_create_section(_In_ PFILE_OBJECT FileObject)
#define KeQuerySystemTime(t)
#define ExAcquireResourceExclusiveLite(res, wait)
#define ExAcquireResourceSharedLite(res, wait)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN BOOLEAN ExclusiveLock
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN FailImmediately
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
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)
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)
NTSTATUS NTAPI FsRtlFastUnlockAll(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN PVOID Context OPTIONAL)
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)
NTSTATUS NTAPI FsRtlFastUnlockAllByKey(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN ULONG Key, IN PVOID Context OPTIONAL)
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)
#define FSRTL_CACHE_TOP_LEVEL_IRP
#define FILE_STANDARD_INFORMATION
#define FILE_BASIC_INFORMATION
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define _Function_class_(n)
#define FILE_READ_ATTRIBUTES
#define FILE_WRITE_ATTRIBUTES
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlMdlWriteCompleteDev(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI FsRtlMdlReadCompleteDev(IN PFILE_OBJECT FileObject, IN PMDL MemoryDescriptorList, IN PDEVICE_OBJECT DeviceObject)
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)
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)
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)
PIRP NTAPI IoGetTopLevelIrp(VOID)
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
static __inline uint64_t unix_time_to_win(BTRFS_TIME *t)
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
PFAST_IO_MDL_READ_COMPLETE MdlReadComplete
PFAST_IO_MDL_READ MdlRead
PFAST_IO_WRITE FastIoWrite
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete
ULONG SizeOfFastIoDispatch
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
struct _file_ref * fileref
struct _device_extension * Vcb
FSRTL_ADVANCED_FCB_HEADER Header
struct _file_ref * parent
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDFDPC _In_ BOOLEAN Wait
_In_ PLARGE_INTEGER _Out_ struct _ERESOURCE ** ResourceToRelease
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
_In_ PLARGE_INTEGER EndingOffset
#define PsGetCurrentProcess