802 Irp = IrpContext->Irp;
816 DEBUG(
DL_INF, (
"Ext2WriteFile: %wZ Offset=%I64xh Length=%xh Paging=%xh Nocache=%xh\n",
831 Irp->IoStatus.Information = 0;
843 if (Nocache && !PagingIo &&
911 RecursiveWriteThrough =
TRUE;
922 PagingIoResourceAcquired =
TRUE;
929 Irp->IoStatus.Information = 0;
959 MainResourceAcquired =
TRUE;
964 if (Nocache &&
Ccb !=
NULL &&
Fcb->SectionObject.DataSectionObject !=
NULL) {
1025 PagingIoResourceAcquired =
TRUE;
1046 PagingIoResourceAcquired =
FALSE;
1068 FileSizesChanged =
TRUE;
1070 if (
Fcb->
Header.FileSize.QuadPart >= 0x80000000 &&
1076 DEBUG(
DL_IO, (
"Ext2WriteFile: expanding %wZ to FS: %I64xh FA: %I64xh\n",
1152 FileSizesChanged =
TRUE;
1161 DEBUG(
DL_FLP, (
"Ext2WriteFile is starting FlushingDpc...\n"));
1207 Irp = IrpContext->Irp;
1213 FileSizesChanged =
TRUE;
1228 DEBUG(
DL_IO, (
"Ext2WriteFile: %wZ written FS: %I64xh FA: %I64xh BO: %I64xh LEN: %u\n",
1235 if (FileSizesChanged) {
1254 if (PagingIoResourceAcquired) {
1258 if (MainResourceAcquired) {
1263 if (!OpPostIrp && !IrpContext->ExceptionInProgress) {
1278 if (SynchronousIo) {
1295 DEBUG(
DL_IO, (
"Ext2WriteFile: %wZ written at Offset=%I64xh Length=%xh PagingIo=%d Nocache=%d " 1296 "RetLen=%xh VDL=%I64xh FileSize=%I64xh i_size=%I64xh Status=%xh\n",
#define READ_AHEAD_GRANULARITY
struct _EXT2_FCB * PEXT2_FCB
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
#define IsInodeSymLink(I)
#define IRP_CONTEXT_FLAG_WAIT
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
FSRTL_ADVANCED_FCB_HEADER Header
BOOLEAN Ext2SaveSuper(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb)
BOOLEAN Ext2ZeroData(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER Start, IN PLARGE_INTEGER End)
#define CEILING_ALIGNED(T, A, B)
#define STATUS_INVALID_PARAMETER
#define IRP_CONTEXT_FLAG_WRITE_THROUGH
VOID Ext2StartFloppyFlushDpc(PEXT2_VCB Vcb, PEXT2_FCB Fcb, PFILE_OBJECT FileObject)
BOOLEAN NTAPI FsRtlCheckLockForWriteAccess(IN PFILE_LOCK FileLock, IN PIRP Irp)
#define IRP_MJ_MAXIMUM_FUNCTION
#define IRP_CONTEXT_FLAG_DEFERRED
#define STATUS_INVALID_DEVICE_REQUEST
NTSTATUS Ext2LockUserBuffer(IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation)
#define FILE_NOTIFY_CHANGE_SIZE
#define IsSpecialFile(Fcb)
#define FO_SYNCHRONOUS_IO
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
#define FO_FILE_SIZE_CHANGED
_In_ PDEVICE_OBJECT DeviceObject
NTFSIDENTIFIER Identifier
int Ext2CheckFileAccess(PEXT2_VCB Vcb, PEXT2_MCB Mcb, int attempt)
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
VOID NTAPI CcPrepareMdlWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
VOID(NTAPI * PCC_POST_DEFERRED_WRITE)(_In_ PVOID Context1, _In_ PVOID Context2)
#define IsWritingToEof(Pos)
VOID Ext2FreeIrpContext(IN PEXT2_IRP_CONTEXT IrpContext)
#define CcIsFileCached(FO)
#define FILE_ACTION_MODIFIED
#define STATUS_INVALID_USER_BUFFER
VOID Ext2NotifyReportChange(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Filter, IN ULONG Action)
#define IsFileDeleted(Mcb)
#define ClearLongFlag(_F, _SF)
FAST_IO_POSSIBLE Ext2IsFastIoPossible(IN PEXT2_FCB Fcb)
#define FCB_ALLOC_IN_WRITE
#define STATUS_FILE_DELETED
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
#define FILE_USE_FILE_POINTER_POSITION
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI CcCanIWrite(IN PFILE_OBJECT FileObject, IN ULONG BytesToWrite, IN BOOLEAN Wait, IN UCHAR Retrying)
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
PIRP NTAPI IoGetTopLevelIrp(VOID)
#define STATUS_ACCESS_DENIED
#define FSRTL_MAX_TOP_LEVEL_IRP_FLAG
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define STATUS_UNSUCCESSFUL
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
_Must_inspect_result_ _In_ PFLT_INSTANCE _Out_ PBOOLEAN IsDirectory
#define FCB_FILE_MODIFIED
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG _In_ ULONG _Out_ PULONG ReturnedLength
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
NTSTATUS Ext2WriteInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONGLONG Offset, IN PVOID Buffer, IN ULONG Size, IN BOOLEAN bDirectIo, OUT PULONG BytesWritten)
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
BOOLEAN NTAPI CcCopyWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN PVOID Buffer)
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
BOOLEAN NTAPI ExAcquireSharedStarveExclusive(IN PERESOURCE Resource, IN BOOLEAN Wait)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID Ext2DeferWrite(IN PEXT2_IRP_CONTEXT, PIRP Irp)
NTSTATUS Ext2ExpandFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER Size)
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
#define IsLazyWriter(Fcb)
#define SetLongFlag(_F, _SF)
#define IRP_CONTEXT_FLAG_REQUEUED
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
VOID NTAPI Ext2LockIrp(IN PVOID Context, IN PIRP Irp)
#define STATUS_FILE_LOCK_CONFLICT
ERESOURCE PagingIoResource
struct _EXT2_VCB * PEXT2_VCB
#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE
NTSTATUS NTAPI FsRtlCheckOplock(IN POPLOCK Oplock, IN PIRP Irp, IN PVOID Context, IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
VOID NTAPI Ext2OplockComplete(IN PVOID Context, IN PIRP Irp)
BOOLEAN Ext2SaveInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN struct inode *Inode)
PVOID Ext2GetUserBuffer(IN PIRP Irp)
VOID NTAPI CcDeferWrite(IN PFILE_OBJECT FileObject, IN PCC_POST_DEFERRED_WRITE PostRoutine, IN PVOID Context1, IN PVOID Context2, IN ULONG BytesToWrite, IN BOOLEAN Retrying)
#define IRP_SYNCHRONOUS_PAGING_IO
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
VOID NTAPI CcSetReadAheadGranularity(IN PFILE_OBJECT FileObject, IN ULONG Granularity)