21 #pragma alloc_text(PAGE, Ext2AllocateInode) 22 #pragma alloc_text(PAGE, Ext2DestroyInode) 23 #pragma alloc_text(PAGE, Ext2CheckBitmapConsistency) 24 #pragma alloc_text(PAGE, Ext2CheckSetBlock) 25 #pragma alloc_text(PAGE, Ext2InitializeVcb) 26 #pragma alloc_text(PAGE, Ext2TearDownStream) 27 #pragma alloc_text(PAGE, Ext2DestroyVcb) 28 #pragma alloc_text(PAGE, Ext2SyncUninitializeCacheMap) 29 #pragma alloc_text(PAGE, Ext2ReaperThread) 30 #pragma alloc_text(PAGE, Ext2StartReaper) 31 #pragma alloc_text(PAGE, Ext2StopReaper) 47 ExAllocateFromNPagedLookasideList(
50 if (IrpContext ==
NULL) {
72 if (
irpSp->Parameters.MountVolume.Vpb) {
122 IrpContext->Identifier.Type = 0;
123 IrpContext->Identifier.Size = 0;
151 #ifndef _WIN2K_TARGET_ 158 &
Fcb->FileLockAnchor,
163 Fcb->ReferenceCount = 0;
172 DEBUG(
DL_RES, (
"Ext2AllocateFcb: Fcb %p created: %wZ.\n",
183 Fcb->
Header.ValidDataLength.QuadPart =
Mcb->Inode.i_size;
187 Fcb->SectionObject.DataSectionObject =
NULL;
188 Fcb->SectionObject.SharedCacheMap =
NULL;
189 Fcb->SectionObject.ImageSectionObject =
NULL;
210 DEBUG(
DL_INF, (
"Ext2FreeFcb: Fcb (%p) to be unlinked: %wZ.\n",
250 #ifndef _WIN2K_TARGET_ 293 Fcb->TsDrop.QuadPart = 0;
338 Ccb->SymLink = SymLink;
342 DEBUG(
DL_INF, (
"ExtAllocateCcb: Ccb SymLink: %wZ.\n",
343 &
Ccb->SymLink->FullName));
346 Ccb->DirectorySearchPattern.Length = 0;
347 Ccb->DirectorySearchPattern.MaximumLength = 0;
348 Ccb->DirectorySearchPattern.Buffer = 0;
365 DEBUG(
DL_INF, (
"Ext2FreeCcb: Ccb SymLink: %wZ.\n",
366 &
Ccb->SymLink->FullName));
376 if (
Ccb->DirectorySearchPattern.Buffer !=
NULL) {
378 Ccb->DirectorySearchPattern.MaximumLength );
391 inode = ExAllocateFromNPagedLookasideList(
392 &(
Vcb->InodeLookasideList));
412 ExFreeToNPagedLookasideList(&(
Vcb->InodeLookasideList),
inode);
420 de = (
struct dentry *)ExAllocateFromNPagedLookasideList(
454 DEBUG(
DL_ERR, (
"Ext2BuildEntry: failed to allocate dentry.\n"));
464 DEBUG(
DL_ERR, (
"Ex2BuildEntry: failed to allocate OEM name.\n"));
467 de->
d_name.name = Oem.Buffer;
474 de->
d_name.len = Oem.Length;
568 Extents,
i, &DirtyVba,
569 &DirtyLba, &DirtyLength);
i++) {
570 if (DirtyVba > 0 && DirtyLba != -1) {
571 DEBUG(
DL_EXT, (
"Vba:%I64xh Lba:%I64xh Len:%I64xh.\n", DirtyVba, DirtyLba, DirtyLength));
608 if (!bAdded && (!bFound || DirtyLbn == -1)) {
612 if ( !bFound || (DirtyLbn == -1) ||
629 DEBUG(
DL_EXT, (
"Index = %xh Vbn = %I64xh Lbn = %I64xh Len = %I64xh\n",
654 ULONG TriedTimes = 0;
661 ~(
Vcb->IoUnitSize - 1);
683 if (!rc && ++TriedTimes < 10) {
688 DEBUG(
DL_EXT, (
"Ext2AddVcbExtent: Vbn=%I64xh Length=%I64xh," 706 ULONG TriedTimes = 0;
732 if (!rc && ++TriedTimes < 10) {
737 DEBUG(
DL_EXT, (
"Ext2RemoveVcbExtent: Vbn=%I64xh Length=%I64xh Runs=%u\n",
773 if (
Lbn && ((*
Lbn) != -1)) {
775 (*Lbn) = (((*Lbn) - 1) <<
Vcb->IoUnitBits);
776 (*Lbn) += ((
Vbn) & (
Vcb->IoUnitSize - 1));
780 (*Length) <<=
Vcb->IoUnitBits;
781 (*Length) -= ((
Vbn) & (
Vcb->IoUnitSize - 1));
798 ULONG TriedTimes = 0;
831 if (!rc && ++TriedTimes < 10) {
836 DEBUG(
DL_EXT, (
"Ext2AddMcbExtent: Vbn=%I64xh Lbn=%I64xh Length=%I64xh," 855 ULONG TriedTimes = 0;
882 if (!rc && ++TriedTimes < 10) {
887 DEBUG(
DL_EXT, (
"Ext2RemoveMcbExtent: Vbn=%I64xh Length=%I64xh Runs=%u\n",
924 if (
Lbn && ((*
Lbn) != -1)) {
948 ULONG TriedTimes = 0;
969 if (!rc && ++TriedTimes < 10) {
974 DEBUG(
DL_EXT, (
"Ext2AddMcbMetaExts: Block: %xh-%xh rc=%d Runs=%u\n", Block,
992 ULONG TriedTimes = 0;
1011 if (!rc && ++TriedTimes < 10) {
1016 DEBUG(
DL_EXT, (
"Ext2RemoveMcbMetaExts: Block: %xh-%xhh Runs=%u\n", Block,
1045 ULONG _block = 0, _mapped = 0;
1047 if (_rc && _block != 0 && (_block != Block)) {
1140 while (
Start < End) {
1185 DEBUG(
DL_MAP, (
"Ext2InitializeZone %wZ: Block = %xh Mapped = %xh\n",
1186 &
Mcb->FullName, Block, Mapped));
1233 if ((IrpContext && IrpContext->Irp) &&
1381 if (
Parent->Buffer[ParentLen - 1] ==
L'\\') {
1394 Length += (ParentLen + (bBackslash ? 1 : 0)) *
sizeof(
WCHAR);
1403 DEBUG(
DL_ERR, (
"Ex2BuildName: failed to allocate name bufer.\n"));
1411 ParentLen *
sizeof(
WCHAR));
1415 Target->Buffer[ParentLen++] =
L'\\';
1460 Mcb->Inode.i_sb = &
Vcb->sb;
1468 DEBUG(
DL_RES, (
"Ext2AllocateMcb: Root Mcb is to be created !\n"));
1511 DEBUG(
DL_INF, (
"Ext2AllocateMcb: Mcb %wZ created.\n", &
Mcb->FullName));
1519 if (
Mcb->ShortName.Buffer) {
1521 Mcb->ShortName.MaximumLength);
1525 if (
Mcb->FullName.Buffer) {
1527 Mcb->FullName.MaximumLength);
1554 DEBUG(
DL_INF, (
"Ext2FreeMcb: Mcb %wZ will be freed.\n", &
Mcb->FullName));
1572 if (
Mcb->ShortName.Buffer) {
1574 Mcb->ShortName.MaximumLength);
1578 if (
Mcb->FullName.Buffer) {
1580 Mcb->FullName.MaximumLength);
1589 Mcb->Identifier.Type = 0;
1590 Mcb->Identifier.Size = 0;
1609 LockAcquired =
TRUE;
1655 TmpMcb =
Parent->Target->Child;
1674 TmpMcb = TmpMcb->
Next;
1700 LockAcquired =
TRUE;
1718 DEBUG(
DL_ERR, (
"Ext2InsertMcb: Child Mcb is alreay attached.\n"));
1721 DEBUG(
DL_ERR, (
"Ext2InsertMcb: Child Mcb's flag isn't set.\n"));
1758 LockAcquired =
TRUE;
1762 if (
Mcb->Parent->Child ==
Mcb) {
1763 Mcb->Parent->Child =
Mcb->Next;
1766 TmpMcb =
Mcb->Parent->Child;
1768 while (TmpMcb && TmpMcb->
Next !=
Mcb) {
1769 TmpMcb = TmpMcb->
Next;
1783 &
Mcb->FullName,
Mcb->Parent, &
Mcb->Parent->FullName));
1820 LockAcquired =
TRUE;
1862 if (
group ==
Vcb->sbi.s_groups_count - 1) {
1891 return (!bModified);
1899 for (
i = 0;
i <
Vcb->sbi.s_groups_count;
i++) {
1911 if (
i ==
Vcb->sbi.s_groups_count - 1) {
1913 Vcb->InodeSize +
Vcb->BlockSize - 1) /
1917 Vcb->BlockSize - 1) / (
Vcb->BlockSize);
1920 for (
j = 0;
j < InodeBlocks;
j++ )
1964 for (
i=0;
i < 16;
i++) {
1968 }
else if (
i == 15) {
1979 if (
NULL == UniBuffer) {
1992 UniName.
Buffer = UniBuffer;
2030 WCHAR wUID[8], wGID[8], wEUID[8], wEGID[8];
2031 CHAR sUID[8], sGID[8], sEUID[8], sEGID[8];
2034 bCheckBitmap =
FALSE,
2036 bMountPoint =
FALSE;
2037 BOOLEAN bUID = 0, bGID = 0, bEUID = 0, bEGID = 0;
2045 } ParamPattern[] = {
2060 &Suffix[0],
Property->sHidingSuffix},
2062 &MountPoint[0], &DrvLetter[0]},
2064 {
UID, &bUID, 8, &wUID[0], &sUID[0],},
2065 {
GID, &bGID, 8, &wGID[0], &sGID[0]},
2066 {
EUID, &bEUID, 8, &wEUID[0], &sEUID[0]},
2067 {
EGID, &bEGID, 8, &wEGID[0], &sEGID[0]},
2091 for (
i=0; ParamPattern[
i].Name !=
NULL;
i++) {
2095 *ParamPattern[
i].bExist =
FALSE;
2107 *(ParamPattern[
i].bExist) =
TRUE;
2112 while (
j + k < Params->
Length/2 &&
2117 ParamPattern[
i].uValue[
k] =
Params->Buffer[
j +
k];
2120 ParamPattern[
i].uValue[
k] =
Params->Buffer[
j +
k++];
2128 AnsiName.
Buffer = ParamPattern[
i].aValue;
2135 *(ParamPattern[
i].bExist) =
TRUE;
2137 *ParamPattern[
i].bExist =
FALSE;
2147 Property->DrvLetter = DrvLetter[0];
2153 sUID[7] = sGID[7] = sEUID[7] = sEGID[7] = 0;
2194 if (
Vcb->IsExt3fs) {
2233 if (VolumeParams.
Buffer) {
2254 Label.Buffer =
Vcb->Vpb->VolumeLabel;
2255 Vcb->Vpb->VolumeLabelLength = 0;
2260 ((Sb->s_volume_name[
Length -1] == 0x00) ||
2261 (Sb->s_volume_name[
Length - 1] == 0x20) )
2270 OemName.Buffer = Sb->s_volume_name;
2276 Vcb->Vpb->VolumeLabelLength =
Label.Length;
2285 for (
i = 0;
i < 16;
i++) {
2294 #define is_power_of_2(x) ((x) != 0 && (((x) & ((x) - 1)) == 0)) 2310 ULONG ChangeCount = 0, features;
2312 int i, has_huge_files;
2355 Vcb->IoUnitSize =
Vcb->BlockSize;
2361 Vcb->Header.Resource = &(
Vcb->MainResource);
2362 Vcb->Header.PagingIoResource = &(
Vcb->PagingIoResource);
2363 Vcb->OpenVolumeCount = 0;
2364 Vcb->OpenHandleCount = 0;
2365 Vcb->ReferenceCount = 0;
2375 #ifndef _WIN2K_TARGET_ 2377 FsRtlSetupAdvancedHeader(&
Vcb->Header, &
Vcb->Mutex);
2379 VcbResourceInitialized =
TRUE;
2390 NotifySyncInitialized =
TRUE;
2393 Vcb->SuperBlock =
sb;
2396 Vcb->DeviceObject = VolumeDevice;
2399 Vcb->RealDevice =
Vpb->RealDevice;
2400 Vpb->DeviceObject = VolumeDevice;
2404 if (
Vcb->InodeSize == 0) {
2413 InodeLookasideInitialized =
TRUE;
2447 Vpb->SerialNumber = ((
ULONG*)
sb->s_uuid)[0] +
2453 DiskSize =
Vcb->DiskGeometry.Cylinders.QuadPart *
2454 Vcb->DiskGeometry.TracksPerCylinder *
2455 Vcb->DiskGeometry.SectorsPerTrack *
2456 Vcb->DiskGeometry.BytesPerSector;
2464 &
Vcb->PartitionInformation,
2467 PartSize =
Vcb->PartitionInformation.PartitionLength.QuadPart;
2469 Vcb->PartitionInformation.StartingOffset.QuadPart = 0;
2470 Vcb->PartitionInformation.PartitionLength.QuadPart = DiskSize;
2471 PartSize = DiskSize;
2474 Vcb->Header.AllocationSize.QuadPart =
2475 Vcb->Header.FileSize.QuadPart = PartSize;
2477 Vcb->Header.ValidDataLength.QuadPart =
2478 Vcb->Header.FileSize.QuadPart;
2481 IoctlSize =
sizeof(
ULONG);
2493 Vcb->ChangeCount = ChangeCount;
2503 Vcb->Volume->SectionObjectPointer = &(
Vcb->SectionObject);
2504 Vcb->Volume->ReadAccess =
TRUE;
2505 Vcb->Volume->WriteAccess =
TRUE;
2506 Vcb->Volume->DeleteAccess =
TRUE;
2508 Vcb->Volume->FsContext2 =
NULL;
2509 Vcb->Volume->Vpb =
Vcb->Vpb;
2514 Vcb->Header.AllocationSize.QuadPart;
2533 ExtentsInitialized =
TRUE;
2536 Vcb->bd.bd_dev =
Vcb->RealDevice;
2537 Vcb->bd.bd_geo =
Vcb->DiskGeometry;
2538 Vcb->bd.bd_part =
Vcb->PartitionInformation;
2539 Vcb->bd.bd_volume =
Vcb->Volume;
2540 Vcb->bd.bd_priv = (
void *)
Vcb;
2548 if (!
Vcb->bd.bd_bh_cache) {
2554 Vcb->sb.s_magic =
sb->s_magic;
2555 Vcb->sb.s_bdev = &
Vcb->bd;
2558 Vcb->sb.s_priv = (
void *)
Vcb;
2559 Vcb->sb.s_fs_info = &
Vcb->sbi;
2562 Vcb->sbi.s_blocks_per_group =
sb->s_blocks_per_group;
2563 Vcb->sbi.s_first_ino =
sb->s_first_ino;
2564 Vcb->sbi.s_desc_size =
sb->s_desc_size;
2570 DEBUG(
DL_ERR, (
"EXT4-fs: unsupported descriptor size %lu\n",
Vcb->sbi.s_desc_size));
2578 Vcb->sbi.s_blocks_per_group =
sb->s_blocks_per_group;
2579 Vcb->sbi.s_inodes_per_group =
sb->s_inodes_per_group;
2585 if (
Vcb->sbi.s_inodes_per_block == 0) {
2589 Vcb->sbi.s_itb_per_group =
Vcb->sbi.s_inodes_per_group /
2590 Vcb->sbi.s_inodes_per_block;
2594 Vcb->sbi.s_desc_per_block_bits =
ilog2(
Vcb->sbi.s_desc_per_block);
2596 for (
i=0;
i < 4;
i++) {
2597 Vcb->sbi.s_hash_seed[
i] =
sb->s_hash_seed[
i];
2599 Vcb->sbi.s_def_hash_version =
sb->s_def_hash_version;
2606 "EXT3-fs warning: feature flags set on rev 0 fs, " 2607 "running e2fsck is recommended\n");
2622 "unsupported optional features (%x).\n",
2630 printk(
KERN_ERR "EXT3-fs: %s: unsupported optional features in this volume: (%x).\n",
2653 sb->s_blocks_per_group - 1) /
sb->s_blocks_per_group;
2655 Vcb->max_data_blocks = 0;
2663 Vcb->max_data_blocks +=
Vcb->max_blocks_per_layer[
i];
2667 Vcb->sbi.s_gdb_count = (
Vcb->sbi.s_groups_count +
Vcb->sbi.s_desc_per_block - 1) /
2668 Vcb->sbi.s_desc_per_block;
2677 if (
Vcb->IsExt3fs) {
2693 if (!
Vcb->McbTree) {
2700 if (!
Vcb->sb.s_root) {
2705 Vcb->sb.s_root->d_sb = &
Vcb->sb;
2706 Vcb->sb.s_root->d_inode = &
Vcb->McbTree->Inode;
2707 Vcb->McbTree->de =
Vcb->sb.s_root;
2711 Vcb->McbTree->Inode.i_sb = &
Vcb->sb;
2745 if (InodeLookasideInitialized) {
2749 if (ExtentsInitialized) {
2750 if (
Vcb->bd.bd_bh_cache) {
2759 if (
Vcb->Volume->PrivateCacheMap) {
2765 if (NotifySyncInitialized) {
2769 if (VcbResourceInitialized) {
2804 if (
Stream->PrivateCacheMap) {
2834 if (
Vcb->bd.bd_bh_cache)
2838 if (
Vcb->SuperBlock) {
2845 DEBUG(
DL_DBG, (
"Ext2DestroyVcb: Vpb2 to be freed: %p\n",
Vcb->Vpb2));
2862 DEBUG(
DL_DBG, (
"Ext2DestroyVcb: DevObject=%p Vcb=%p\n",
Vcb->DeviceObject,
Vcb));
2886 &UninitializeCompleteEvent );
2909 DEBUG(
DL_RES, (
"Ext2LinkTailMcb: %wZ already linked.\n",
2936 DEBUG(
DL_RES, (
"Ext2LinkHeadMcb: %wZ already linked.\n",
2958 DEBUG(
DL_RES, (
"Ext2UnlinkMcb: %wZ already unlinked.\n",
2990 while (
i++ <
Vcb->NumOfMcb) {
3002 Mcb->Refercount == 0 &&
3088 }
else if (DidNothing) {
3125 GlobalAcquired =
TRUE;
3137 DEBUG(
DL_RES, (
"Ext2ReaperThread: releasing Mcb (%p): %wZ" 3138 " Total: %xh\n",
Mcb, &
Mcb->FullName,
3148 if (GlobalAcquired) {
3150 GlobalAcquired =
FALSE;
3156 if (GlobalAcquired) {
3246 }
else if (DidNothing) {
3266 GlobalAcquired =
TRUE;
3279 if (GlobalAcquired) {
3281 GlobalAcquired =
FALSE;
3295 if (GlobalAcquired) {
3331 if (
Fcb->ReferenceCount > 0) {
3338 if (
now.QuadPart <
Fcb->TsDrop.QuadPart + 10*1000*1000*120) {
3351 if (
start.QuadPart + 10*1000*1000 >
now.QuadPart) {
3356 if (++tries < (
Vcb->FcbCount >> 4) )
3394 }
else if (DidNothing) {
3414 GlobalAcquired =
TRUE;
3427 if (GlobalAcquired) {
3429 GlobalAcquired =
FALSE;
3443 if (GlobalAcquired) {
NTKERNELAPI NTSTATUS ExUuidCreate(OUT UUID *Uuid)
#define KeQuerySystemTime(t)
VOID Ext2InsertMcb(PEXT2_VCB Vcb, PEXT2_MCB Parent, PEXT2_MCB Child)
int kmem_cache_destroy(kmem_cache_t *kc)
struct _EXT2_FCB * PEXT2_FCB
ULONG Ext2CountExtents(IN PEXT2_EXTENT Chain)
struct _EXT2_EXTENT * Next
VOID NTAPI Ext2McbReaperThread(PVOID Context)
#define Ext2DerefMcb(Mcb)
#define IRP_CONTEXT_FLAG_VERIFY_READ
#define DEC_IRP_COUNT(IrpContext)
#define EXT4_MIN_DESC_SIZE
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
BOOLEAN Ext2QueryUnusedFcb(PEXT2_VCB Vcb, PLIST_ENTRY list)
#define EXT4_FEATURE_COMPAT_HAS_JOURNAL
ext4_fsblk_t ext4_inode_table(struct super_block *sb, struct ext4_group_desc *bg)
NPAGED_LOOKASIDE_LIST Ext2McbLookasideList
_In_ __drv_aliasesMem PSTRING Prefix
#define IRP_CONTEXT_FLAG_WAIT
#define STATUS_INSUFFICIENT_RESOURCES
#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE
_In_ ULONG _In_ ULONG _In_ ULONG Length
PEXT2_MCB Ext2SearchMcbWithoutLock(PEXT2_MCB Parent, PUNICODE_STRING FileName)
NTSTATUS Ext2DiskIoControl(IN PDEVICE_OBJECT DeviceOjbect, IN ULONG IoctlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, IN OUT PVOID OutputBuffer, IN OUT PULONG OutputBufferSize)
BOOLEAN Ext2AddMcbExtent(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN LONGLONG Vbn, IN LONGLONG Lbn, IN LONGLONG Length)
VOID Ext2FreeExtent(IN PEXT2_EXTENT Extent)
void buffer_head_remove(struct block_device *bdev, struct buffer_head *bh)
BOOLEAN Ext2RemoveMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb)
VOID Ext2DestroyVcb(IN PEXT2_VCB Vcb)
VOID Ext2CleanupAllMcbs(PEXT2_VCB Vcb)
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
#define OBJ_CASE_INSENSITIVE
PEXT2_EXTENT Ext2AllocateExtent()
#define PsGetCurrentThread()
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
#define DEC_MEM_COUNT(_i, _p, _s)
FSRTL_ADVANCED_FCB_HEADER Header
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
VOID NTAPI FsRtlInitializeFileLock(IN PFILE_LOCK FileLock, IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL, IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL)
VOID Ext2DestroyInode(IN PEXT2_VCB Vcb, IN PEXT2_INODE inode)
struct outqueuenode * head
IN BOOLEAN OUT PSTR Buffer
#define CEILING_ALIGNED(T, A, B)
LARGE_INTEGER Ext2NtTime(IN ULONG i_time)
VOID(NTAPI * EXT2_REAPER_RELEASE)(PVOID)
loff_t ext3_max_size(int blkbits, int has_huge_files)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
#define EXT2_FIRST_DATA_BLOCK
NPAGED_LOOKASIDE_LIST Ext2IrpContextLookasideList
VOID Ext2ParseRegistryVolumeParams(IN PUNICODE_STRING Params, OUT PEXT2_VOLUME_PROPERTY3 Property)
ext4_fsblk_t ext4_inode_bitmap(struct super_block *sb, struct ext4_group_desc *bg)
#define IRP_CONTEXT_FLAG_WRITE_THROUGH
VOID NTAPI FsRtlUninitializeFileLock(IN PFILE_LOCK FileLock)
PDEVICE_OBJECT DeviceObject
_In_ WDFDPC _In_ BOOLEAN Wait
void free_buffer_head(struct buffer_head *bh)
GLuint GLuint GLsizei count
VOID NTAPI FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb, IN LONGLONG Vbn, IN LONGLONG SectorCount)
#define VCB_JOURNAL_RECOVER
NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP, PULONG, ULONG)
#define IOCTL_DISK_CHECK_VERIFY
BOOLEAN Ext2AddBlockExtent(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Start, IN ULONG Block, IN ULONG Number)
VOID Ext2FreeFcb(IN PEXT2_FCB Fcb)
PEXT2_MCB Ext2AllocateMcb(IN PEXT2_VCB Vcb, IN PUNICODE_STRING FileName, IN PUNICODE_STRING Parent, IN ULONG FileAttr)
_Must_inspect_result_ _In_ LONGLONG _In_ LONGLONG Lbn
VOID Ext2FreeMcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
#define INC_IRP_COUNT(IrpContext)
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS NTAPI ExDeleteResourceLite(IN PERESOURCE Resource)
NPAGED_LOOKASIDE_LIST Ext2FcbLookasideList
static HANDLE ULONG_PTR dwData
#define Ext2ReferMcb(Mcb)
IN PVOID IN PVOID IN USHORT IN USHORT Size
#define RtlCheckBit(BMH, BP)
VOID Ext2ReleaseFcb(IN PEXT2_FCB Fcb)
NTSTATUS Ext2MapExtent(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Index, IN BOOLEAN Alloc, OUT PULONG Block, OUT PULONG Number)
EXT2_PERF_STATISTICS_V2 PerfStat
static CC_FILE_SIZES FileSizes
VOID NTAPI FsRtlUninitializeOplock(IN POPLOCK Oplock)
kmem_cache_t * kmem_cache_create(const char *name, size_t size, size_t offset, unsigned long flags, kmem_cache_cb_t ctor)
struct super_block * d_sb
PEXT2_MCB Ext2FirstUnusedMcb(PEXT2_VCB Vcb, BOOLEAN Wait, ULONG Number)
BOOLEAN NTAPI IoIsOperationSynchronous(IN PIRP Irp)
#define InsertTailList(ListHead, Entry)
struct _PARTITION_INFORMATION PARTITION_INFORMATION
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
NTSTATUS Ext2ProcessVolumeProperty(IN PEXT2_VCB Vcb, IN PEXT2_VOLUME_PROPERTY3 Property, IN ULONG Length)
#define OBJ_KERNEL_HANDLE
PEXT2_MCB Ext2SearchMcb(PEXT2_VCB Vcb, PEXT2_MCB Parent, PUNICODE_STRING FileName)
ULONG NTAPI FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID Ext2CheckExtent(PLARGE_MCB Zone, LONGLONG Vbn, LONGLONG Lbn, LONGLONG Length, BOOLEAN bAdded)
GLbitfield GLuint64 timeout
static int Link(const char **args)
PEXT2_FCB Ext2AllocateFcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
BOOLEAN Ext2IsDot(PUNICODE_STRING name)
#define FCB_DELETE_PENDING
BOOLEAN Ext2LookupVcbExtent(IN PEXT2_VCB Vcb, IN LONGLONG Vbn, OUT PLONGLONG Lbn, OUT PLONGLONG Length)
VOID NTAPI FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb, IN LONGLONG Vbn)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
#define EXT3_FORCEWRITING
#define VCB_REMOVABLE_MEDIA
NPAGED_LOOKASIDE_LIST Ext2CcbLookasideList
EXT2_IDENTIFIER_TYPE Type
#define EXT2_MIN_BLOCK_SIZE
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
NPAGED_LOOKASIDE_LIST Ext2DentryLookasideList
BOOLEAN NTAPI FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb, IN ULONG RunIndex, OUT PLONGLONG Vbn, OUT PLONGLONG Lbn, OUT PLONGLONG SectorCount)
struct dentry * Ext2AllocateEntry()
PDEVICE_OBJECT RealDevice
__GNU_EXTENSION typedef __int64 * PLONGLONG
CHAR sHidingPrefix[HIDINGPAT_LEN]
#define EXT4_MIN_DESC_SIZE_64BIT
BOOLEAN Ext2BuildName(IN OUT PUNICODE_STRING Target, IN PUNICODE_STRING File, IN PUNICODE_STRING Parent)
BOOLEAN Ext2CheckDismount(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN BOOLEAN bForce)
_In_ PDEVICE_OBJECT DeviceObject
NTFSIDENTIFIER Identifier
#define EXT2_REAPER_FLAG_STOP
NPAGED_LOOKASIDE_LIST Ext2ExtLookasideList
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
BOOLEAN Ext2LookupBlockExtent(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Start, IN PULONG Block, IN PULONG Mapped)
VOID NTAPI Ext2bhReaperThread(PVOID Context)
BOOLEAN Ext2AddVcbExtent(IN PEXT2_VCB Vcb, IN LONGLONG Vbn, IN LONGLONG Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
#define STATUS_UNRECOGNIZED_VOLUME
BOOLEAN Ext2LoadGroup(IN PEXT2_VCB Vcb)
#define FILE_REMOVABLE_MEDIA
VOID Ext2TearDownStream(IN PEXT2_VCB Vcb)
BOOLEAN Ext2RemoveBlockExtent(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Start, IN ULONG Number)
static void fini_bh(struct buffer_head **bh)
VOID NTAPI FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb, IN POOL_TYPE PoolType)
NTSTATUS Ext2UnicodeToOEM(IN PEXT2_VCB Vcb, IN OUT POEM_STRING Oem, IN PUNICODE_STRING Unicode)
VOID Ext2DropBH(IN PEXT2_VCB Vcb)
void mark_buffer_dirty(struct buffer_head *bh)
#define IsFileDeleted(Mcb)
#define INC_MEM_COUNT(_i, _p, _s)
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
VOID Ext2JointExtents(IN PEXT2_EXTENT Chain, IN PEXT2_EXTENT Extent)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
#define SL_OVERRIDE_VERIFY_VOLUME
struct _EXT2_CCB EXT2_CCB
BOOLEAN Ext2LoadInode(IN PEXT2_VCB Vcb, IN struct inode *Inode)
#define ClearLongFlag(_F, _SF)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
#define EXT4_FEATURE_INCOMPAT_64BIT
VOID Ext2DestroyExtentChain(IN PEXT2_EXTENT Chain)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
PFILE_OBJECT NTAPI IoCreateStreamFileObject(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define FILE_ATTRIBUTE_DIRECTORY
#define VCB_RO_COMPAT_READ_ONLY
EXT2_IDENTIFIER Identifier
struct ext4_group_desc * ext4_get_group_desc(struct super_block *sb, ext4_group_t block_group, struct buffer_head **bh)
#define EXT3_HAS_COMPAT_FEATURE(sb, mask)
struct _EXT2_FCB EXT2_FCB
VOID Ext2InsertFcb(PEXT2_VCB Vcb, PEXT2_FCB Fcb)
static struct buffer_head * sb_getblk(struct super_block *sb, sector_t block)
struct _LIST_ENTRY * Flink
asmlinkage int printk(const char *fmt,...)
VOID Ext2LinkHeadMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb)
PEXT2_IRP_CONTEXT Ext2AllocateIrpContext(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_Must_inspect_result_ _In_ ULONG Flags
VOID NTAPI FsRtlTeardownPerStreamContexts(IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader)
VOID NTAPI ExInitializeNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
VOID NTAPI Ext2FcbReaperThread(PVOID Context)
#define NT_SUCCESS(StatCode)
struct ext2_icb EXT2_IRP_CONTEXT
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
_In_ WDFCOLLECTION _In_ ULONG Index
#define EXCEPTION_EXECUTE_HANDLER
BOOLEAN Ext2QueryUnusedBH(PEXT2_VCB Vcb, PLIST_ENTRY head)
VOID NTAPI FsRtlInitializeOplock(IN OUT POPLOCK Oplock)
#define IRP_MJ_FILE_SYSTEM_CONTROL
NTSTATUS Ext2InitializeZone(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
#define IsMcbSymLink(Mcb)
#define ObDereferenceObject
#define EXT2_SUPPORT_WRITING
ULONG Ext2UnicodeToOEMSize(IN PEXT2_VCB Vcb, IN PUNICODE_STRING Unicode)
#define EXT3_HAS_RO_COMPAT_FEATURE(sb, mask)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
#define EXT2_VPROP3_USERIDS
PIRP NTAPI IoGetTopLevelIrp(VOID)
NTSTATUS Ext2PerformRegistryVolumeParams(IN PEXT2_VCB Vcb)
VOID NTAPI Ext2StopReaper(PEXT2_REAPER Reaper)
#define INODE_HAS_EXTENT(i)
#define EXT3_GOOD_OLD_REV
VOID Ext2FreeEntry(IN struct dentry *de)
NTSTATUS Ext2BuildExtents(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONGLONG Offset, IN ULONG Size, IN BOOLEAN bAlloc, OUT PEXT2_EXTENT *Chain)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
BOOLEAN Ext2LookupMcbExtent(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN LONGLONG Vbn, OUT PLONGLONG Lbn, OUT PLONGLONG Length)
BOOLEAN NTAPI FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb, IN LONGLONG Vbn, IN LONGLONG Lbn, IN LONGLONG SectorCount)
#define STATUS_UNSUCCESSFUL
#define VCB_WRITE_PROTECTED
loff_t ext3_max_bitmap_size(int bits, int has_huge_files)
BOOLEAN Ext2ListExtents(PLARGE_MCB Extents)
#define EXT3_HAS_INCOMPAT_FEATURE(sb, mask)
VOID Ext2FreeCcb(IN PEXT2_VCB Vcb, IN PEXT2_CCB Ccb)
#define IOCTL_DISK_GET_PARTITION_INFO
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
#define EXT2_CHECKING_BITMAP
#define EXT2_VOLUME_PROPERTY_MAGIC
NTSTATUS Ext2QueryVolumeParams(IN PEXT2_VCB Vcb, IN PUNICODE_STRING Params)
#define ExAllocatePool(type, size)
#define EXT4_FEATURE_INCOMPAT_SUPP
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define memcpy(s1, s2, n)
#define EXT4_MAX_DESC_SIZE
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
LARGE_INTEGER ValidDataLength
static __inline BOOLEAN Ext2IsNullUuid(__u8 *uuid)
VOID Ext2FreeIrpContext(IN PEXT2_IRP_CONTEXT IrpContext)
#define IsDispending(Vcb)
struct _EXT2_GLOBAL::@674 Codepage
#define RTL_REGISTRY_ABSOLUTE
int _cdecl swprintf(const WCHAR *,...)
#define EXT3_FORCE_WRITING
struct _EXT2_MCB EXT2_MCB
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
NTSTATUS Ext2OEMToUnicode(IN PEXT2_VCB Vcb, IN OUT PUNICODE_STRING Oem, IN POEM_STRING Unicode)
struct dentry * Ext2BuildEntry(PEXT2_VCB Vcb, PEXT2_MCB Dcb, PUNICODE_STRING FileName)
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
_In_ ULONG _In_ ULONG Offset
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
BOOLEAN Ext2AddMcbMetaExts(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Block, IN ULONG Length)
ext4_fsblk_t ext4_block_bitmap(struct super_block *sb, struct ext4_group_desc *bg)
VOID Ext2InsertVcb(PEXT2_VCB Vcb)
BOOLEAN NTAPI FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb, IN LONGLONG Vbn, OUT PLONGLONG Lbn OPTIONAL, OUT PLONGLONG SectorCountFromLbn OPTIONAL, OUT PLONGLONG StartingLbn OPTIONAL, OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL, OUT PULONG Index OPTIONAL)
static unsigned __int64 next
#define KeInitializeEvent(pEvt, foo, foo2)
LARGE_INTEGER AllocationSize
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
ULONG Ext2Log2(ULONG Value)
#define InitializeListHead(ListHead)
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
NTSTATUS NTAPI PsTerminateSystemThread(IN NTSTATUS ExitStatus)
#define SetLongFlag(_F, _SF)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define EXT3_INODES_PER_GROUP(s)
struct ext2_icb * PEXT2_IRP_CONTEXT
NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP, ULONG, ULONG)
VOID NTAPI FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
#define FILE_ATTRIBUTE_HIDDEN
BOOLEAN Ext2CheckSetBlock(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, LONGLONG Block)
VOID Ext2LinkTailMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb)
NTSTATUS Ext2MapIndirect(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Index, IN BOOLEAN bAlloc, OUT PULONG pBlock, OUT PULONG Number)
NTSTATUS Ext2BlockMap(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Index, IN BOOLEAN bAlloc, OUT PULONG pBlock, OUT PULONG Number)
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
BOOLEAN Ext2RemoveVcbExtent(IN PEXT2_VCB Vcb, IN LONGLONG Vbn, IN LONGLONG Length)
BOOLEAN Ext2RemoveMcbMetaExts(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Block, IN ULONG Length)
#define EXT2_GOOD_OLD_INODE_SIZE
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
#define EXT2_MAX_USER_BLKSIZE
VOID Ext2SyncUninitializeCacheMap(IN PFILE_OBJECT FileObject)
VOID Ext2ClearAllExtents(PLARGE_MCB Zone)
#define VCB_BEING_DROPPED
#define IsMcbSpecialFile(Mcb)
VOID NTAPI FsRtlNotifyInitializeSync(IN PNOTIFY_SYNC *NotifySync)
struct tagContext Context
#define ObReferenceObject
#define STATUS_DISK_CORRUPT_ERROR
VOID Ext2PutGroup(IN PEXT2_VCB Vcb)
PEXT2_INODE Ext2AllocateInode(PEXT2_VCB Vcb)
#define APP_CMD_SET_PROPERTY3
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
UNICODE_STRING RegistryPath
ERESOURCE PagingIoResource
INT Ext2RecoverJournal(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
BOOLEAN Ext2RemoveMcbExtent(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN LONGLONG Vbn, IN LONGLONG Length)
#define InitializeObjectAttributes(p, n, a, r, s)
PEXT2_CCB Ext2AllocateCcb(ULONG Flags, PEXT2_MCB SymLink)
VOID Ext2FreePool(IN PVOID P, IN ULONG Tag)
#define RtlCopyMemory(Destination, Source, Length)
VOID NTAPI FsRtlNotifyUninitializeSync(IN PNOTIFY_SYNC *NotifySync)
#define _SEH2_EXCEPT(...)
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
#define EXT4_FEATURE_RO_COMPAT_SUPP
#define EXT4_FEATURE_INCOMPAT_DIRDATA
BOOLEAN Ext2IsDotDot(PUNICODE_STRING name)
BOOLEAN Ext2CheckBitmapConsistency(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb)
struct _EXT2_MCB * PEXT2_MCB
_Must_inspect_result_ _In_ PCUNICODE_STRING Name2
IN PDCB IN POEM_STRING OemName