Pierre Schweitzer
5d743b7bd7
[FASTFAT] When attaching our FCB to a FO, also set the VPB.
...
Spotted by Alex.
2018-05-18 10:30:52 +02:00
Peter Wathall
ae9cc6bb52
Fixed typo
2018-05-17 16:15:25 +01:00
Peter Wathall
6412253d44
Fixed typo
2018-05-17 16:15:25 +01:00
Peter Wathall
3a3a4f7970
Fixed typo
2018-05-17 16:15:25 +01:00
Pierre Schweitzer
d37280efaa
[FASTFAT] Deny dismounting system volume or a volume with a pagefile
2018-05-16 21:45:35 +02:00
Thomas Faber
ccaf7b24c3
[NDIS] Fix parameter order when calling ResetHandler. CORE-14624
2018-05-14 18:17:52 +02:00
Pierre Schweitzer
38078335b9
[FASTFAT] Implement support for stack overflow in read operations.
...
Before performing a read operation, FastFAT driver will
attempt to compute whether it would run out of stack
during the operation. If so, instead of attempting the
operation in the current thread, it will post the read
request to the overflow thread.
This should help with the regressions brought in by
94ead99e0c
.
CORE-14601
2018-05-12 12:03:18 +02:00
Thomas Faber
0ce31759d0
[USBPORT] Fix x64 build.
2018-05-12 10:11:21 +02:00
Vadim Galyant
c89a190ea6
[USBPORT][USBOHCI_NEW] Avoid using pointers for physical addresses.
2018-05-11 15:46:25 +02:00
Thomas Faber
837411e292
[USBOHCI_NEW] Fix build.
2018-05-11 15:44:19 +02:00
Serge Gautherie
b893124a20
[NTFS] Fix 2 Clang-Cl warnings about CurrentKey->IndexEntry->Flags
...
"warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses]"
CORE-14306
2018-05-04 08:08:45 +02:00
Pierre Schweitzer
2a7d16727a
[FASTFAT] Implement write IOs defering.
...
Before any write operation that would involve caching, ask
the cache controler whether writing would make it exceed its memory
consumption. If so, queue the write operation for later execution.
In case the write operation can wait, then, the FSD operation will be
halted until the write is allowed.
I could test it successfully by copying huge files from a FAT volume to
another. The write is halted until some portions of the file is written
to the disk.
I could also properly install Qt (SDK) on ReactOS with this and less than 1GB RAM:
- https://www.heisspiter.net/~Pierre/rostests/Qt_OS.png
- https://www.heisspiter.net/~Pierre/rostests/Qt_OS2.png
CORE-12081
CORE-14582
CORE-14313
2018-04-29 20:42:53 +02:00
Pierre Schweitzer
00e843b1ed
[FASTFAT] Reduce the number of local declaration.
2018-04-29 12:33:53 +02:00
Pierre Schweitzer
fd8197645f
[FASTFAT] Use KdRosRegisterCliCallback() to register in KDBG.
2018-04-29 12:23:18 +02:00
Pierre Schweitzer
c5a35ecd37
[FASTFAT] Introduce a KDBG extension.
...
This is a PoC of what it's possible to realize thanks to an
already existing hack in ntoskrnl :-).
With this extension, on the kdb:> prompt, you're able to type
in commands that will be handled by the FastFAT driver and not
by the kernel, allowing internal debug, not possible otherwise.
So far, three commands exist:
- ?fat.vols: lists all the mounted volumes by FastFAT
- ?fat.files: lists all the files on a specific volume (with their attributes)
- ?fat.setdbgfile: allows watching on specifics files lifetime
This is obviously only the begin and could be greatly improved.
For instance, this is what allowed to debug CORE-14557
2018-04-29 12:15:11 +02:00
Pierre Schweitzer
94ead99e0c
[FASTFAT] Don't leak directories FILE_OBJECT, FCB and cache entries.
...
Once a directory is crossed (opened or a child is opened), associated
FCB structure is created in FastFAT, but also a stream FO for caching.
Up to now, due to an extra reference taken by the stream file object,
even when the directory was no longer used, the directory was kept in
memory: the FCB was never deleted, the file object was never dereferenced,
and the cache never released.
The immediate effect of this bug is that our FAT driver was leaking every
directory that was used affecting the whole OS situation. In case of
directories intensive operation (like extraction the ReactOS source code
in ReactOS ;-)), we were just killin the whole OS RAM without any way to
release it and recover.
The other side effects: IOs were faster as half of the FS was always
permanant in RAM.
This commit fixes the issue by forcing the FSD to release the FO,
and the cache when a directory is no longer used, leading to its
destruction in RAM.
Downside: on IO intensive operation, expect slowdowns, obviously,
there's less caching now. But more efficient!
CORE-14557
2018-04-28 18:33:14 +02:00
Pierre Schweitzer
315f9a13d4
[FASTFAT] When allocating a FCB, set its node type code.
...
We set the same value as MS FastFAT driver for consistency.
2018-04-27 18:56:31 +02:00
Peter Wathall
9e2dd8676a
Removed unreachable line ( #517 )
...
The break statement was unnecessary because the goto on the line before it returns from the routine so it can never be reached
2018-04-24 21:35:23 +01:00
Hermès Bélusca-Maïto
da5dcdcbf2
[NULL] Additions for the Null driver.
...
- Allow the driver to be unloaded, as on Windows.
- Use a static fast IO dispatch table, instead of allocating one and
risking any potential memory allocation failure.
- Update the file header.
2018-04-22 22:23:54 +02:00
Hermès Bélusca-Maïto
2183e65c17
[ACPI] Fix the format of the (default hardcoded) "unique" instance ID.
2018-04-22 16:52:42 +02:00
Pierre Schweitzer
c7bba39afc
[NTFS] When reading $I30 attribute fails, stop the rename operation.
...
This makes the function return the error instead of continuing and
performing use-after-frees operations.
This is likely to be a forgotten return!
CID 1434254, 1434268
2018-04-14 11:43:57 +02:00
Timo Kreuzer
6b1ca75899
[REACTOS] Fix 64 bit build ( #465 )
...
* [HAL] Simplify HalpReboot() and make it portable
* [NTOS:MM] Cast constant to PVOID
* [BINPATCH] Fix 64 bit build
* [VFDDRV] Fix 64 bit build and buffer overruns
* [USBOHCI] Fix structure alignment issues
* [ATL_APITEST] Fix 64 bit build
* [XDK] Update unwind structures in winnt.h
* [NTDLL_APITEST] Fix 64 bit build
* [NTDLL_WINETEST] Fix 64 bit build
* [TFTPD] Fix x64 build
* [USBPORT] Fix a C_ASSERT
* [DSOUND] Fix x64 build
* [HAL] Remove obsolete GetPteAddress() macro
2018-04-03 15:13:17 -06:00
Colin Finck
765280bf5f
Merge PR #283 "[USBPORT] Transaction Translator (TT) support bringup"
2018-03-29 23:52:22 +02:00
Thomas Faber
851a554b59
[USBHUB_NEW] Fix USBH_CheckDeviceIDUnique return value.
2018-03-27 08:59:54 +02:00
Nikita Krapivin
10645167b8
[I8042PRT] Enable keyboard clock explicitly (fixes Lenovo ACPI bug). CORE-14256 ( #434 )
2018-03-21 22:07:30 +01:00
Mark Jansen
8b84b1c6b3
[AFD] Mark the socket as named pipe, so NtWriteFile actually knows what to do with it.
...
CORE-13067
2018-03-21 19:22:13 +01:00
Mark Jansen
9168226378
[AFD] Respond to FileFsDeviceInformation.
...
CORE-13067
2018-03-21 19:22:13 +01:00
Bișoc George
1a951aa4e6
[BUS][ACPI] Silence DPRINT1 in the special case of IOCTL_BATTERY_QUERY_TAG ( #427 )
2018-03-12 15:29:14 +01:00
Eric Kohl
ca22dc9bb5
[STORPORT][DDK] Add the StorPortExtendedFunction stub
...
- Add the StorPortExtendedFunction stub to the storport driver.
- Add the declaration of StorPortExtendedFunction to the ddk.
CORE-12695
2018-03-03 14:19:33 +01:00
Pierre Schweitzer
1986049a38
[CDFS_NEW] Sync with HEAD.
...
CORE-14315
2018-02-25 10:14:27 +01:00
Vadim Galyant
62612a7e45
[USBPORT] Use USB2_HS_INTERRUPT_IN_OVERHEAD instead USB2_HS_ISOCHRONOUS_OUT_OVERHEAD.
2018-02-21 13:35:25 +09:00
Pierre Schweitzer
69f51d1533
[FASTFAT] Drop read ahead locking routines in favor of lazy writer routines.
...
This avoids code duplication while being consistent with MS FastFAT.
2018-02-17 13:49:15 +01:00
Doug Lyons
8ea42001d9
[I8042PRT] Apply a workaround for Dell Latitude D610
...
CORE-14324
2018-02-15 22:49:39 +01:00
Pierre Schweitzer
a5e89014dc
[CDFS_NEW] Fix a bug in Microsoft CDFS implementation where the top level IRP
...
is set before locking is actually attempted for Cc worker thread (lazy write/read ahead).
So in case locking fails, the top level IRP is set and never unset, and latter
call will hit the assert where it expects the top level IRP to be NULL.
Should be reported upstream (tm).
CORE-14315
2018-02-12 20:47:32 +01:00
Vadim Galyant
11772da783
[USBPORT] Small changes for debugging.
2018-01-26 20:46:34 +09:00
Vadim Galyant
f37a3dc42f
[USBPORT] Add USB2_BIT_STUFFING_OVERHEAD constant.
2018-01-22 14:15:57 +09:00
Vadim Galyant
797ebcab72
[USBPORT] Fixing use DeviceSpeed instead Direction.
2018-01-21 19:36:01 +01:00
Vadim Galyant
a4dee8e3ac
[USBPORT] Add a space in indentation.
2018-01-21 19:36:00 +01:00
Vadim Galyant
ecd0097e37
[USBPORT] Delete DPRINTs.
2018-01-21 19:36:00 +01:00
Vadim Galyant
0f8079df3a
[USBPORT] Add USB2_PREV_MICROFRAME constant.
2018-01-21 19:35:59 +01:00
Vadim Galyant
fd5beb5593
[USBPORT] Moving array CMASKS[] to start file.
2018-01-21 19:35:59 +01:00
Vadim Galyant
2c73523b76
[USBPORT] Removing optional braces.
2018-01-21 19:35:59 +01:00
Vadim Galyant
c86210e800
[USBPORT] Correcting check Period.
2018-01-21 19:35:58 +01:00
Vadim Galyant
dd1297f0d0
[USBPORT] Use min(), max() macro.
2018-01-21 19:35:58 +01:00
Vadim Galyant
ab88f25048
[USBPORT] Check Period instead Factor.
2018-01-21 19:35:58 +01:00
Vadim Galyant
954cc021da
[USBPORT] Proper naming.
2018-01-21 19:35:57 +01:00
Vadim Galyant
18f4fc71c8
[USBPORT] Use min() macro.
2018-01-21 19:35:57 +01:00
Vadim Galyant
9426d2986d
[USBPORT] Fixing calculation pointer for FdoExtension->Usb2Extension.
2018-01-21 19:35:56 +01:00
Vadim Galyant
7b92b8a6e2
[USBPORT] Implement USBPORT_FreeBandwidthUSB2().
2018-01-21 19:35:56 +01:00
Vadim Galyant
57f092106a
[USBPORT] Correcting USB2_DeallocateEndpointBudget().
2018-01-21 19:35:56 +01:00
Vadim Galyant
bc9046c635
[USBPORT] Implement USB2_PromotePeriods().
2018-01-21 19:35:55 +01:00
Vadim Galyant
0558635f98
[USBPORT] Add USB2_ChangePeriod().
2018-01-21 19:35:55 +01:00
Vadim Galyant
69406c2628
[USBPORT] Implement USB2_DeallocateEndpointBudget().
2018-01-21 19:35:54 +01:00
Vadim Galyant
5ad7a2faa5
[USBPORT] Implement USB2_RebalanceEndpoint().
2018-01-21 19:35:54 +01:00
Vadim Galyant
522c0d3c69
[USBPORT] Implement USB2_Rebalance().
2018-01-21 19:35:54 +01:00
Vadim Galyant
5d12e3040c
[USBPORT] Add stub for USB2_RebalanceEndpoint().
2018-01-21 19:35:53 +01:00
Vadim Galyant
bbbcb1dc75
[USBPORT] Rename variables only in USB2_AllocateTimeForEndpoint().
2018-01-21 19:35:53 +01:00
Vadim Galyant
3ba9fffbb2
[USBPORT] Start implementation USB2_DeallocateEndpointBudget().
2018-01-21 19:35:53 +01:00
Vadim Galyant
3031695100
[USBPORT] Add USB2_CommonFrames().
2018-01-21 19:35:52 +01:00
Vadim Galyant
ae800da85b
[USBPORT] Implement USB2_MoveTtEndpoint().
2018-01-21 19:35:52 +01:00
Vadim Galyant
c48093573b
[USBPORT] Implement USB2_DeallocateHS().
2018-01-21 19:35:51 +01:00
Vadim Galyant
00dd0c67b6
[USBPORT] Correcting USB2_AllocateHS().
2018-01-21 19:35:51 +01:00
Vadim Galyant
1926238056
[USBPORT] Reduces output of debug messages.
2018-01-21 19:35:51 +01:00
Vadim Galyant
5ffefbe945
[USBPORT] Add USB2_GetCMASK().
2018-01-21 19:35:50 +01:00
Vadim Galyant
f3c869a16b
[USBPORT] Add USB2_GetSMASK()and USB2_ConvertFrame().
2018-01-21 19:35:50 +01:00
Vadim Galyant
df44bc6d84
[USBPORT] Add stub for USB2_MoveTtEndpoint().
2018-01-21 19:35:50 +01:00
Vadim Galyant
ab5810576f
[USBPORT] Add stub for USB2_DeallocateHS().
2018-01-21 19:35:49 +01:00
Vadim Galyant
8b9d5d1514
[USBPORT] Correcting USB2_InitTtEndpoint().
2018-01-21 19:35:49 +01:00
Vadim Galyant
e262bb610d
[USBPORT] End implementation USB2_AllocateTimeForEndpoint().
2018-01-21 19:35:49 +01:00
Vadim Galyant
2be475db5d
[USBPORT] Correcting USB2_GetStartTime().
2018-01-21 19:35:48 +01:00
Vadim Galyant
7553e54199
[USBPORT] Start implementation USB2_AllocateTimeForEndpoint().
2018-01-21 19:35:48 +01:00
Vadim Galyant
65f8f961a3
[USBPORT] Continue implementation USBPORT_AllocateBandwidthUSB2().
2018-01-21 19:35:47 +01:00
Vadim Galyant
67138e7d54
[USBPORT] Use ExFreePoolWithTag() instead ExFreePool() for TtExtension. Add debug info.
2018-01-21 19:35:47 +01:00
Vadim Galyant
3bda39fcb8
[USBPORT] Add USBPORT_DumpingEndpointProperties() and USBPORT_DumpingTtEndpoint().
2018-01-21 19:35:47 +01:00
Vadim Galyant
698f092ab1
[USBPORT] Implement USB2_AllocateHS().
2018-01-21 19:35:46 +01:00
Vadim Galyant
720d7cfd9b
[USBPORT] Add USB2_GetHsOverhead().
2018-01-21 19:35:46 +01:00
Vadim Galyant
2d4bd7b744
[USBPORT] Reduces output of debug messages.
2018-01-21 19:35:46 +01:00
Vadim Galyant
816b3a572c
[USBPORT] Remove unnecessary semicolon.
2018-01-21 19:35:45 +01:00
Vadim Galyant
5654674e8c
[USBPORT] Add stubs for USB2_AllocateHS() and USB2_DeallocateEndpointBudget().
2018-01-21 19:35:45 +01:00
Vadim Galyant
e39b88e3e7
[USBPORT] Add USB2_GetPrevMicroFrame().
2018-01-21 19:35:45 +01:00
Vadim Galyant
71a7208f69
[USBPORT] Add USB2_IncMicroFrame().
2018-01-21 19:35:44 +01:00
Vadim Galyant
22b8777f84
[USBPORT] Add USB2_GetStartTime().
2018-01-21 19:35:44 +01:00
Vadim Galyant
0216b033cc
[USBPORT] Add USB2_GetLastIsoTime().
2018-01-21 19:35:44 +01:00
Vadim Galyant
c3803bed8a
[USBPORT] Add USB2_CheckTtEndpointInsert().
2018-01-21 19:35:43 +01:00
Vadim Galyant
e701da4923
[USBPORT] Add USB2_AllocateCheck().
2018-01-21 19:35:43 +01:00
Vadim Galyant
c034297f2d
[USBPORT] Add USB2_AddDataBitStuff().
2018-01-21 19:35:43 +01:00
Vadim Galyant
754f749cfd
[USBPORT] Add USB2_GetOverhead().
2018-01-21 19:35:42 +01:00
Vadim Galyant
c2ae849dab
[USBPORT] Start implementation USBPORT_AllocateBandwidthUSB2().
2018-01-21 19:35:42 +01:00
Vadim Galyant
02d1cfd37f
[USBPORT] Change debug message in USBPORT_RemoveDevice(().
2018-01-21 19:35:41 +01:00
Vadim Galyant
5e15ba48b9
[USBPORT] Add support for transaction translators in USBPORT_RemoveDevice().
2018-01-21 19:35:41 +01:00
Vadim Galyant
cbba6e80fc
[USBPORT] Correcting USBPORT_InitializeDevice() and USBPORT_RestoreDevice() (DEVICE_HANDLE_FLAG_USB2HUB).
2018-01-21 19:35:41 +01:00
Vadim Galyant
664e48cad5
[USBPORT] Implement USBPORT_FreeBandwidth().
2018-01-21 19:35:40 +01:00
Vadim Galyant
aae6dd6073
[USBPORT] Implement USBPORT_AllocateBandwidth().
2018-01-21 19:35:40 +01:00
Vadim Galyant
c6ca2a8f02
[USBPORT] Add support for transaction translators in USBPORT_OpenPipe() and USBPORT_ClosePipe().
2018-01-21 19:35:40 +01:00
Vadim Galyant
7c398f6eb7
[USBPORT] Initialize FdoExtension->Bandwidth[] in USBPORT_StartDevice().
2018-01-21 19:35:39 +01:00
Vadim Galyant
0f8425ed44
[USBPORT] Add USBPORT_GetTt().
2018-01-21 19:35:39 +01:00
Vadim Galyant
c92f591144
[USBPORT] Add support for transaction translators in USBPORT_CreateDevice().
2018-01-21 19:35:39 +01:00
Vadim Galyant
3fcbd7744c
[USBPORT] Add support for transaction translators in USBPORT_OpenPipe().
2018-01-21 19:35:38 +01:00
Vadim Galyant
e48d6136ec
[USBPORT] Add USBPORT_UpdateAllocatedBwTt().
2018-01-21 19:35:38 +01:00
Vadim Galyant
18702047a1
[USBPORT] Implement USBPORT_InitializeTT().
2018-01-21 19:35:38 +01:00