Skip to content
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

Virtual Fileystem Projections #815

Open
chyyran opened this issue Feb 4, 2021 · 3 comments
Open

Virtual Fileystem Projections #815

chyyran opened this issue Feb 4, 2021 · 3 comments

Comments

@chyyran
Copy link
Member

chyyran commented Feb 4, 2021

Rationale

Snowflake's Filesystem API allows for complicated game installation for modern, NAND based consoles. However, at runtime, this becomes complicated with the need to copy over installed DLC data, and merge it with save files, and other system files that must be present at runtime into the runtime root.

We propose an OS-agnostic filesystem projection API that allows orchestrators to project a disk-backed filesystem for emulators to access. This way, program files such as DLCs and installed games (i.e. CIAs) can be projected onto (from the emulator's POV) real directories, without having to copy or move large installed games that can be multiple gigabytes.

Implementation

Implementation will require installation of a virtual usermode filesystem backend such as Dokan.

  • Backend

Alternatives

  • Symlinks
    • Probably simpler to implement, but requires users to enable symlinks without elevation
@chyyran chyyran changed the title Fileystem Projections Virtual Fileystem Projections Feb 6, 2021
@chyyran
Copy link
Member Author

chyyran commented Feb 6, 2021

Closing in favour of proposal #818

@chyyran chyyran closed this as completed Feb 6, 2021
@chyyran chyyran reopened this Aug 15, 2022
@chyyran chyyran added this to the API 1.0 milestone Aug 15, 2022
@chyyran
Copy link
Member Author

chyyran commented Aug 15, 2022

Reopening because I am now convinced that the symlink approach is strictly inferior and this can be done safely if writing the FSP implementation in Rust.

@chyyran chyyran pinned this issue Sep 5, 2022
@chyyran
Copy link
Member Author

chyyran commented Sep 5, 2022

driver bits happening in https://github.com/SnowflakePowered/snowflake-projfs

@chyyran chyyran moved this to In Progress in Snowflake 1.0 Sep 6, 2022
@chyyran chyyran self-assigned this Sep 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

No branches or pull requests

1 participant