22{
31
32
37
39
43
48 }
49
50 Irp = IrpContext->Irp;
55
59 }
60
67 }
70
74 }
75
77
80 VcbResourceAcquired =
TRUE;
81
84
88 }
89
93 }
94
96
99 }
100
103
104 FcbResourceAcquired =
108 );
109
115 }
117 }
118
122 }
123
127
135 0,
139 }
140
142 }
143
146
149
152 }
153
155
157
158 } else {
159
162
165
166 Fcb->Inode->i_atime =
168 Fcb->
Mcb->LastAccessTime =
170
172
174 IrpContext,
181 }
182
185 IrpContext,
188
190
192 Fcb->NonCachedOpenCount--;
193 }
194
197 SymLinkDelete =
TRUE;
198 } else {
200 }
201 }
202
203
204
205
206
208 &
Fcb->FileLockAnchor,
212
213
214
215
216
217
220#if EXT2_DEBUG
223 "FastIoIsPossible",
225 ));
226#endif
227
229 }
230 }
231
234
238 #if EXT2_PRE_ALLOCATION_SUPPORT
247 #endif
248 }
249 }
250 }
251
253
255
257 FcbPagingIoResourceAcquired =
TRUE;
258
263
272 }
273 }
276 FcbPagingIoResourceAcquired =
FALSE;
277 }
278 }
279 }
280
282
284
287 (
Fcb->SectionObject.DataSectionObject !=
NULL)) {
288
292 }
293
294
295 if (
Fcb->NonCachedOpenCount > 0 ||
299 }
300
301
304 0,
306 }
307 }
308
310 }
311
312 if (SymLinkDelete ||
315
316
317
318
319
320 if (FcbResourceAcquired) {
322 FcbResourceAcquired =
FALSE;
323 }
324
325
326
327
331 }
332
334
340 } else {
344 }
345 }
346
347
348
349
350
351 FcbResourceAcquired =
355 );
356 if (!SymLinkDelete) {
361 }
362 }
363 }
364
365 DEBUG(
DL_INF, (
"Ext2Cleanup: OpenCount=%u ReferCount=%u NonCahcedCount=%xh %wZ\n",
367
369
372 }
373
375
376 if (FcbPagingIoResourceAcquired) {
378 }
379
380 if (FcbResourceAcquired) {
382 }
383
384 if (VcbResourceAcquired) {
386 }
387
388 if (!IrpContext->ExceptionInProgress) {
391 } else {
392 IrpContext->Irp->IoStatus.Status =
Status;
394 }
395 }
397
399}
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
#define CcIsFileCached(FO)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
#define NT_SUCCESS(StatCode)
#define KeQuerySystemTime(t)
#define ExAcquireResourceExclusiveLite(res, wait)
#define ClearFlag(_F, _SF)
#define Ext2GetCurrentProcessName()
#define VCB_VOLUME_LOCKED
#define IsVcbReadOnly(Vcb)
NTSTATUS Ext2TruncateFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER AllocationSize)
LARGE_INTEGER Ext2NtTime(IN ULONG i_time)
BOOLEAN Ext2SaveInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN struct inode *Inode)
NTSTATUS Ext2DeleteFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PEXT2_MCB Mcb)
#define IsExt2FsDevice(DO)
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
#define FCB_ALLOC_IN_WRITE
#define SetLongFlag(_F, _SF)
#define FCB_FILE_MODIFIED
VOID Ext2ClearVpbFlag(IN PVPB Vpb, IN USHORT Flag)
#define FCB_ALLOC_IN_SETINFO
ULONG Ext2LinuxTime(IN LARGE_INTEGER SysTime)
#define ClearLongFlag(_F, _SF)
NTSTATUS Ext2FlushFile(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_FCB Fcb, IN PEXT2_CCB Ccb)
VOID Ext2NotifyReportChange(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Filter, IN ULONG Action)
#define IsMcbDirectory(Mcb)
#define IsInodeSymLink(I)
#define FCB_DELETE_PENDING
#define FCB_ALLOC_IN_CREATE
struct _EXT2_VCB * PEXT2_VCB
#define CCB_DELETE_ON_CLOSE
struct _EXT2_CCB * PEXT2_CCB
#define CCB_LAST_WRITE_UPDATED
struct _EXT2_FCB * PEXT2_FCB
#define CEILING_ALIGNED(T, A, B)
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
FAST_IO_POSSIBLE Ext2IsFastIoPossible(IN PEXT2_FCB Fcb)
int ext3_release_dir(struct inode *inode, struct file *filp)
#define INODE_HAS_EXTENT(i)
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
PFILE_LOCK_INFO NTAPI FsRtlGetNextFileLock(IN PFILE_LOCK FileLock, IN BOOLEAN Restart)
NTSTATUS NTAPI FsRtlFastUnlockAll(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN PVOID Context OPTIONAL)
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
BOOLEAN NTAPI CcZeroData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER StartOffset, IN PLARGE_INTEGER EndOffset, IN BOOLEAN Wait)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
#define EXCEPTION_EXECUTE_HANDLER
#define FILE_ATTRIBUTE_ARCHIVE
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
VOID NTAPI FsRtlNotifyCleanup(IN PNOTIFY_SYNC NotifySync, IN PLIST_ENTRY NotifyList, IN PVOID FsContext)
VOID NTAPI FsRtlNotifyFullChangeDirectory(IN PNOTIFY_SYNC NotifySync, IN PLIST_ENTRY NotifyList, IN PVOID FsContext, IN PSTRING FullDirectoryName, IN BOOLEAN WatchTree, IN BOOLEAN IgnoreBuffer, IN ULONG CompletionFilter, IN PIRP NotifyIrp, IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL)
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
PEPROCESS NTAPI IoGetRequestorProcess(IN PIRP Irp)
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)
#define _SEH2_EXCEPT(...)
ERESOURCE PagingIoResource
NTFSIDENTIFIER Identifier
FSRTL_ADVANCED_FCB_HEADER Header
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
#define FILE_ACTION_MODIFIED
#define FILE_NOTIFY_CHANGE_LAST_ACCESS
#define FILE_NOTIFY_CHANGE_ATTRIBUTES
#define FILE_ACTION_REMOVED
#define FILE_NOTIFY_CHANGE_FILE_NAME
#define FO_CLEANUP_COMPLETE
#define FO_CACHE_SUPPORTED
#define FILE_NOTIFY_CHANGE_LAST_WRITE
#define FILE_NOTIFY_CHANGE_DIR_NAME