ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.25k stars 175 forks source link

Error: Steam "needs at least 250MB" free space when plenty of space #4982

Closed apiontek closed 4 years ago

apiontek commented 7 years ago

Your system information

Please describe your issue in as much detail as possible:

Running Steam for the first time on fresh install, system fully updated. My homedirs are ZFS datasets. This has worked in the past, on an Ubuntu 16.04 system, same ZFS homedir setup, but that may have been over 6-10 months ago, last time I used it.

In current environment, running steam I get error window "Steam - Fatal Error" "Fatal Error: Steam needs at least 250MB of free disk space to update." Running from terminal produces output (gist)

df -h output (gist) -- every partition available has plenty of space.

apt-cache policy steam output (gist)

i also see in the terminal output, "Steam needs to be online to update" -- I have an active network connection. It is non-standard, being a bridge on top of a bonded interface, but this also worked in the past.

Steps for reproducing this issue:

  1. install Ubuntu Gnome 17.04, ensure up-to-date
  2. have a ZFS dataset, with e.g. tank/homes mounted to /home -- and in my case, tank/homes/userX as separate datasets mounted to /home/userX
  3. try to run steam for the first time
kisak-valve commented 7 years ago

Hello @apiontek, as a test, can you remove both the distro and valve variants of the steam package, then move ~/.steam and if it is there, ~/.local/share/Steam somewhere out of the way. Then add either the distro-provided or valve-provided steam package, but not both and re-run steam.

apiontek commented 7 years ago

I had already done that. I originally had distro-provided steam package installed. I removed ~/.steam and ~/.local/share/Steam, then did a find ~/ -iname "steam" and removed ~/.steampid, ~/.steampath, and ~/Steam I think. I then purged the distro-provided steam, downloaded steam-latest.deb, and installed that. Upon getting the same error, I submitted this issue.

Just now however, I tried again, running sudo apt purge steam-launcher after a dpkg -l | grep -i steam and removing ~/.steam and ~/.local/share/Steam again.

This time I reinstalled the distro-provided package and had the same result.

Tried again and reinstalled the valve-provided package, and have the same result. I get the error with both.

kisak-valve commented 7 years ago

Thanks for the confirmation @apiontek.

apiontek commented 7 years ago

As an update, since my root system is on ext4, I created a temporary /opt/steam folder with subfolders for .steam, local-share-Steam, and Steam, and did ln -s for each of them into the appropriate places in my homedir.

Then, the steam installer worked fine. But when I remove the symlinks and move the folders into position, although Steam starts up fine, I can't install games because it reports 0 space free.

So it seems I could run games with folders symlinked to an ext4 partition, but this isn't optimal for me. My root partition is a small SSD. I wonder if I can create a ZFS block device formatted ext4, and symlink again? I'll try that.

Editing to add: creating an ext4-formatted zvol and symlinking the steam folders to folders on that volume, does work and allow me to install & run games. Not ideal, but I can run games for now!

dark-saber commented 7 years ago

Same problem on Arch Linux when trying to add new Steam Library folder located on ZFS volume: Steam shows 0 bytes free space in such folders.

kermeat commented 7 years ago

Got same problem on gentoo STEAM_DEBUG=1 DEBUGGER=strace steam_debug.txt steam.strace.txt

tgoodyear commented 7 years ago

Same problem on Xubuntu 17.04

cybik commented 7 years ago

Chiming in, Gentoo user here.

cinu cybik # uname -a; equery list zfs zfs-kmod spl
Linux cinu 4.12.1-gentoo-cybik #1 SMP Sat Jul 15 00:10:04 PDT 2017 x86_64 Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz GenuineIntel GNU/Linux
 * Searching for zfs ...
[IP-] [  ] sys-fs/zfs-0.6.5.11:0

 * Searching for zfs-kmod ...
[IP-] [  ] sys-fs/zfs-kmod-0.6.5.11:0

 * Searching for spl ...
[IP-] [  ] sys-kernel/spl-0.6.5.11:0

My specific console error:

../tier1/fileio.cpp (3264) : Assertion Failed: Failed to determine free disk space for /media/Games/cybik/Steam, error 75
../tier1/fileio.cpp (3264) : Assertion Failed: Failed to determine free disk space for /media/Games/cybik/Steam, error 75
../tier1/fileio.cpp (3264) : Assertion Failed: Failed to determine free disk space for /media/Games/cybik/Steam, error 75
GameAction[AppID 2820, ActionID 1] : RunGame failed with NotInstalled with ""
../tier1/fileio.cpp (3264) : Assertion Failed: Failed to determine free disk space for /media/Games/cybik/Steam, error 75
../tier1/fileio.cpp (3264) : Assertion Failed: Failed to determine free disk space for /media/Games/cybik/Steam, error 75
../tier1/fileio.cpp (3264) : Assertion Failed: Failed to determine free disk space for /media/Games/cybik/Steam, error 75
soredake commented 7 years ago

Gentoo user x2, Steam Beta, same problem as with @cybik

soredake commented 7 years ago

@kisak-valve when will this be fixed (or at least an option that allows you to skip checking free space)? It's a bit(very) annoying that i cannot use steam.

soredake commented 7 years ago

Same problem with steam and gog installers under wine, maybe we need to report a bug to zfs.

cybik commented 7 years ago

I'm starting to think we should bring in the zfs driver developers.

kdrag0n commented 7 years ago

I'm having the same issue with Steam on Arch. I'm using btrfs instead of zfs though, but trying to install Steam games to another drive mounted at /storage. Steam claims there are 0 bytes of disk space free, which isn't true. I've confirmed that reading and writing to the drive works.

soredake commented 7 years ago

Seems valve fixed this in beta update. UPD: Seems something updated in system, because the Steam and GOG installers in Wine are now correctly show the free space.

kisak-valve commented 7 years ago

Thanks for testing @soredake, is anyone else having this issue with zfs or btrfs with the steam beta client? If needed, you should be able to manually opt-in to the steam beta with touch ~/.steam/steam/package/beta.

cybik commented 7 years ago

Steam package versions 1503954609, still can't install (reporting 0MB free).

Using zfs, Steam Linux Native.

Pilzschaf commented 7 years ago

Still happening on steam beta with package version 1503954609 on Manjaro 17.0.2 and ZFS v0.6.5.9-2

glycerine102 commented 7 years ago

My free space is correct now and I am able to install games to libraries in my zfs datasets. This is on Fedora 26.

Name         : zfs
Version      : 0.7.1
Release      : 1.fc26
Arch         : x86_64
Size         : 1.0 M
Source       : zfs-0.7.1-1.fc26.src.rpm
cybik commented 7 years ago

@nathandorsey gave me the idea of updating my zfs (0.6.x to 0.7.1), but I still have 0mb available. cinu cybik # uname -a; echo ============; equery l zfs zfs-kmod spl;

Linux cinu 4.12.1-gentoo-cybik #2 SMP Sat Jul 15 14:55:14 PDT 2017 x86_64 Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz GenuineIntel GNU/Linux
============
 * Searching for zfs ...
[IP-] [  ] sys-fs/zfs-0.7.1:0

 * Searching for zfs-kmod ...
[IP-] [  ] sys-fs/zfs-kmod-0.7.1:0

 * Searching for spl ...
[IP-] [  ] sys-kernel/spl-0.7.1:0
soredake commented 7 years ago

@cybik i'm on 0.7.1 zfs, 4.12.8 kernel and 6.4.0 gcc, maybe this will help you. Additionaly: Kernel config https://notabug.org/soredake/dotfiles_home/src/master/kernel/.config_4_12_8 Portage settings: https://notabug.org/soredake/dotfiles_home/src/master/etc/portage/portage

cybik commented 7 years ago

@soredake I'll update my kernel for funsies.

cybik commented 7 years ago

Kernel updated, still an issue. Config Snapshot: https://github.com/cybik/currentconfigs (not for the faint of heart) Steam Version: 1503954609 cinu cybik # uname -a; echo ============; equery l zfs zfs-kmod spl;

Linux cinu 4.12.8-gentoo-cybik #1 SMP Sat Sep 2 09:20:51 PDT 2017 x86_64 Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz GenuineIntel GNU/Linux
============
 * Searching for zfs ...
[IP-] [  ] sys-fs/zfs-0.7.1:0

 * Searching for zfs-kmod ...
[IP-] [  ] sys-fs/zfs-kmod-0.7.1:0

 * Searching for spl ...
[IP-] [  ] sys-kernel/spl-0.7.1:0
cybik commented 7 years ago

@soredake can you run this:

equery l zfs zfs-kmod spl

soredake commented 7 years ago

@cybik nothing interesting

 * Searching for zfs ...
[IP-] [  ] sys-fs/zfs-0.7.1:0

 * Searching for zfs-kmod ...
[IP-] [  ] sys-fs/zfs-kmod-0.7.1:0

 * Searching for spl ...
[IP-] [  ] sys-kernel/spl-0.7.1:0

And my zpool options ashift=12 -o compression=lz4,checksum=edonr,dnodesize=auto,xattr=sa

cybik commented 7 years ago

Just wanted to see if you had any -r1 or anything of the sort.

cybik commented 7 years ago

I just cleared my Steam executable tree in .local, I still don't have anything functional. Zfs 0.7.1 all around

cybik commented 7 years ago

Could it be that some libraries installed on my system are clashing with what Steam is expecting?

tgoodyear commented 7 years ago

Seeing the same issue in the backup/restore dialog as well. Ubuntu 17.04 and ZFS version 0.6.5.9-2

image

image

eXeC64 commented 7 years ago

Seeing this on Arch:

Name            : zfs-linux
Version         : 0.7.1.4.12.13.1-1
Description     : Kernel modules for the Zettabyte File System.
Architecture    : x86_64
URL             : http://zfsonlinux.org/
Name            : linux
Version         : 4.12.13-1
Description     : The Linux kernel and modules
Architecture    : x86_64
URL             : https://www.kernel.org/

Steam package versions: 1504757234 Steam build date: Sep 6 2017

MarianArlt commented 7 years ago

Just encountered this on Arch right after starting steam [official repo] with Kernel 4.13.3 and corresponding ZoL 0.7.2 [.4.13.3.1-1].

CLI error states:

Assert( Assertion Failed: Failed to determine free disk space for ., error 75 ):../tier1/fileio.cpp:3186

As a further note I zfs mount a seperate zpool/user to /home/user (very common practice).

Workaround for now: As ZFS distributes space evenly among any dataset and steam is unable to understand this yet, you can set ZFS attribute quota on your dataset that's mounted to /home. Please read the zfs manuals if you don't know what this attribute does or how to use it.

cybik commented 7 years ago

Confirming, setting a quota works, even outside of a mounted-in-home dir. I set a quota to 1500G and it started working without Steam even restarting.

This can help Valve find out why the balls this is being read wrong.

ghost commented 7 years ago

Further to above, if I set a quota greater than 4T disk space is not determined correctly. 4T or less works fine.

kisak-valve commented 7 years ago

Hello @aots-aots, please open a separate issue report for the 4TB quota issue so that it can be tracked properly.

pascalwhoop commented 6 years ago

I set my quota to 4T for the zfs pool mounted at ~/tank, yet steam still doesn't get the size. This is annoying, it basically makes steam useless for my needs

bahelit commented 6 years ago

This also effects me, running Ubuntu 17.04. About a year ago on Ubuntu 16 steam did detect the available free space and the games installed and ran from the zfs filesystem.

poettler-ric commented 6 years ago

I have the same problem. Here my setup (Fedora 27):

[richi@wlx001 ~]$ uname -r
4.14.8-300.fc27.x86_64

zfs:

Name         : zfs
Version      : 0.7.5
Release      : 1.fc27
Arch         : x86_64
Size         : 1.0 M
Source       : zfs-0.7.5-1.fc27.src.rpm
Repo         : @System
From repo    : zfs
Summary      : Commands to control the kernel modules and libraries
URL          : http://zfsonlinux.org/
License      : CDDL
Description  : This package contains the ZFS command line utilities.

steam:

Name         : steam
Version      : 1.0.0.54
Release      : 13.fc27
Arch         : i686
Size         : 2.7 M
Source       : steam-1.0.0.54-13.fc27.src.rpm
Repo         : @System
From repo    : rpmfusion-nonfree-updates
Summary      : Installer for the Steam software distribution service
URL          : http://www.steampowered.com/
License      : Steam License Agreement
Description  : Installer for the Steam software distribution service.
             : Steam is a software distribution service with an online store, automated
             : installation, automatic updates, achievements, SteamCloud synchronized savegame
             : and screenshot functionality, and many social features.

My home is on a ZFS pool:

Filesystem      Size  Used Avail Use% Mounted on
data/home       5.3T   24G  5.3T   1% /home

This is a fresh setup, so i can't even install steam. The touch ~/.steam/steam/package/beta trick also didn't work. Might it be the i686 arch for the steam package?

Edit: Setting a quota worked.

lamawithonel commented 6 years ago

This looks like a duplicate of #4824.

dmaroulidis commented 6 years ago

I have the same problem. I have my home dirs on a zfs pool, and my home dir is a seperate dataset. I am running Ubuntu 17.10 amd64 and installed steam-installer from the multiverse repo.

ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".
[2018-01-02 14:59:29] Startup - updater built Nov 23 2016 01:05:42
ILocalize::AddFile() failed to load file "public/steambootstrapper_greek.txt".
[2018-01-02 14:59:29] Verifying installation...
[2018-01-02 14:59:29] Unable to read and verify install manifest /home/dimitris/.steam/package/steam_client_ubuntu12.installed
[2018-01-02 14:59:29] Verification complete
[2018-01-02 14:59:29] Downloading Update...
../tier1/fileio.cpp (3186) : Assertion Failed: Failed to determine free disk space for ., error 75
[2018-01-02 14:59:29] Error: Steam needs at least 250MB of free disk space to update.
[2018-01-02 14:59:29] Error: Steam needs to be online to update.     Please confirm your network connection and try again.
[2018-01-02 14:59:34] Shutdown
Phalen commented 6 years ago

nfs mount as of 2 client updates ago the steam system cant figure out space on the mounts. I have reinstalled os and same issue. im using ubuntu 16.04 lts

h1z1 commented 6 years ago

Curious thread.. @kermeat I don't run Gentoo but this seems rather odd no? What is in /etc/os-release?

+++ BUG_REPORT_URL=https://bugs.gentoo.org/
Steam/steam.sh: line 154: VERSION_ID: unbound variable
+ kermeat 0

How steam got to here is more concerning:

+ mkdir -p /home/kermeat/.local/share/Steam/.save
Steam/steam.sh: line 444: no match: ssfn*
+ '[' 133 -eq 42 ']'

The error itself is expected from bash because steam sets failglob but the bootstrap failed, it shouldn't have tried to backup those files, they could be corrupt.

Like a lot of bugs open atm, I don't understand how Valve isn't able to address this? You literally have at least two reports showing exactly what is wrong and nothing end users can do about it.

Chiitoo commented 6 years ago

h1z1,

Gentoo, being of the rolling release sort, doesn't have versions, so the (optional) variable here is indeed unset:

NAME=Gentoo
ID=gentoo
PRETTY_NAME="Gentoo/Linux"
ANSI_COLOR="1;32"
HOME_URL="https://www.gentoo.org/"
SUPPORT_URL="https://www.gentoo.org/support/"
BUG_REPORT_URL="https://bugs.gentoo.org/"
Phalen commented 6 years ago

Stupid work around for those who need it until steam fixes this issue. get a drive with 40+gb space [ie atleast as large as your larges install.] make a dir for the library on it and add it as a library. close steam and rm the steam apps folder on that drive with space. use ln -s [nfs mount location] steamapps when you open steam it will show that folder with how ever much space is currently free on your local dummy drive. as long as you know you have plenty of space on the file share you can install/play to your hearts content...

apiontek commented 6 years ago

I set a quota of 3TB and while Steam runs, if I try to install a game it tells me I don't have enough space.

# zfs list tank/homes/adam
NAME              USED  AVAIL  REFER  MOUNTPOINT
tank/homes/adam   784G  2.23T   229G  /home/adam

# zfs get quota tank/homes/adam
NAME             PROPERTY  VALUE  SOURCE
tank/homes/adam  quota     3T     local

If I instead create a zvol, format it ext4, move the steam directories to it and symlink those back to my home directory, then games install and run. I'm currently on Ubuntu 17.10 with zfs release 0.6.5.11-1ubuntu3.1, with Steam client on beta updates. About says package version 1508957438, built Oct 25 2017 at 00:42:26, dpkg says version 1:1.0.0.54+repack-2ubuntu5

EDIT: I realized that seemed old, and I hadn't run Steam in a while, so I waited and got an update, bringing me up to package version 1521764535, built Mar 22 2018 at 16:58:48 ... but I have the same problem. Despite a quota of 3T being set on my /home/user zfs volume, Steam complains when trying to install a game that there isn't enough space for it. There's plenty. Still works if I move the steam directories to an ext4-formatted zvol.

aw-was-here commented 6 years ago

Setting the quota to 2T worked for me. Anything higher and it fails.

iwvelando commented 6 years ago

Just to chime in I get the same behavior as https://github.com/ValveSoftware/steam-for-linux/issues/4982#issuecomment-377550321 on:

$ modinfo zfs | head
filename:       /lib/modules/4.15.15-1-ARCH/extra/zfs/zfs.ko.xz
version:        0.7.0-415_g74df0c5e2
license:        CDDL
author:         OpenZFS on Linux
description:    ZFS
alias:          devname:zfs
alias:          char-major-10-249
srcversion:     C56510077A308A2571DBAD4
depends:        spl,znvpair,icp,zlua,zunicode,zcommon,zavl
retpoline:      Y
# zfs get quota datavol/games
NAME           PROPERTY  VALUE  SOURCE
datavol/games  quota     none   default
# zfs set quota=2T datavol/games
# zfs get quota datavol/games
NAME           PROPERTY  VALUE  SOURCE
datavol/games  quota     2T     local
# zfs list datavol/games
NAME            USED  AVAIL  REFER  MOUNTPOINT
datavol/games  1.02T  1005G   683G  /mnt/datavol/games

Now I can install games again.

Styx85 commented 6 years ago

The quota workaround is working. I can set it to 2262G, not higher. But still, it's a workaround and I'd like to keep my whole datapool without quota.

ipaqmaster commented 6 years ago

Just chiming in as I've hit this problem too today. The quota tactic has also worked for me while installing a CSGO server in it's own zfs dataset.

  #ZFS on Linux - version: 0.7.6-1.el7_4 
  #Dist and Kernel: CentOS7 - 3.10.0-693.2.2.el7.x86_64

zfs create storage/csgoserver-retakes
zfs set quota=30G storage/csgoserver-retakes #csgo takes about 15G on it's own
  #Then executing further steamCMD install commands, works fine.

It's a shame steamcmd can't just see the total pool size and say "Ok that's our max". I imagine it's calculating against what ZFS has 'allocated' (that small cushion of Mb) to a volume rather than the pool's overall max storage space.

Setting this 'quota cap' must give steamcmd the answer's it's looking for, an actual, hard defined, max size. I guess I'll just have to expand that allocation manually if the content/game-updates get too large. But this does seem like a discovery and calculation problem for steamcmd , not anything ZFS's 'fault' but rather an incompatibility.

apiontek commented 6 years ago

Yes. I'd much rather steam adapt to handle ZFS. It's bad enough to be forced to set a quota, but to also have it not work if the quota is over 2TB is baffling.

That said, yes, once I set a home quota to 2TB, it worked. Then to allow more space, I made my ~/.steam dir its own ZFS volume and set that quota to 2TB, since my home dir is often pretty full.

h1z1 commented 6 years ago

Considering it's not entirely strange any more to have 1) 2TB or more of space and 2) A steam library to fill that space. There are MANY threads about this going back to at least 2014ish.

Really quite baffling indeed. Then again we're talking about Valve.

boospy commented 6 years ago

ZFS 0.7.7 on Proxmox. Strange thing. Issue look like depending on phy device. On HDD with ZFS i have 0 bytes to write. On the ZFS SSD Raid everything is working fine. The datasets have the same settings.