The main issue with the CY7C67200 supporting mass storage is the fact that it has a limited amount of internal memory. When file system support is needed and is being run internally the code space is used up very quickly. This is not to say that it cannot be done because it has but with limited functionality. With limited code space you would not expect to be able to enumerate a large variety of USB HDDs because they are each a little different and may extra steps may be required to be able to fully enumerate and utilize these. You will also find that trying to do both reads and writes will put some heavy burdens on the memory usage. One way to address this is to move various pieces of functionality into the external controller. Typically if a device is going to enumerate a USB HDD then an external processor will be used to navigate on the HDD and determine the actions. If this external processor has the bandwidth to support the file system support then doing things like reading the partition tables and FAT tables can be done on the external processor leaving more room for code in the CY7C67200. You will also need to limit the scope and functionality of the product using the CY7C67200 for mass storage.
The better solution is to use the CY7C67300 (EZ-Host). The CY7C67300 has an external memory bus and so the available memory can be expanded and thus more functionality can be place in the EZ-Host. This is exactly what the CY4640 does and expands the available memory from aproximately 15KB in the EZ-OTG to a combind value of up to about 54KB without use of paging.
Another option to consider is using the EZ-OTG part in co-processor mode instead of in stand-alone mode. When doing this the RTOS that is running in the external processor?will not have these same constraints and they typically have a USB stack with a USB Mass Storage Class driver.