protonscr

Moving game between drives fails with error "content file locked"

steamopen Steam clientDistro Family: UbuntuProton
ValveSoftware/steam-for-linux#12139 · opened 2025-06-26 by PseudonymousNX · updated 2026-08-17 · 13 comments · github
1 matching comments, n / p to jump
PPseudonymousNX 2025-06-26 github

Your system information

  • Steam client version (build number or date): May 20th 2025
  • Distribution (e.g. Ubuntu): Mint 22.1 Cinnamon
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes
  • Steam Logs: steam-logs.tar.gz
  • GPU: Nvidia GTX 1070 Ti

Please describe your issue in as much detail as possible:

Attempting to move a game from one disk to another should, ideally, result in the game being moved from one disk to another. What happens instead is that the Steam client will make me wait as though it's moving the files, and then at the point of completion throw the error "content file locked" and revert all changes.

Attempting to move "Steam Linux Runtime 3.0 Sniper" to the library in my home directory, which is where 1.0 Scout and 2.0 Soldier are already, similarly failed - although with the error "disk write error" instead.

Do be aware that this may not show in the logs as one step I took in trying to fix the issue was reinstalling Steam, and since then I've only tried moving a smaller game (Balatro) from a HDD partition to an SSD partition.

Steps for reproducing this issue:

  1. Go to "Storage" in Steam settings
  2. Select any game on a partition not in the home directory
  3. Attempt to move the game to any other partition
  4. Await process completion
  5. Process will fail and the described error will occur instead
Kkisak-valve maintainer 2025-06-26 github

Hello @PseudonymousNX, looking at your content_log.txt, these are the lines of interest:

[2025-06-26 04:29:54] AppID 2379780 moving from "/mnt/sdb2/SteamLibrary/steamapps/common/Balatro" to "/mnt/sda4/SteamLibrary/steamapps/common/Balatro"
[...]
[2025-06-26 04:42:44] AppID 2379780 canceled moving : File locked at 66662933/788541667 bytes, 14 files moved (Can't overwrite existing file "/mnt/sda4/SteamLibrary/steamapps/compatdata/2379780/config_info" (441 bytes))

That suggests there's a pre-existing wineprefix on the sda4 Steam library folder that's tripped a failsafe mechanism.

PPseudonymousNX 2025-06-26 github

Thanks for your help!

I think you're spot on: there most definitely is a pre-existing wineprefix - but it's not actually on sda4.

For context, I dual-boot Windows, so have some partitions formatted in NTFS so that both operating systems can access them.

For further context, I have 3 steam library folders, which are on:

  • sda3, the ext4 partition where Linux and Steam itself are installed
  • sda4, a shared NTFS partition on an SSD
  • sdb2, a shared NTFS partition on an HDD

The steam libraries on sda4 and sdb2 do contain compatdata folders - but they're just symlinks to the one on sda3 (where Steam is installed). I didn't manually configure this, I assume it's a default behaviour of wine/proton since I suspect they need to be on an ext4 or other Linux partition to work.

I think based on what you said, it looks like Steam isn't checking the canonical path for compatdata and is attempting to move the wineprefix to where it already is, and is thusly failing, causing it to undo the move for the actual game folder as well.

I realise I'm probably just being woefully naive and/or simplistic, but hopefully that at least helps clarify some things. Thanks again!

Sstellaberrant 2025-09-28 github

I get this error on my Steam Deck when I try to move a game to a drive where it's already been. The moving process will result in a 'content file locked' error. Clearing out the prefixes from both drives fixes this. I'm assuming it has something to do with it moving the Proton Prefix along with the game, except the first prefix doesn't get cleared out completely and on the move back it finds a duplicate prefix. This is a really jarring issue on the Steam Deck specifically because moving large games takes a long time, only to have that process error out at the end. It should either offer to remove the preexisting prefix, or alert me of the fact that a duplicate prefix exits, or delete the original prefix where it was moved from.

How to reproduce: (I chose The Room as example because it's small)

  • install the game on internal drive
  • move game to MicroSD card
  • move game back from MicroSD card to internal drive, and the error appears.

Image

BBrensom 2025-11-15 github
Same issue here: dual-boot Arch Linux + Windows 11, game library on a shared Btrfs partition (`/mnt/volume_data_3`).  
After booting into Windows and launching Steam there, all Linux-native titles that already exist on disk become **"Update required"** with **"content file locked"** error and **cannot be launched at all** until the lock is removed.

Steam logs show:

update canceled : Temp folder not writable (Disk write failure)
Can't overwrite existing file ... (content file locked)


**Work-around that avoids re-downloading:**
```bash
find /mnt/volume_data_3/SteamLibrary/steamapps -name "*.lock" -delete
sudo chown -R $USER:$USER /mnt/volume_data_3/SteamLibrary/steamapps/temp
rm -rf ~/.steam/steam/appcache/{httpcache,librarycache}

Then restart Steam and press Play – manifest is re-read, no download happens, games launch normally.

Root cause:
Steam stores *.acf.lock files inside the shared library folder; after switching OS the inode/owner differs and the client treats the files as still locked by another process.
Please move lock files into the local Steam directory (~/.steam/...) so they are OS-private and do not interfere when dual-booting.

Confirmed: Found multiple .lock files preventing game launches:

  • pfx.lock in compatdata directories (Wine/Proton prefixes)
  • unity.lock in game directories
  • dist.lock in Proton directory
  • db.lock in workshop content

After deleting all .lock files and clearing appcache, games launch normally without re-downloading.

Root cause: Cross-platform lock file conflicts on shared Btrfs partition.
Lock files should be stored in OS-specific directories, not shared library locations.

UPDATE: Root cause confirmed - Windows on Btrfs sets file ownership to nobody:100 for downloaded content. When switching back to Linux, Steam cannot overwrite these files due to permission issues.

Final solution:

sudo chown -R $USER:$USER /path/to/steam/library/
sudo rm -rf /path/to/steam/library/steamapps/{downloading,temp}/*

Needs fix in Steam: Lock files and temporary download folders should use OS-specific locations, not shared library paths.

Kkisak-valve maintainer 2025-11-15 github

Hello @Brensom, it should be noted that sharing a Steam library folder between OSes is not supported and that's the kind of undefined behavior that might occur. (https://github.com/ValveSoftware/steam-for-linux/blob/master/RelNotes.md#installation)

BBrensom 2025-11-15 github

@kisak-valve Thank you for clarifying the official stance!

Understood that shared libraries aren't supported. However, the core issue remains: Steam stores OS-specific lock files (.lock, pfx.lock, etc.) in shared library locations where they cause cross-OS conflicts.

Even if shared libraries aren't officially supported, could Steam at least store these lock files in OS-specific directories (~/.steam/...) rather than the library folders? This would prevent the "content file locked" errors for dual-boot users who occasionally access the same game files from different OSes.

The current behavior breaks basic game functionality after OS switching, requiring manual file cleanup.

Bbr4nnigan 2025-12-28 github

I got the same error, but source and target disks are linux (ext4) ...

Actually I moved one game successfully, but then another one gave me this error.

[2025-12-28 20:05:49] AppID 275850 canceled moving : File locked at 31126985716/31743477797 bytes, 807 files moved (Can't overwrite existing file "/mnt/nvme/SteamLibrary/steamapps/compatdata/275850/pfx/drive_c/windows/system32/GameInput.dll" (60265 bytes))

I dont know how this would have something to do with pre existing wine prefixes, as each game has their own? The other game has /mnt/nvme/SteamLibrary/steamapps/compatdata/233860 ...

Uuliss3s 2026-01-08 github

Just tried to move DARKTIDE and got the same error.

The path '/data/SteamLibrary/steamapps/compatdata/1361210' did not exist before i tried to move the game.

I did the process with Arc Raiders successfully before that.

[2026-01-07 20:24:55] Triggered async write of Steam library folders configuration (2 libraries).
[2026-01-07 20:25:30] AppID 1361210 moving from "/home/nobody/.local/share/Steam/steamapps/common/Warhammer 40,000 DARKTIDE" to "/data/SteamLibrary/steamapps/common/Warhammer 40,000 DARKTIDE"
[2026-01-07 20:25:30] AppID 1361210 state changed : Fully Installed,Moving Folder,
[2026-01-07 20:25:33] Finished uninstall script before moving folders
[2026-01-07 20:30:37] AppID 1361210 canceled moving : File locked at 90944700726/91541254609 bytes, 219669 files moved (Can't overwrite existing file "/data/SteamLibrary/steamapps/compatdata/1361210/pfx/drive_c/windows/system32/GameInput.dll" (60265 bytes))
[2026-01-07 20:30:42] AppID 1361210 state changed : Fully Installed,
Mmazeratibooloo 2026-01-13 github

Having this issue as well, trying to move TCG Card Shop Simulator from a btrfs partition to my ext4 partition.

[2026-01-13 01:37:06] AppID 3070070 moving from "/mnt/btrfs/SteamLibrary/steamapps/common/TCG Card Shop Simulator" to "/home/xxx/.local/share/Steam/steamapps/common/TCG Card Shop Simulator"
[2026-01-13 01:37:06] AppID 3070070 state changed : Fully Installed,Moving Folder,
[2026-01-13 01:37:07] AppID 3070070 canceled moving : File locked at 5169272321/5725617517 bytes, 798 files moved (Can't overwrite existing file "/home/xxx/.local/share/Steam/steamapps/compatdata/3070070/pfx/drive_c/windows/system32/GameInput.dll" (60265 bytes))
[2026-01-13 01:37:08] AppID 3070070 state changed : Fully Installed,

Upon checking, this file the logs claims to exist does not. Same error occurred 5 times, even after a reboot.

Uuliss3s 2026-01-13 github

Having this issue as well, trying to move TCG Card Shop Simulator from a btrfs partition to my ext4 partition.

[2026-01-13 01:37:06] AppID 3070070 moving from "/mnt/btrfs/SteamLibrary/steamapps/common/TCG Card Shop Simulator" to "/home/xxx/.local/share/Steam/steamapps/common/TCG Card Shop Simulator"
[2026-01-13 01:37:06] AppID 3070070 state changed : Fully Installed,Moving Folder,
[2026-01-13 01:37:07] AppID 3070070 canceled moving : File locked at 5169272321/5725617517 bytes, 798 files moved (Can't overwrite existing file "/home/xxx/.local/share/Steam/steamapps/compatdata/3070070/pfx/drive_c/windows/system32/GameInput.dll" (60265 bytes))
[2026-01-13 01:37:08] AppID 3070070 state changed : Fully Installed,

Upon checking, this file the logs claims to exist does not. Same error occurred 5 times, even after a reboot.

I have the same problem and "solved" it by deleting the problematic files before starting the move process. #12632

Iinsunaa 2026-05-08 github

The problem seems to be caused by case-insensitivity shenanigans. In the source directory there is both a gameinput.dll and a GameInput.dll. So gameinput.dll gets moved to the new directory, then it tries to move GameInput.dll but due to some case-insensitivity thing steam detects that there is already a file of that name in the target directory and so it fails. Seems to me too that the solution is to simply delete GameInput.dll in the source directory

Bbentenjamin 2026-05-20 github

Ran into this issue aswell. In my case I was moving a game from an ntfs drive (with compatdata symlink fix for compatability with windows) to my main Linux drive. The problem can happen whenever you try move a proton game between any drives that share the same compatdata directory.

Below is an example setup where moving a game between any of the drives would fail:

Drive Name Filesystem SteamLibrary's compatdata folder Usecase
A EXT4/BTRFS/etc Default Main linux drive where steam is installed
B NTFS symlinked -> Drive A's compatdata Games SSD shared with windows
C NTFS symlinked -> Drive A's compatdata Bulk storage HDD shared with windows

TLDR fix:

  1. Start moving the game from within steam
  2. Wait till progress bar starts moving
  3. Manually delete the game's compatdata folder
    1. This has to be done while the game is transferring
    2. The games in compatdata are named by their steam AppID, not their name
    3. Eg, when moving Marvel Rivals run rm -r ~/.steam/steam/steamapps/compatdata/2767030

The rest of this is the detailed steps to reproduce the problem and the fix

1. Drive Config:

Simple setup with Linux on its own drive, and a games drive formatted with NTFS to share with windows. Windows freaks out because of the file naming convention used in the proton compatdata folder, so instead the compatdata folder is symlinked to the linux drive where steam is installed.

1.1. Steam installed on BTRFS root /home/bentenjamin/.local/share/Steam
1.2. NTFS drive mounted with UUID=xxxxxx /home/bentenjamin/Mount/Warehouse ntfs-3g defaults,nofail,x-systemd.device-timeout=2 0 2
1.3. SteamLibrary compatdata directory of NTFS drive symlinked to the compatdata directory in Steam's install directory ln -sf /home/bentenjamin/.local/share/Steam/steamapps/compatdata /home/bentenjamin/Mount/Warehouse/SteamLibrary/steamapps/

2. Install game with Linux client onto drive that has a symlinked compatdata - result: Works as expected

2.1. Install Marvel Rivals to /home/bentenjamin/Mount/Warehouse
2.2. Game files are installed in /home/bentenjamin/Mount/Warehouse/SteamLibrary/steamapps/common/MarvelRivals
2.3. Marvel Rivals compatdata folder is automatically created on BTRFS drive /home/bentenjamin/.local/share/Steam/steamapps/compatdata/2767030
2.4. Marvel Rivals can be played from both Linux and windows

3. Move proton game with Linux client - result: Error

3.1. Steam client -> Library -> installed locally collection -> right click Marvel Rivals -> properties -> Installed Files -> Move install folder -> select /home -> click Move
3.2. Loading bar shows data move progress

  • 3.2.1. Folder /home/bentenjamin/.local/share/Steam/steamapps/common/MarvelRivals is automatically created
  • 3.2.2. Log file /home/bentenjamin/.local/share/Steam/logs/content_log.txt:
[2026-05-20 09:33:02] AppID 2767030 moving from "/home/bentenjamin/Mount/Warehouse/SteamLibrary/steamapps/common/MarvelRivals" to "/home/bentenjamin/.local/share/Steam/SteamLibrary/steamapps/common/MarvelRivals"
[2026-05-20 09:33:02] AppID 2767030 state changed : Fully Installed,Moving Folder,
[2026-05-20 09:33:07] Finished uninstall script before moving folders

3.3. Error is thrown at 100% progress bar

  • 3.3.1. Error Dialogue message:
Move Content
Moving content for the following apps has failed :
- Marvel Rivals : Content file locked
  • 3.3.2. Folder /home/bentenjamin/.local/share/Steam/steamapps/common/MarvelRivals is automatically deleted
  • 3.3.3. Folder /home/bentenjamin/.local/share/Steam/steamapps/compatdata/2767030 is automatically deleted
  • 3.3.4. Log file /home/bentenjamin/.local/share/Steam/logs/content_log.txt:
[2026-05-20 09:47:17] AppID 2767030 canceled moving : File locked at 123903622180/124953785675 bytes, 1213 files moved (Can't overwrite existing file "/home/bentenjamin/.local/share/Steam/SteamLibrary/steamapps/compatdata/2767030/config_info" (487 bytes))
[2026-05-20 09:47:18] AppID 2767030 state changed : Fully Installed,

4. Move proton game with Linux client, after deleting it's compatdata - result: Error

Retry moving the game as the config_info file mentioned in the logs, as well as the entire 2767030 folder, don't exist.

4.1. Repeat previous step 3.1.
4.2. Loading bar shows data move progress

  • 4.2.1. Folder /home/bentenjamin/.local/share/Steam/steamapps/common/MarvelRivals is automatically created
  • 4.2.2. Folder /home/bentenjamin/.local/share/Steam/steamapps/compatdata/2767030 is automatically created
  • 4.2.3. Log file /home/bentenjamin/.local/share/Steam/logs/content_log.txt:
[2026-05-20 10:00:07] AppID 2767030 moving from "/home/bentenjamin/Mount/Warehouse/SteamLibrary/steamapps/common/MarvelRivals" to "/home/bentenjamin/.local/share/Steam/SteamLibrary/steamapps/common/MarvelRivals"
[2026-05-20 10:00:07] AppID 2767030 state changed : Fully Installed,Moving Folder,
[2026-05-20 10:00:12] Finished uninstall script before moving folders

4.3. Exact same results as 3.3.1, 3.3.2, and 3.3.3

  • 4.3.1. Log file /home/bentenjamin/.local/share/Steam/logs/content_log.txt:
[2026-05-20 10:14:18] AppID 2767030 canceled moving : File locked at 123903622180/124726674943 bytes, 1213 files moved (Can't overwrite existing file "/home/bentenjamin/.local/share/Steam/SteamLibrary/steamapps/compatdata/2767030/config_info" (487 bytes))
[2026-05-20 10:14:19] AppID 2767030 state changed : Fully Installed,

5. Move game with Linux client, deleting compatdata folder after it is automatically created - result: Success

Seems like steam knows how to recreate a game's compatdata folder, and will do so before it moves the game if it is missing. So I'll delete it manually while it is transferring the rest of the game, and it won't fail at the end when it does the overwrite check.

5.1. Repeat previous step 3.1.
5.2. Exact same results as 4.2, 4.2.1, 4.2.2

  • 5.2.1. Log file /home/bentenjamin/.local/share/Steam/logs/content_log.txt:
[2026-05-20 10:35:45] AppID 2767030 moving from "/home/bentenjamin/Mount/Warehouse/SteamLibrary/steamapps/common/MarvelRivals" to "/home/bentenjamin/.local/share/Steam/SteamLibrary/steamapps/common/MarvelRivals"
[2026-05-20 10:35:45] AppID 2767030 state changed : Fully Installed,Moving Folder,
[2026-05-20 10:35:51] Finished uninstall script before moving folders

5.3. After waiting for a few gigs to be moved, manually delete the compatdata directory that was automatically created: rm -r /home/bentenjamin/.local/share/Steam/steamapps/compatdata/2767030
5.4. Game is moved successfully

  • 5.4.1. Old folder /home/bentenjamin/Mount/Warehouse/SteamLibrary/steamapps/common/MarvelRivals is deleted
  • 5.4.2. compatdata folder /home/bentenjamin/.local/share/Steam/steamapps/compatdata/2767030 is automatically created again at the end of the move process
  • 5.4.3. Log file /home/bentenjamin/.local/share/Steam/logs/content_log.txt:
[2026-05-20 10:56:30] AppID 2767030 state changed : Fully Installed,
[2026-05-20 10:56:30] AppID 2767030 state changed : Update Required,Fully Installed,Files Missing,
[2026-05-20 10:56:30] Finished moving install folder (123903622180 bytes, 1213 files)
[2026-05-20 10:56:34] AppID 2767030 scheduler update : Priority Auto Update, not played for 5030 seconds, update disabled for 0 seconds
[2026-05-20 10:56:34] AppID 2767030 state changed : Update Required,Fully Installed,Update Queued,Files Missing,
[2026-05-20 10:56:34] AppID 2767030 state changed : Update Required,Fully Installed,Update Queued,Files Missing,Update Running,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,Reconfiguring,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,Verifying Installed,
[2026-05-20 10:56:34] AppID 2767030 state changed : Update Required,Fully Installed,Update Queued,Update Running,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,
[2026-05-20 10:56:34] AppID 2767030 has no changes, 2 active: 2767031 (4345435286222061598),4406011 (8633401128632329421), 2 target: 2767031 (4345435286222061598),4406011 (8633401128632329421),
[2026-05-20 10:56:34] AppID 2767030 state changed : Update Required,Fully Installed,Update Queued,Update Running,Update Started,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,Staging,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,Committing,
[2026-05-20 10:56:34] AppID 2767030 starting commit from "/home/bentenjamin/.local/share/Steam/SteamLibrary/steamapps/downloading/2767030" to "/home/bentenjamin/.local/share/Steam/SteamLibrary/steamapps/common/MarvelRivals" : 0 updated, 0 moved, 0 deleted files
[2026-05-20 10:56:34] AppID 2767030 state changed : Fully Installed,Update Queued,Update Running,
[2026-05-20 10:56:34] AppID 2767030 finished update, 2 mounted depots (BuildID 23248974) : 2767031 (4345435286222061598),4406011 (8633401128632329421),
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,
[2026-05-20 10:56:34] AppID 2767030 App update changed : Running Update,Running Script,
[2026-05-20 10:56:34] Got 8 download sources and 0 caching proxies via ContentServerDirectoryService::BYieldingGetServersForSteamPipe (CellID 26 / Launcher 0)
[2026-05-20 10:56:39] AppID 2767030 App update changed : Running Update,
[2026-05-20 10:56:39] AppID 2767030 App update changed : None
[2026-05-20 10:56:39] AppID 2767030 state changed : Fully Installed,Update Queued,
[2026-05-20 10:56:39] AppID 2767030 state changed : Fully Installed,
[2026-05-20 10:56:39] AppID 2767030 scheduler finished : removed from schedule (result No Error, state 0xc) 

This is probably overly verbose and not particularly useful as I understand it is unsupported, but I figured I'd document it for anyone else who's interested or has the same problem

DDatastreamx 2026-08-17 github

I had this issue and all I had to do was delete the prefix from the original drive. There was no prefix for the game in the new drive.

The error in the logs was:
Can't overwrite existing file "/home/user/.local/share/Steam/steamapps/compatdata/1091500/pfx/drive_c/windows/system32/GameInput.dll"

Might even be enough to only delete that file. Like insunaa said

DLLs