cancel
Showing results for 
Search instead for 
Did you mean: 

Why can't Oculus software be installed on a Dynamic Disk?

Lil_Guard_Dog
Explorer
It seems that if your computer uses only "Dynamic Disks" the installation software will halt and give you an error that states:

"Not Enough Space
Oculus requires 2.85GB on an internal drive to set up.  To continue, please make sure you have sufficient space on an eligible drive, or visit Oculus Support to learn more."

Upon which the only option for you to click is quit.

To make matters even more silly, I currently have 3 HDD's in my PC, all are internal drives, and one is a SSD.
In total, I have them split into 5 partitions as follows, with listed free space/total space.

C = 157GB free of 223GB (System Drive/SSD)
D = 222GB free of 223GB (Simple Volume on 3rd HDD)
E: = 222GB free of 223GB (Simple Volume on 3rd HDD)
F = 1.43TB free of 1.81TB (Striped Volume using entire 2nd HDD and duplicated size partition on 3rd HDD)
G = 90.5 GB free of 1.38TB (Simple Volume on 3rd HDD)

All 3 internal drives are set as Dynamic Drives.  Thus the Oculus Setup software deems them as not eligible, and does not allow me to install, thus rendering my Oculus into an expensive paperweight.

In order to convert any of the disks to a Basic drive, I would have to entirely wipe/format the entire drive and convert it, thus losing all information on the drive, which would be very problematic if I was to do my System drive, and if I try converting either of the other two physical drives, then I would then lose the ability to have the striped volume, rendering my current backup/restore/file structure of my entire computer useless.

It seems, that to install 2.85 GB of driver software for a display, I have to buy a new hard drive, simply to install *ONLY* the software for this device.

What possibly could be the reason why Oculus cannot support a dynamic disk, when I have encountered no other program in my entire life of beta/alpha testing for various companies, that required ONLY a basic disk in order to be installed?

(And yes, I know there is some software out there that will allow you to convert a Dynamic Disk to a Basic disk, however none of them will work if the disk that you want to convert is labeled as a system disk, or if it has spanned/striped volumes.  Even if you only have mirrored volumes, you have to break the mirror connection in order to convert.)

It also seems that every issue through the 100 pages of threads in this forum that deals with the "Not Enough Space" error actually stems from the disks actually being dynamic disks instead of basic, for some reason or another, regardless of if you have many Terabytes of free space.

Why?
22 REPLIES 22

C3jf1At
Honored Guest
The answer is because it's a bug in their installer.

The installer uses in .NET DriveInfo class to get a list of drives available on the machine. The class returns collection of objects that represent drives, e.g.:
  • C:\
  • D:\
  • E:\
  • F:\
  • G:\
  • H:\
  • S:\
After that, they create a static helper method IsInternal. They want to limit the above list to drives that aren't removable. 

In order to do this, they use the Windows CreateFile function to open the volume itself (e.g. \\.\C:). They then use DeviceIOControl to directly issue the IOCTL_STORAGE_GET_HOTPLUG_INFO command to the volume.

The problem is that it is wrong to try to issue the IOCTL_STORAGE_GET_HOTPLUG_INFO command to a volume - it doesn't make sense for a volume. It only makes sense for a disk. A volume isn't something that is hot-pluggable - the disk that the volume is sitting on is the thing that is hot-pluggable. 

What they need to do is open the physical drive rather than the volume, i.e.:
  • Wrong: "\\.\C:"
  • Correct: "\\.\PhysicalDrive0"
The intern who wrote the Oculus installer got it even more wrong because he didn't realize that a volume can actually exist on multiple physical disks. E.g. my 😧 volume exists on:

  • \\.\PhysicalDrive1
  • \\.\PhysicalDrive2
  • \\.\PhysicalDrive3
The way to get the drives that hold a volume is to issue the IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS command to the disk. That will populate a series of VOLUME_DISK_EXTENTS that give the drive numbers that the volume exists on, e.g.:

  • DiskNumber: 1 ==> \\.\PhysicalDrive1
  • DiskNumber: 2 ==> \\.\PhysicalDrive2
  • DiskNumber: 3 ==> \\.\PhysicalDrive3
From there they can open the physical disk (e.g. CreateFile("\\.\PhysicalDrive1", ...) ) for reading, and issue the HotplugInfo ioctl to the drive. 

So why does it work for volumes on a Basic disk? Because it's impossible for volume on a basic disk to exist on multiple disks. Basic disks do not support mirroring, spanning, or RAID. Volumes on dynamic disks can exist on multiple drives. Even though it's totally and completely wrong to issue IOCTL_STORAGE_GET_HOTPLUG_INFO to a volume - Windows goes out of it's way to fix your bug for you.

They get no such help for volumes on dynamic disks. Ask for the correct thing.

Summary 


  • The Oculus installer mistakenly issues IOCTL_STORAGE_GET_HOTPLUG_INFO to a volume, and not a disk.
  • The Oculus installer should have converted a volume letter to a list of drives, and issued the IOCTL to the drives themselves.
  • When the IOCTL_STORAGE_GET_HOTPLUG_INFO command fails, they should assume the drive is not hot pluggable, rather than throwing the uncaught exception (and leaking handles and memory)
  • When the error happens, the Oculus installer leaks a CreateFile volume handle (sloppy programmer)
  • When the error happens, the Oculus installer leaks a GlobalAlloc memory handle (sloppy programmer)

What the installer should have done is forget volumes. Forget drives. The installer should have installed  into 

C:\Program Files\Oculus

And certainly don't dump your garbage in the C:\Oculus root of a drive. That is an absolute sin that has been unacceptable since 1995.

No application in the history of anything ever has ever had a problem installing application where applications are supposed to go. If the user desires, they can change it to their D:\ drive which has more space. Look at Steam. Look at 50GB World of Warcraft. Installing in a folder is right, correct, done, and works. All in all, a young over-eager develop out-smarted himself, and created the wrong solution to the non-problem.

As i understand it, they plan to to have an updated installer next year that will install into a folder (like a normal program). So all these bugs won't be fixed, because they plan on rolling out the correct way to do things eventually.

Debugging the Oculus installer is what i did while my $900 paperweight sat on my disk, rather than using my new Oculus Rift that refused to install.


MarcSimonsen
Sightseer
Is this still accurate?
Because then I will have to format my C drive.
My secondary drive is a simple drive, but i'm still recieving errors of installing on C : 

Lil_Guard_Dog
Explorer
Yes, unfortunately this is still accurate.  The main Oculus software suite will not install on a dynamic hard drive.  It has to be a basic drive only.

Which means I can only install the primary software on a old little drive that I found in my boxes of random computer stuff, and it runs MUCH slower than my quad raid hybrid drives.  (My quad raid hybrids run just under double the speed of an SSD atm 😉

Would be glorious if I could actually install the oculus software, and associated games on my main PC drives instead of the little basic drive...but unfortunately due to the quad raid setup, I cannot convert my main drives back to basic anymore or I lose the boosted speed that I got rid of the SSD's for.

WNxJohnDoe
Honored Guest
This is still accurate, however if you have multiple disk drives and one of your non-C disks is basic you can use the instructions below from the support pages to help.

To install the Oculus app on a different system drive:

  1. Press the Windows key + R to open the Run command
  2. Enter OculusSetup /drive: [new system drive] (ex: OculusSetup /drive:D)
  3. Click OK
https://support.oculus.com/1676275305961321

JessKaine
Honored Guest
It won't work only says Windows cannot find 'OculusSetup'. I give up I've spent 2 days solid of trying to just install some software this is a joke.

Anonymous
Not applicable

JessKaine said:

It won't work only says Windows cannot find 'OculusSetup'. I give up I've spent 2 days solid of trying to just install some software this is a joke.



You need to write something like this: C:/Oculus Setup /drive:F For me C:/Oculus Setup it's Oculus Setup.exe path. /drive:F its destination folder on basic disk.

Christo_m
Honored Guest
Is this still not fixed? Seems a serious oversight. I recall running into this bug when the Rift launched.

BradleyNewman
Explorer
I am running setup and choosing "D:\Program Files\Oculus", and every time it fails and displays the following:

kpksysoyqsjq.jpg

BradleyNewman
Explorer
Was able to install to the D drive by doing:
- Windows + R (run command)
- "D:\Downloads\OculusSetup.exe /drive:D"

Defaulted to "D:\Oculus". Why doesn't it default to "D:\Program Files\Oculus"? Seems weird..