BTRFS & updating leads to E: ERROR: can't list qgroups: quotas not enabled

During a clean install, I selected BTRFS (no swap). All fine.
I never enabled quotas myself, because I do not believe it is a best practice to do so unless you have a usecase for it.

I like that Manjaro takes a snapshot before updating the system, however, the list of errors shown because quotas is not enabled by Manjaro by default is unexpected.

quotas should not be required to take snapshots and delete them, so why is this an error, not just a warning?
Also, it even has trouble deleting the snapshot after the quotas error. Why does that happen?

 pamac update -a                                                                                                                                                   ✔ 
Preparing...
Synchronizing package databases...
Refreshing core.db...                                                                                                                                                                   
Refreshing extra.db...                                                                                                                                                                  
Refreshing community.db...                                                                                                                                                              
Refreshing AUR...                                                                                                                                                                       
Checking gnome-gesture-improvements dependencies...                                                                                                                                     
Warning: lib32-mesa: local (22.0.0-1) is newer than multilib (21.3.8-2)
Resolving dependencies...
Checking inter-conflicts...

To upgrade (2):
  manjaro-keyring              20220509-1      (20220504-2)      core       103,0 kB
  manjaro-application-utility  1.3.3-7         (1.3.3-6)         community  55,2 kB
To build (1):
  gnome-gesture-improvements   r183.83f422f-1  (r128.e700d84-1)  AUR

Total download size: 158,2 kB
Total installed size: -34 bytes

Edit build files : [e] 
Apply transaction ? [e/y/N] y

Resolving dependencies...
Checking inter-conflicts...
Download of manjaro-keyring (20220509-1) started                                                                                                                                        
Download of manjaro-keyring (20220509-1) finished                                                                                                                                       
Checking keyring...                                                                                                                                                                [1/1]
Checking integrity...                                                                                                                                                              [1/1]
Loading package files...                                                                                                                                                           [1/1]
Checking file conflicts...                                                                                                                                                         [1/1]
Checking available disc space...                                                                                                                                                   [1/1]
Using system disk as snapshot device for creating snapshots in BTRFS mode

/dev/nvme0n1p2 is mounted at: /run/timeshift/backup, options: rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/

E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota
Creating new backup...(BTRFS)
Saving to device: /dev/nvme0n1p2, mounted at path: /run/timeshift/backup
Created directory: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_11-08-37
Created subvolume snapshot: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_11-08-37/@
Created subvolume snapshot: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_11-08-37/@home
Created control file: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_11-08-37/info.json
BTRFS Snapshot saved successfully (0s)
Tagged snapshot '2022-05-09_11-08-37': ondemand
------------------------------------------------------------------------------
E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota
E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota
E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota
E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota
E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota

/dev/nvme0n1p2 is mounted at: /run/timeshift/backup, options: rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/

E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota
------------------------------------------------------------------------------
Removing snapshot: 2022-04-16_00-01-38
Deleting subvolume: @ (Id:770)
Deleted subvolume: @ (Id:770)

Destroying qgroup: 0/770
E: Failed to destroy qgroup: '0/770'
E: Failed to remove snapshot: 2022-04-16_00-01-38
------------------------------------------------------------------------------

/dev/nvme0n1p2 is mounted at: /run/timeshift/backup, options: rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/

E: ERROR: can't list qgroups: quotas not enabled

E: btrfs returned an error: 256
E: Failed to query subvolume quota
------------------------------------------------------------------------------
Removing snapshot: 2022-04-16_00-04-14
Deleting subvolume: @home (Id:773)
Deleted subvolume: @home (Id:773)

Destroying qgroup: 0/773
E: Failed to destroy qgroup: '0/773'
E: Failed to remove snapshot: 2022-04-16_00-04-14
------------------------------------------------------------------------------
Generating grub configuration file ...
1 Like

Because you disabled the quota on btrfs and did not inform Timeshift about it. Now he is angry and throws error messages at you.

I did not even open Timeshift and already saw this happening. And no, I did not disable quota on BTRFS. That is exactly my point: it is disabled by default after I installed Manjaro Gnome 21.2.6.

After noticing the errors, I did open Timeshift where quotas is also disabled. This last update performed this morning took place after that.

My guess is that there are snapshots created with quota. Now Timeshift tries to use quota, but it is disabled.

I tried to manually delete each snapshot in Timeshift. It said “deleted with errors” and still listed the snapshots.

When opening the folder, I noticed it only contained an info.json file, so I deleted each snapshot folder that only contained that file. Reopening Timeshift showed an empty list.

Next I create a snapshot via Timeshift, delete it again, again shows “deleted with errors”.

This is what happens when I use Timeshift to create a snapshot (gui log):


[12:19:51] check_btrfs_layout_system()
[12:19:51] SnapshotRepo: available()
[12:19:51] SnapshotRepo: has_btrfs_system()
[12:19:51] root_path=/run/timeshift/backup/@
[12:19:51] btrfs_mode=true
[12:19:51] is_available: ok
[12:19:51] SnapshotRepo: has_space()
[12:19:51] Device: get_disk_space_using_df(): 1
[12:19:51] no snapshots
[12:19:51] BackupWindow: BackupWindow()
[12:19:51] EstimateBox: EstimateBox()
[12:19:51] EstimateBox: EstimateBox(): exit
[12:19:51] BackupDeviceBox: BackupDeviceBox()
[12:19:51] BackupDeviceBox: BackupDeviceBox(): exit
[12:19:51] BackupBox: BackupBox()
[12:19:51] BackupBox: BackupBox(): exit
[12:19:51] BackupFinishBox: BackupFinishBox()
[12:19:51] BackupFinishBox: BackupFinishBox(): exit
[12:19:51] BackupWindow: BackupWindow(): exit
[12:19:51] 
[12:19:51] page: 2
[12:19:51] Main: create_snapshot()
[12:19:51] check_btrfs_layout_system()
[12:19:51] SnapshotRepo: has_space()
[12:19:51] Device: get_disk_space_using_df(): 1
[12:19:51] no snapshots
[12:19:51] Main: backup_and_rotate()
[12:19:51] SnapshotRepo: available()
[12:19:51] SnapshotRepo: has_btrfs_system()
[12:19:51] root_path=/run/timeshift/backup/@
[12:19:51] btrfs_mode=true
[12:19:51] is_available: ok
[12:19:51] SnapshotRepo: has_space()
[12:19:51] Device: get_disk_space_using_df(): 1
[12:19:51] no snapshots
[12:19:51] Creating new backup...(BTRFS)
[12:19:51] Saving to device: /dev/nvme0n1p2, mounted at path: /run/timeshift/backup
[12:19:51] Created directory: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51
[12:19:51] Created subvolume snapshot: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51/@
[12:19:51] Created subvolume snapshot: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51/@home
[12:19:51] Created control file: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51/info.json
[12:19:51] BTRFS Snapshot saved successfully (0s)
[12:19:51] Tagged snapshot '2022-05-09_12-19-51': ondemand
[12:19:51] ------------------------------------------------------------------------------
[12:19:51] SnapshotRepo: load_snapshots()
[12:19:51] Querying subvolume info...
[12:19:51] query_subvolume_id():@
[12:19:51] btrfs subvolume list '/run/timeshift/backup'
[12:19:51] query_subvolume_quota():@
[12:19:51] btrfs qgroup show  '/run/timeshift/backup'
[12:19:51] E: ERROR: can't list qgroups: quotas not enabled

[12:19:51] E: btrfs returned an error: 256
[12:19:51] E: Failed to query subvolume quota
[12:19:51] Query completed
[12:19:51] loading snapshots from '/run/timeshift/backup/timeshift-btrfs/snapshots': 1 found
[12:19:51] Symlinks updated
[12:19:52] 
[12:19:52] page: 3
[12:19:53] SnapshotRepo: available()
[12:19:53] SnapshotRepo: has_btrfs_system()
[12:19:53] root_path=/run/timeshift/backup/@
[12:19:53] btrfs_mode=true
[12:19:53] is_available: ok
[12:19:53] SnapshotRepo: load_snapshots()
[12:19:53] Querying subvolume info...
[12:19:53] query_subvolume_id():@
[12:19:53] btrfs subvolume list '/run/timeshift/backup'
[12:19:53] query_subvolume_quota():@
[12:19:53] btrfs qgroup show  '/run/timeshift/backup'
[12:19:53] E: ERROR: can't list qgroups: quotas not enabled

[12:19:53] E: btrfs returned an error: 256
[12:19:53] E: Failed to query subvolume quota
[12:19:53] Query completed
[12:19:53] loading snapshots from '/run/timeshift/backup/timeshift-btrfs/snapshots': 1 found
[12:19:53] SnapshotRepo: check_status()
[12:19:53] SnapshotRepo: available()
[12:19:53] SnapshotRepo: has_btrfs_system()
[12:19:53] root_path=/run/timeshift/backup/@
[12:19:53] btrfs_mode=true
[12:19:53] is_available: ok
[12:19:53] SnapshotRepo: has_snapshots()
[12:19:53] SnapshotRepo: has_space()
[12:19:53] Device: get_disk_space_using_df(): 1
[12:19:53] Snapshot device: '/dev/nvme0n1p2'
[12:19:53] Snapshot location: /run/timeshift/backup
[12:19:53] OK
[12:19:53] 1 snapshots, 476,2 GB free
[12:19:53] Status: HAS_SNAPSHOTS_HAS_SPACE
[12:19:53] 
[12:19:53] SnapshotRepo: check_status(): exit
[12:19:53] SnapshotRepo: has_snapshots()
[12:19:53] SnapshotRepo: has_snapshots()

It still shows quota error.

When I delete that snapshot (I have to delete it 3 times, to make it disappear from the list in Timeshift, perhaps first time it deletes @, second time @home, third time the folder and its json file?)

[12:21:38] main window: delete_selected()
[12:21:38] SnapshotRepo: available()
[12:21:38] SnapshotRepo: has_btrfs_system()
[12:21:38] root_path=/run/timeshift/backup/@
[12:21:38] btrfs_mode=true
[12:21:38] is_available: ok
[12:21:38] SnapshotRepo: has_snapshots()
[12:21:38] main window: delete_selected(): count=1
[12:21:38] DeleteWindow: DeleteWindow()
[12:21:38] SnapshotListBox: SnapshotListBox()
[12:21:38] SnapshotListBox: SnapshotListBox(): exit
[12:21:38] DeleteBox: DeleteBox()
[12:21:38] DeleteBox: DeleteBox(): exit
[12:21:38] DeleteFinishBox: DeleteFinishBox()
[12:21:38] DeleteFinishBox: DeleteFinishBox(): exit
[12:21:38] DeleteWindow: DeleteWindow(): exit
[12:21:38] 
[12:21:38] page: 1
[12:21:38] DeleteBox: delete_snapshots()
[12:21:38] Main: delete_begin()
[12:21:38] delete_begin(): thread created
[12:21:38] Main: delete_begin(): exit
[12:21:38] delete_thread()
[12:21:38] ------------------------------------------------------------------------------
[12:21:38] Removing snapshot: 2022-05-09_12-19-51
[12:21:38] Deleting subvolume: @home (Id:1183)
[12:21:38] btrfs subvolume delete  '/run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51/@home'
[12:21:38] Deleted subvolume: @home (Id:1183)

[12:21:38] Destroying qgroup: 0/1183
[12:21:38] btrfs qgroup destroy 0/1183 '/run/timeshift/backup'
[12:21:38] E: Failed to destroy qgroup: '0/1183'
[12:21:38] E: Failed to remove snapshot: 2022-05-09_12-19-51
[12:21:38] ------------------------------------------------------------------------------
[12:21:38] 
[12:21:38] page: 2
[12:21:39] SnapshotRepo: available()
[12:21:39] SnapshotRepo: has_btrfs_system()
[12:21:39] root_path=/run/timeshift/backup/@
[12:21:39] btrfs_mode=true
[12:21:39] is_available: ok
[12:21:39] SnapshotRepo: load_snapshots()
[12:21:39] Querying subvolume info...
[12:21:39] query_subvolume_id():@
[12:21:39] btrfs subvolume list '/run/timeshift/backup'
[12:21:39] query_subvolume_quota():@
[12:21:39] btrfs qgroup show  '/run/timeshift/backup'
[12:21:39] E: ERROR: can't list qgroups: quotas not enabled

[12:21:39] E: btrfs returned an error: 256
[12:21:39] E: Failed to query subvolume quota
[12:21:40] Query completed
[12:21:40] loading snapshots from '/run/timeshift/backup/timeshift-btrfs/snapshots': 1 found
[12:21:40] SnapshotRepo: check_status()
[12:21:40] SnapshotRepo: available()
[12:21:40] SnapshotRepo: has_btrfs_system()
[12:21:40] root_path=/run/timeshift/backup/@
[12:21:40] btrfs_mode=true
[12:21:40] is_available: ok
[12:21:40] SnapshotRepo: has_snapshots()
[12:21:40] SnapshotRepo: has_space()
[12:21:40] Device: get_disk_space_using_df(): 1
[12:21:40] Snapshot device: '/dev/nvme0n1p2'
[12:21:40] Snapshot location: /run/timeshift/backup
[12:21:40] OK
[12:21:40] 1 snapshots, 476,2 GB free
[12:21:40] Status: HAS_SNAPSHOTS_HAS_SPACE
[12:21:40] 
[12:21:40] SnapshotRepo: check_status(): exit
[12:21:40] SnapshotRepo: has_snapshots()
[12:21:40] SnapshotRepo: has_snapshots()
[12:21:43] main window: delete_selected()
[12:21:43] SnapshotRepo: available()
[12:21:43] SnapshotRepo: has_btrfs_system()
[12:21:43] root_path=/run/timeshift/backup/@
[12:21:43] btrfs_mode=true
[12:21:43] is_available: ok
[12:21:43] SnapshotRepo: has_snapshots()
[12:21:43] main window: delete_selected(): count=1
[12:21:43] DeleteWindow: DeleteWindow()
[12:21:43] SnapshotListBox: SnapshotListBox()
[12:21:43] SnapshotListBox: SnapshotListBox(): exit
[12:21:43] DeleteBox: DeleteBox()
[12:21:43] DeleteBox: DeleteBox(): exit
[12:21:43] DeleteFinishBox: DeleteFinishBox()
[12:21:43] DeleteFinishBox: DeleteFinishBox(): exit
[12:21:43] DeleteWindow: DeleteWindow(): exit
[12:21:43] 
[12:21:43] page: 1
[12:21:43] DeleteBox: delete_snapshots()
[12:21:43] Main: delete_begin()
[12:21:43] delete_begin(): thread created
[12:21:43] Main: delete_begin(): exit
[12:21:43] delete_thread()
[12:21:43] ------------------------------------------------------------------------------
[12:21:43] Removing snapshot: 2022-05-09_12-19-51
[12:21:43] Deleting subvolume: @ (Id:1182)
[12:21:43] btrfs subvolume delete  '/run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51/@'
[12:21:43] Deleted subvolume: @ (Id:1182)

[12:21:43] Destroying qgroup: 0/1182
[12:21:43] btrfs qgroup destroy 0/1182 '/run/timeshift/backup'
[12:21:43] E: Failed to destroy qgroup: '0/1182'
[12:21:43] E: Failed to remove snapshot: 2022-05-09_12-19-51
[12:21:43] ------------------------------------------------------------------------------
[12:21:43] 
[12:21:43] page: 2
[12:21:44] SnapshotRepo: available()
[12:21:44] SnapshotRepo: has_btrfs_system()
[12:21:44] root_path=/run/timeshift/backup/@
[12:21:44] btrfs_mode=true
[12:21:44] is_available: ok
[12:21:44] SnapshotRepo: load_snapshots()
[12:21:44] Querying subvolume info...
[12:21:44] query_subvolume_id():@
[12:21:44] btrfs subvolume list '/run/timeshift/backup'
[12:21:44] query_subvolume_quota():@
[12:21:44] btrfs qgroup show  '/run/timeshift/backup'
[12:21:44] E: ERROR: can't list qgroups: quotas not enabled

[12:21:44] E: btrfs returned an error: 256
[12:21:44] E: Failed to query subvolume quota
[12:21:44] Query completed
[12:21:44] loading snapshots from '/run/timeshift/backup/timeshift-btrfs/snapshots': 1 found
[12:21:44] SnapshotRepo: check_status()
[12:21:44] SnapshotRepo: available()
[12:21:44] SnapshotRepo: has_btrfs_system()
[12:21:44] root_path=/run/timeshift/backup/@
[12:21:44] btrfs_mode=true
[12:21:44] is_available: ok
[12:21:44] SnapshotRepo: has_snapshots()
[12:21:44] SnapshotRepo: has_space()
[12:21:44] Device: get_disk_space_using_df(): 1
[12:21:44] Snapshot device: '/dev/nvme0n1p2'
[12:21:44] Snapshot location: /run/timeshift/backup
[12:21:44] OK
[12:21:44] 1 snapshots, 476,2 GB free
[12:21:44] Status: HAS_SNAPSHOTS_HAS_SPACE
[12:21:44] 
[12:21:44] SnapshotRepo: check_status(): exit
[12:21:44] SnapshotRepo: has_snapshots()
[12:21:44] SnapshotRepo: has_snapshots()
[12:21:46] main window: delete_selected()
[12:21:46] SnapshotRepo: available()
[12:21:46] SnapshotRepo: has_btrfs_system()
[12:21:46] root_path=/run/timeshift/backup/@
[12:21:46] btrfs_mode=true
[12:21:46] is_available: ok
[12:21:46] SnapshotRepo: has_snapshots()
[12:21:46] main window: delete_selected(): count=1
[12:21:46] DeleteWindow: DeleteWindow()
[12:21:46] SnapshotListBox: SnapshotListBox()
[12:21:46] SnapshotListBox: SnapshotListBox(): exit
[12:21:46] DeleteBox: DeleteBox()
[12:21:46] DeleteBox: DeleteBox(): exit
[12:21:46] DeleteFinishBox: DeleteFinishBox()
[12:21:46] DeleteFinishBox: DeleteFinishBox(): exit
[12:21:46] DeleteWindow: DeleteWindow(): exit
[12:21:46] 
[12:21:46] page: 1
[12:21:46] DeleteBox: delete_snapshots()
[12:21:46] Main: delete_begin()
[12:21:46] delete_begin(): thread created
[12:21:46] Main: delete_begin(): exit
[12:21:46] delete_thread()
[12:21:46] ------------------------------------------------------------------------------
[12:21:46] Removing snapshot: 2022-05-09_12-19-51
[12:21:46] rm -rf '/run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51'
[12:21:46] Deleted directory: /run/timeshift/backup/timeshift-btrfs/snapshots/2022-05-09_12-19-51
[12:21:46] Removed snapshot: 2022-05-09_12-19-51
[12:21:46] ------------------------------------------------------------------------------
[12:21:46] 
[12:21:46] page: 2
[12:21:47] SnapshotRepo: available()
[12:21:47] SnapshotRepo: has_btrfs_system()
[12:21:47] root_path=/run/timeshift/backup/@
[12:21:47] btrfs_mode=true
[12:21:47] is_available: ok
[12:21:47] SnapshotRepo: load_snapshots()
[12:21:47] Querying subvolume info...
[12:21:47] query_subvolume_id():@
[12:21:47] btrfs subvolume list '/run/timeshift/backup'
[12:21:47] query_subvolume_quota():@
[12:21:47] btrfs qgroup show  '/run/timeshift/backup'
[12:21:47] E: ERROR: can't list qgroups: quotas not enabled

[12:21:47] E: btrfs returned an error: 256
[12:21:47] E: Failed to query subvolume quota
[12:21:48] Query completed
[12:21:48] loading snapshots from '/run/timeshift/backup/timeshift-btrfs/snapshots': 0 found
[12:21:48] SnapshotRepo: check_status()
[12:21:48] SnapshotRepo: available()
[12:21:48] SnapshotRepo: has_btrfs_system()
[12:21:48] root_path=/run/timeshift/backup/@
[12:21:48] btrfs_mode=true
[12:21:48] is_available: ok
[12:21:48] SnapshotRepo: has_snapshots()
[12:21:48] SnapshotRepo: has_space()
[12:21:48] Device: get_disk_space_using_df(): 1
[12:21:48] no snapshots
[12:21:48] Snapshot device: '/dev/nvme0n1p2'
[12:21:48] Snapshot location: /run/timeshift/backup
[12:21:48] No snapshots on this device
[12:21:48] First snapshot requires: 0 B
[12:21:48] Status: NO_SNAPSHOTS_HAS_SPACE
[12:21:48] 
[12:21:48] SnapshotRepo: check_status(): exit
[12:21:48] SnapshotRepo: has_snapshots()
[12:21:48] SnapshotRepo: has_snapshots()

As far as I know, Manjaro does not enable quotas by default (that would be shocking) and I did not touch quotas in anyway. It is disabled for btrfs and in Timeshift UI, still, these errors appear.

EDIT:
it is now solved by enabling quotas in the UI, restarting Timeshift then disabling quotas, restarting Timeshift again then create a snapshot and delete it → no more error. It seems the UI was showing quotas to be disabled (reflecting timeshift.json config file) but in reality, Timeshift still had quotas enabled.
Must be a Timeshift bug.

But still, Manjaro does not enable BTRFS quota, however when you do a reinstall of Timeshift, it is actually enabled in Timeshift! It should be disabled by default in Timeshift to prevent these issues.

1 Like

I don’t understand your recommendation.
Timeshift works totally fine without quotas. It is part of its wizard offering you to turn it off and on.

Manjaro already has auto snapshots built in and you can see them in Grub.

Switching to a completely different tool has absolutely nothing to do with this topic. And “just use Snapper” is really an understatement. I have actually used it a lot in the past and cannot recommend it at all. I am glad Manjaro doesn’t use Snapper.

If you need to create actual backups, just use btrbk. For a personal computer or laptop, Timeshift is fine.