Removes btrfs subvolume warnings on incorrect subvolume locations (#1267)

* Adding debug information

* Adding debug information

* Adding debug information

* Removed a 'already-a-subvolume' check as it requires more information.

* Adding debug information

* Adding debug information

* Made sure Partition().subvolumes() only attempts to retrieve btrfs subvolume information if fstype==btrfs.

* Removed debug information
This commit is contained in:
Anton Hvornum 2022-05-28 15:40:36 +02:00 committed by GitHub
parent 5c9bd235d3
commit 486ad7dd6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 6 deletions

View File

@ -108,9 +108,13 @@ class BTRFSPartition(Partition):
if glob.glob(str(subvolume / '*')):
raise DiskError(f"Cannot create subvolume at {subvolume} because it contains data (non-empty folder target is not supported by BTRFS)")
elif subvolinfo := subvolume_info_from_path(subvolume):
raise DiskError(f"Destination {subvolume} is already a subvolume: {subvolinfo}")
# Ideally we would like to check if the destination is already a subvolume.
# But then we would need the mount-point at this stage as well.
# So we'll comment out this check:
# elif subvolinfo := subvolume_info_from_path(subvolume):
# raise DiskError(f"Destination {subvolume} is already a subvolume: {subvolinfo}")
# And deal with it here:
SysCommand(f"btrfs subvolume create {subvolume}")
return subvolume_info_from_path(subvolume)

View File

@ -310,8 +310,9 @@ class Partition:
def iterate_children_recursively(information):
for child in information.get('children', []):
if target := child.get('target'):
if subvolume := subvolume_info_from_path(pathlib.Path(target)):
yield subvolume
if child.get('fstype') == 'btrfs':
if subvolume := subvolume_info_from_path(pathlib.Path(target)):
yield subvolume
if child.get('children'):
for subchild in iterate_children_recursively(child):
@ -320,8 +321,9 @@ class Partition:
for mountpoint in self.mount_information:
if result := findmnt(pathlib.Path(mountpoint['target'])):
for filesystem in result.get('filesystems', []):
if subvolume := subvolume_info_from_path(pathlib.Path(mountpoint['target'])):
yield subvolume
if mountpoint.get('fstype') == 'btrfs':
if subvolume := subvolume_info_from_path(pathlib.Path(mountpoint['target'])):
yield subvolume
for child in iterate_children_recursively(filesystem):
yield child