protonscr

steam-runtime can't be installed when crossing file-system boundaries.

steamclosed reviewedSteam client
ValveSoftware/steam-for-linux#2358 · opened 2013-05-01 by madrang · updated 2013-05-02 · 6 comments · github
Mmadrang 2013-05-01 github

If steam is mounted from the outside. The runtime will not be installed properly.
I have a ZFS Raid Server. With 8TB of space and about 6.1TB left
When all dependency are installed steam works as expected and i can play games. But again for those i need to have all dependency installed.

sshfs [email protected]:/mnt/vol0/home/madrang/Steam /home/madrang/Steam
sshfs [email protected]:/mnt/vol0/home/madrang/Steam /home/madrang/.local/share/Steam

madrang@Qosmio-X770:~$ df -k '/home/madrang/.steam/bin32'
Filesystem 1K-blocks Used Available Use% Mounted on
[email protected]:/mnt/vol0/home/madrang/Steam 7607109169 712280726 6894828443 10% /home/madrang/.local/share/Steam

madrang@Qosmio-X770:~$ rm -r '/home/madrang/.steam/bin32/steam-runtime' '/home/madrang/.steam/bin32/steam-runtime.tmp'
rm: cannot remove ‘/home/madrang/.steam/bin32/steam-runtime’: No such file or directory
madrang@Qosmio-X770:~$ STEAM_DEBUG=1 steam > Steam.log.txt

Old log with steam failing to start with missing libnm dependencies.
http://pastebin.com/1pxu2wVh

The folder "/home/madrang/.steam/bin32/steam-runtime.tmp" is created and all files seams to be there.
The folder "/home/madrang/.steam/bin32/steam-runtime" is not created.

It seams like mv usually calls rename, but when it does a copy crossing filesystem boundaries (like with zfs), copy_entry is used and is calling utime on a symlink whose target does not exist on the target volume. Since they are relative, i think utime is called before the symlink's target is copied.

That is why only symlinks fails in the logs.

New log with fix for libnm, Started steam, used some menus, started a game then closed everything.
http://pastebin.com/R8JeEQZG

Ggdrewb-valve maintainer 2013-05-01 github

Why is there a filesystem crossing involved? Is ZFS auto-splitting the disks or something? If Steam is installed in bin32 and unpacking to a subdir of bin32 that would normally be the same filesystem and disk.

Mmadrang 2013-05-01 github

Normally yes, but i don't know why. If i move any files using mv in bash. It copies the files. I can see it use a lot of bandwidth. Only happens when i use drives mounted from the network. Same with steam. Each time it tries to move a file. It download and upload it somewhere else. I also noticed that i can easily do 48MB/s using that server. But when starting steam it only does ~21MB/s and loading a map in TF2 takes 15 min but use only 1.7MB/s

Ggdrewb-valve maintainer 2013-05-01 github

You might need to take this up in a ZFS forum, then, as this does not appear to be anything Steam-related.

Mmadrang 2013-05-01 github

When installing steam-runtime it still tries to call utime on a symlink target that is not copied yet. It is the only bug that make it fail.

Ggdrewb-valve maintainer 2013-05-01 github

Do you mean the tar utime failures? tar is unpacking an archive, it's not doing anything unusual (and Steam is just using the regular system tar).

Nothing extracted yet.