You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
timeshift --delete never finishes with btrfs simple quotas (quota rescan retried forever) #575
Describe the bug
With btrfs simple quotas enabled (btrfs quota enable --simple /), deleting a snapshot never finishes. The subvolume itself is deleted fine, but then timeshift retries btrfs quota rescan once a second, forever. Simple quotas have no rescan, so the command always fails with Invalid argument.
For me it blocked a system upgrade: timeshift-autosnap deletes old snapshots from a pacman hook, and the upgrade hung until I killed timeshift.
To Reproduce
Steps derived from the code path and the real run below; not yet re-run on a clean system.
btrfs root, timeshift in btrfs mode
btrfs quota enable --simple /
Create a snapshot, then timeshift --delete --snapshot <name>
It hangs; the log repeats Still rescanning quotas... ERROR: quota rescan failed: Invalid argument, and the kernel logs qgroup rescan init failed, running in simple mode once a second.
Real run (delete log):
[10:31:22] Deleted subvolume: @ (Id:473)
[10:31:22] Waiting on btrfs to finish deleting...
[10:31:23] Rescanning quotas...
[10:31:23] Still rescanning quotas... ERROR: quota rescan failed: Invalid argument
... 580 identical lines ...
[10:41:04] Still rescanning quotas... ERROR: quota rescan failed: Invalid argument
Expected behavior
The delete finishes. Under simple quotas there is nothing to rescan.
Cause src/Core/Subvolume.vala (unchanged on master at 26.09.0) loops while (btrfs quota rescan ... != 0) sleep(1000), twice ("Rescanning quotas" and "(post)"). It treats every failure as "rescan still running". Checking /sys/fs/btrfs/<fsid>/qgroups/mode for squota and skipping the rescans would fix it. Possibly related: #354. The GUI uses the same delete code, so it should hang the same way (not tried).
Disclosure: this was diagnosed and written up by an AI assistant (Claude) working on my machine. The log excerpt is from my system and the code reference is against current master, but I have not verified the analysis myself. Happy to provide more logs, and a PR if wanted.
still running when the 60 s timeout fired (exit 124); output ends in Still rescanning quotas... ERROR: quota rescan failed: Invalid argument repeated; 60 kernel qgroup rescan init failed lines
btrfs quota enable (control)
qgroup
finished in under a second, exit 0, snapshot removed; its output contains Rescanning quotas..., so it went through the same code path
In both cases the snapshot subvolume itself was deleted; the hang is only the rescan loop afterwards. Timeshift 25.12.4, btrfs-progs 7.1, kernel 6.18.49 (Manjaro).
Disclosure: as before, the repro script and this write-up are by an AI assistant (Claude) working on my machine; I ran the script. Happy to paste the script here if that helps.
Activity
zommuter commentedon Oct 13, 2026
Reproduced on a throwaway loop-device btrfs, so the steps in the report are now confirmed rather than derived.
Two fresh 1 GiB btrfs images, each with a subvolume
@and one snapshot laid out astimeshift-btrfs/snapshots/<name>/@plusinfo.json, then on each:/sys/fs/btrfs/<uuid>/qgroups/mode)btrfs quota enable --simplesquotaStill rescanning quotas... ERROR: quota rescan failed: Invalid argumentrepeated; 60 kernelqgroup rescan init failedlinesbtrfs quota enable(control)qgroupRescanning quotas..., so it went through the same code pathIn both cases the snapshot subvolume itself was deleted; the hang is only the rescan loop afterwards. Timeshift 25.12.4, btrfs-progs 7.1, kernel 6.18.49 (Manjaro).
Disclosure: as before, the repro script and this write-up are by an AI assistant (Claude) working on my machine; I ran the script. Happy to paste the script here if that helps.