New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VSH: Filesystem Mounting Enhancement #12917
Conversation
I noticed a few things The only path detected was dev_usb000/PS3/UPDATE and it appropriately returned the error that the pup version couldn't be read. And while you're doing this PR. What about these other USBs? Why leave these out At the least usb mass storage 1-5 should be the same as 0 right? Can we add those because that's how it should be? Have we found out anything about sys_dev_usb? |
I can add the other dev_usb to the mount_info list of course, though I think we should eventually implement dynamic mount_info list reflecting what is actually mounted or unmounted by vfs::mount or vfs::unmount() in real time. |
@Darkhost1999 I've added the temporary workaround for /dev_usb000 to /dev_usb005. |
Managed to further implement sys_fs_get_mount_info() stuff so that it can reflect the actually mounted devices in real time. |
There is a theme inside dev_flash/vsh/resource/theme you can use inside the dev_usb000/PS3/Theme path for testing if you don't have a .p3t |
Up to 8 USBs (from dev_usb000 to dev_usb007) are supported now. |
I thought that was confirmed working before this PR. Several months ago |
I don't think so. You'll probably get error 80029567 and 80029564. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's safer to not use a member to tell if mounted, just vfs::get or some other indirect way to extract data from vfs. It's because it has issues when relainching emulation.
or actually reset is_mounted on FXO destruction using a custom destructor in a struct, similar to how raw_spu_cleanup struct behaves. |
I get you. |
Fixed. |
Wait, I have some ideas. |
Okay, it no longer relies on |
What else is still keeping this PR from being merged? |
mount_point_reset needs to be ordered after vfs_manager, maybe use SAVESTATE_INIT_POS fir it. |
You mean I should move |
No I mean you need to ensure the destructor is called before vfs_manager destructor. |
How about doing mount_point_reset's work (unmount all mount point) in vfs_manager destructor? |
You just need to add 2 lines, in vfs_manager and moint_point_resend. See other usages if this macro for example. |
Could you please advise what value of |
I didn't see any new problem in the log with current implementation. |
It's because the bug depends on which gets compiled first, sys_fs.cpp or VFS.cpp. |
You can search values used on other SAVESTATE_INIT_POS and come up with new ones, mount_point_reset value must be higher than vfs_manager struct |
@elad335 How does it look now? |
Made the VSH willing to access /dev_usbXXX, which wasn't deemed mounted by VSH when the device wasn't in the list provided by sys_fs_get_mount_info().
For example, PS3UPDAT.PUP in /dev_usb000/PS3/UPDATE/ now can be detected by the VSH with this PR.