Author: pschweitzer
Date: Sun Jun 4 11:47:34 2017
New Revision: 74901
URL: http://svn.reactos.org/svn/reactos?rev=74901&view=rev
Log:
[UDFS]
Enable the UDFS driver on ReactOS. It will be started "on demand" by the FS_REC driver when an UDF
formatted volume is inserted.
It's not bug free (yet? ;-)). It seems to show issues when trying to start an executable, it locks
and never release DVD (ie, you've to force ejection) and you might face deadlocks.
But, for the basics, you can open an UDF volume, browse it, and display files.
CORE-4375
Added:
trunk/reactos/drivers/filesystems/udfs/udfs_reg.inf (with props)
Modified:
trunk/reactos/drivers/filesystems/udfs/CMakeLists.txt
Modified: trunk/reactos/drivers/filesystems/udfs/CMakeLists.txt
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/udfs/C…
==============================================================================
--- trunk/reactos/drivers/filesystems/udfs/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/udfs/CMakeLists.txt [iso-8859-1] Sun Jun 4 11:47:34 2017
@@ -55,3 +55,4 @@
add_importlibs(udfs ntoskrnl hal)
add_pch(udfs udffs.h SOURCE)
add_cd_file(TARGET udfs DESTINATION reactos/system32/drivers NO_CAB FOR all)
+add_registry_inf(udfs_reg.inf)
Added: trunk/reactos/drivers/filesystems/udfs/udfs_reg.inf
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/udfs/u…
==============================================================================
--- trunk/reactos/drivers/filesystems/udfs/udfs_reg.inf (added)
+++ trunk/reactos/drivers/filesystems/udfs/udfs_reg.inf [iso-8859-1] Sun Jun 4 11:47:34 2017
@@ -0,0 +1,7 @@
+; UDF filesystem driver
+[AddReg]
+HKLM,"SYSTEM\CurrentControlSet\Services\Udfs","ErrorControl",0x00010001,0x00000000
+HKLM,"SYSTEM\CurrentControlSet\Services\Udfs","Group",0x00000000,"File System"
+HKLM,"SYSTEM\CurrentControlSet\Services\Udfs","ImagePath",0x00020000,"system32\drivers\udfs.sys"
+HKLM,"SYSTEM\CurrentControlSet\Services\Udfs","Start",0x00010001,0x00000003
+HKLM,"SYSTEM\CurrentControlSet\Services\Udfs","Type",0x00010001,0x00000002
Propchange: trunk/reactos/drivers/filesystems/udfs/udfs_reg.inf
------------------------------------------------------------------------------
svn:eol-style = native
Author: pschweitzer
Date: Sun Jun 4 10:32:51 2017
New Revision: 74900
URL: http://svn.reactos.org/svn/reactos?rev=74900&view=rev
Log:
[UDFS]
Add UFDS to bootcd, so that it can be installed on disk
CORE-4375
Modified:
trunk/reactos/boot/bootdata/txtsetup.sif
Modified: trunk/reactos/boot/bootdata/txtsetup.sif
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/txtsetup.sif…
==============================================================================
--- trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] (original)
+++ trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] Sun Jun 4 10:32:51 2017
@@ -70,6 +70,7 @@
btrfs.sys=,,,,,,x,,,,,,4
reiserfs.sys=,,,,,,x,,,,,,4
ffs.sys=,,,,,,x,,,,,,4
+udfs.sys=,,,,,,x,,,,,,4
[SystemPartitionFiles]
Author: pschweitzer
Date: Sun Jun 4 08:02:01 2017
New Revision: 74897
URL: http://svn.reactos.org/svn/reactos?rev=74897&view=rev
Log:
[UDFS]
lolfix some deadlocks in UDFS:
- deadlock when enumerating files
- deadlock on shutdown after volume change
I could track it to the fact that for whatever reason, GCC wrongly optimize the
BOOLEAN used to store whether the VCB resource was acquired. The optimization being
to assume it's always FALSE. Thus, the resource is never released and the driver
ends in a deadlock.
To avoid this: marked the BOOLEAN variables as volatile.
I guess there are same kind deadlocks I couldn't see in my limited tests...
CORE-4375
Modified:
trunk/reactos/drivers/filesystems/udfs/close.cpp
trunk/reactos/drivers/filesystems/udfs/create.cpp
Modified: trunk/reactos/drivers/filesystems/udfs/close.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/udfs/c…
==============================================================================
--- trunk/reactos/drivers/filesystems/udfs/close.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/udfs/close.cpp [iso-8859-1] Sun Jun 4 08:02:01 2017
@@ -1109,7 +1109,7 @@
{
PtrUDFIrpContextLite IrpContextLite;
BOOLEAN StartWorker = FALSE;
- BOOLEAN AcquiredVcb = FALSE;
+ volatile BOOLEAN AcquiredVcb = FALSE;
NTSTATUS RC;
AdPrint((" UDFQueueDelayedClose\n"));
Modified: trunk/reactos/drivers/filesystems/udfs/create.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/udfs/c…
==============================================================================
--- trunk/reactos/drivers/filesystems/udfs/create.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/udfs/create.cpp [iso-8859-1] Sun Jun 4 08:02:01 2017
@@ -205,7 +205,7 @@
PACCESS_STATE AccessState;
PVCB Vcb = NULL;
- BOOLEAN AcquiredVcb = FALSE;
+ volatile BOOLEAN AcquiredVcb = FALSE;
BOOLEAN OpenExisting = FALSE;
PERESOURCE Res1 = NULL;
PERESOURCE Res2 = NULL;