I use an SSD and can’t install all my Steam games onto my SSD. I don’t have a large HDD in my workstation as all my files are on my huge ZFS file server.
I simply wanted to install Steam games onto the share. Seems simple, right?

I used to bind (using mount) the steamapps directory to a folder on my server and Steam was none the wiser. However in an update Steam now uses the free space figure of the whole filesystem rather than the steamapps directory, so this option was out. In doing this, they also added the option to create new Steam libraries on other drives. Perfect! Well… No.

Steam complains that the filesystem is not mounted executable. However it in fact is – forced exec in /etc/fstab and chmodded correctly. I think SMB mounts just can’t have the flag Steam is looking for.
My solution was to create a loopback filesystem on the server.

I first created a file of the desired size on my server using dd if=/dev/zero of=/server/games-disk bs=1M count=50000. This creates a 50GB empty file on the server. From here I formatted that with /sbin/mkfs -t ext4 -q /server/games-disk. This creates an ext4 filesystem in the file. I then mounted that through my first available loopback device using sudo mount -o loop=/dev/loop1 /server/games-disk /media/games-disk. This mounts the file as a virtual loopback device at /media/games-disk. The mountpoint must exist already and can be created simply by sudo mkdir /media/games-disk. Make sure the make the image writable by more than just root on the server so you can mount it read/write.

Now all you need to do is make sure that this loopback device is mounted before starting Steam.