protonscr

[TF2] Installing TF2 (non-beta) on FAT32 volume results in incorrect error messages

steamopen Feature RequestreviewedSteam client
ValveSoftware/steam-for-linux#1786 · opened 2013-02-15 by ManInTheGitHub · updated 2017-05-23 · 4 comments · github
MManInTheGitHub 2013-02-15 github

When trying to start TF2 on a (-o bind mounted) FAT32 volume, I get the following: first a check on the files, which slowly goes towards 40-ish percent, then jumps to 100% and finally saying that all files verified correctly. At the same time I get 2 pop-ups: one saying I don't have enough space available (although Steam reports 738GB free (the /home partition) and the bind-mounted SteamApps drive has 383GB free) and one stating the Steam Servers are busy and to try again later.

None of these messages is any help in revealing the actual cause of the problem: two of the files in TF2 are larger than 4GB: Team Fortress 2 Content.gcf (5.3GB) and Team Fortress 2 Materials.gcf (4.5GB) and those don't fit on FAT32.

Rebooting to windows, running convert.exe S: /fs:ntfs, rebooting back to linux, remounting: now Steam doesn't respond to 'resume download' and 'resume all', but pressing 'play' triggers some check and starts the download of those 2 files.

The beta version of TF2 installs and runs without any problems.

Jjohndrinkwater 2013-02-15 github

The diskspace check issue is reported already at #1534
Since FAT32 isn’t a default for Linux users, only the more technically-inclined people would use it, they probably know the file limitations… Is this a suggestion that Steam should block using FAT32 for Steam Library?

MManInTheGitHub 2013-02-15 github

This is unrelated to that disk space issue, as both /home and the actual location have enough space available. Sure, it might have looked in the wrong spot, but all drives have plenty of room for TF2. What is happening here is that the Steam client incorrectly displays the error: disk full (and steam servers busy). Most likely it (accidentally) displays the same error message for both EFBIG and ENOSPC return values to the fseek or write call that I assume happens as part of pre-allocating the file?

And to answer your question: Steam should either not support (TF2) installation on FAT drives or make sure the (gcf) files stay below the magic 4GB limit as done in TF2 beta.

The only other option for sharing your steamapps folder with your windows installation would be NTFS, but in the case of NTFS there is another issue: it causes 100% cpu usage (or more accurately: 100% of one of the cores by mount.ntfs, not the steam process), my guess here is that either pre allocation isn't done, or done sparse. This is not unique to Steam for linux, I've noticed that also under Windows the harddrive is doing a lot more then needed for the amount of bytes downloaded, but the NTFS implementation is better in Windows (kinda makes sense :P ). http://www.tuxera.com/community/ntfs-3g-faq/#highcpu lists a few of the reasons including the big sparse file, writes in small (<4KB) blocks and small block size on the partition (which is the case, but not enough to account for this slowdown).

The end result being that Steam has a more or less constant time remaining for the download of TF2, but that the download speed has dropped from the initial 10MB/s (close to the max of the network here with 100Mbit/s) to a mere 38KB/s...

Tinkering around: if I cause a lot of reading elsewhere on the NTFS volume, Steam speeds up to around 1MB/s and then slowly dropping back to slower speeds. My hypothesis is then that the (small?) Steam writes get merged to larger, more efficient writes, thus speeding up the download despite the reading elsewhere on the disk...

I realize fully that Valve has nothing to do with the quality of the NTFS implementation on linux, but perhaps a few tweaks in the way files are written to work around the limitations of the ntfs driver on linux could benefit a lot of the users that are dual booting and don't want to duplicate their steamapps folder.

Kkisak-valve maintainer 2017-04-06 github

Hello @ManInTheGitHub, you shouldn't be hitting the 4GB filesize limit of FAT32 with TF2 since it was converted over to steampipe.

Is there a current example of a steam game hitting the 4GB file limit with FAT32?

MManInTheGitHub 2017-05-23 github

I don't seem to have an example in my installed list of games. I'd wager it might be easier for you guys to find a game with files that big? If you find one: feel free to gift it and I'll happily retest ;) In all seriousness: I would just change the error text to more clear for this case and would not bother with fat32 on linux too much.

Nothing extracted yet.