Yup, it's been done to death, but I still haven't found something stable for myself.
My desktop PC runs Arch, and has an Ext4 Partition with my Steam Library shared using NFS.
My VM's (Including Garuda and Win 11 with GPU, Soundcard, NIC passed through) have access to the NFS share using a private host/guest network for Steam to share the library. All is working great, with no corruption because the host with NFS is managing the filesystem. Perfect.
My laptop is dual boot Win10 and Garuda, so I can't use the same setup (yet).
I've tried NTFS and BTRFS (Using WinBTRFS) for the shared drive, but often end up with a mangled BTRFS partition that ends up mounted RO, or an NTFS partition with the dirty bit set when I boot Garuda again. That said, I haven't tried NTFS again since the Paragon driver was included in the kernel. I've trawed the net for months with no good answer yet.
Has anyone found a good solution to this, that is actually stable?
I've been using winbtrfs and it works just fine (and also available via Chocolatey).
You have to watch whether you install the Windows or Linux version of a game (otherwise you end up re-downloading the data when you launch Steam in the "wrong" OS), but otherwise it's transparent. (Ideally, have a shared area/library for Windows games and a Linux-only library for Linux-native games.)
You also benefit massively from btrfs compression, just make sure you set the correct CompressForce option in the registry and match the compression method and level between the two OS.
Just curious, but as someone that doesn't game on their laptop but also has windows, linux and that winbtrfs driver, would you recommend this compression level you stated for the registry for someone like me? Or this is just for gaming generally?
I would recommend enabling compression on any filesystem that supports it. Less data being written to disk, less data needing to be read from disk means both higher IO and less impact on SSD lifespan.
The specific compression level will be personal preference. On my systems I force a high compression (zstd-15) but I have a fast CPU, don't write all that much to disk that frequently, and am happy to wait for the compression to happen when doing larger writes (e.g. during package updates). Lower levels of compression can provide a better balance between compression ratio and compression speed, depending on your use-case, system, and preferences.
Hopefully you have better results than I did. I first tried using NTFS with steam to just use my gaming storage drive from Windows in Linux, but couldn't get that to work for the life of me. I ended up just splitting the drive half btrfs and half ntfs. I tried using winbtrfs and just sharing my btrfs drives with Windows for when I would reboot into it for the odd thing I "needed" windows for, but started having issues with BSODs from the btrfs driver and no longer boot Windows. My progression has gone like this:
I can't fully commit to Linux, I dont know how much it will work for me. I'll try and use as much of my windows setup as possible.
I can't get some of this windows stuff to work in Linux so I'll partition some more storage for Linux and duplicate some data to try this out natively.
Well, this stuff works fine so far on btrfs but a game or two performs kinda poorly or isn't supported by proton fully, maybe i'll try using the btrfs drive on Windows.
Well my Windows installation feels like garbage after being used to Linux and I remember now what a BSOD is... I'll give Linux all the space it needs and only reserve some for Windows.
Why do I have this other 1 TB NVME drive for Windows when I dont boot into anymore?
If it was general data, i'd probably use compression. But this drive is purely for games, and most of the large files are already compressed by the games developers, using compression that is judged to be the best compromise between data throughput, and cpu load to give an optimal experience for the game. Adding a 2nd layer of compression might tie up the cpu needlessly for little/no gain, and introduce longer load times, and/or stuttering.
I'm at stage 4 of that now lol. It was only Civ4 Colonization and CoD4 MW that I was really booting Windows for, and they are both working fine on Garuda now, so the need for shared Win/Linux Steam storage is almost redundant now. Next re-install and Win is getting relegated to an HDD so Garuda gets the NVMe to itself.