parent
d958945fe8
commit
acd484f891
2 changed files with 14 additions and 0 deletions
|
|
@ -645,6 +645,11 @@ class State():
|
||||||
|
|
||||||
# Select source
|
# Select source
|
||||||
self.source = select_disk_obj('source', disk_menu, docopt_args['<source>'])
|
self.source = select_disk_obj('source', disk_menu, docopt_args['<source>'])
|
||||||
|
if self.source.trim:
|
||||||
|
cli.print_error('Source device supports TRIM')
|
||||||
|
cli.print_warning('Continuing recovery is STRONGLY DISADVISED!')
|
||||||
|
if not cli.ask(' Proceed with recovery?'):
|
||||||
|
cli.abort()
|
||||||
self.ui.set_title('Source', self.source.name)
|
self.ui.set_title('Source', self.source.name)
|
||||||
|
|
||||||
# Select destination
|
# Select destination
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ class Disk:
|
||||||
size: int = field(init=False)
|
size: int = field(init=False)
|
||||||
ssd: bool = field(init=False)
|
ssd: bool = field(init=False)
|
||||||
tests: list[Test] = field(init=False, default_factory=list)
|
tests: list[Test] = field(init=False, default_factory=list)
|
||||||
|
trim: bool = field(init=False)
|
||||||
use_sat: bool = field(init=False, default=False)
|
use_sat: bool = field(init=False, default=False)
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
|
|
@ -213,6 +214,7 @@ class Disk:
|
||||||
self.serial = self.raw_details.get('serial', 'Unknown Serial')
|
self.serial = self.raw_details.get('serial', 'Unknown Serial')
|
||||||
self.size = self.raw_details.get('size', -1)
|
self.size = self.raw_details.get('size', -1)
|
||||||
self.ssd = self.raw_details.get('ssd', False)
|
self.ssd = self.raw_details.get('ssd', False)
|
||||||
|
self.trim = self.raw_details.get('trim', False)
|
||||||
|
|
||||||
# Ensure certain attributes types
|
# Ensure certain attributes types
|
||||||
## NOTE: This is ugly, deal.
|
## NOTE: This is ugly, deal.
|
||||||
|
|
@ -226,6 +228,10 @@ class Disk:
|
||||||
if attr == 'size':
|
if attr == 'size':
|
||||||
setattr(self, attr, -1)
|
setattr(self, attr, -1)
|
||||||
|
|
||||||
|
# Add TRIM note
|
||||||
|
if self.trim:
|
||||||
|
self.add_note('TRIM support detected', 'YELLOW')
|
||||||
|
|
||||||
|
|
||||||
# Functions
|
# Functions
|
||||||
def get_disk_details_linux(disk_path, skip_children=True) -> dict[Any, Any]:
|
def get_disk_details_linux(disk_path, skip_children=True) -> dict[Any, Any]:
|
||||||
|
|
@ -249,10 +255,12 @@ def get_disk_details_linux(disk_path, skip_children=True) -> dict[Any, Any]:
|
||||||
dev['bus'] = dev.pop('tran', '???')
|
dev['bus'] = dev.pop('tran', '???')
|
||||||
dev['parent'] = dev.pop('pkname', None)
|
dev['parent'] = dev.pop('pkname', None)
|
||||||
dev['ssd'] = not dev.pop('rota', True)
|
dev['ssd'] = not dev.pop('rota', True)
|
||||||
|
dev['trim'] = bool(dev.pop('disc-max', 0))
|
||||||
if 'loop' in str(disk_path) and dev['bus'] is None:
|
if 'loop' in str(disk_path) and dev['bus'] is None:
|
||||||
dev['bus'] = 'Image'
|
dev['bus'] = 'Image'
|
||||||
dev['model'] = ''
|
dev['model'] = ''
|
||||||
dev['serial'] = ''
|
dev['serial'] = ''
|
||||||
|
dev['trim'] = False # NOTE: This check is just for physical devices
|
||||||
|
|
||||||
# Convert to dict
|
# Convert to dict
|
||||||
details = dev_list.pop(0)
|
details = dev_list.pop(0)
|
||||||
|
|
@ -310,6 +318,7 @@ def get_disk_details_macos(disk_path, skip_children=True) -> dict:
|
||||||
dev['serial'] = get_disk_serial_macos(dev['path'])
|
dev['serial'] = get_disk_serial_macos(dev['path'])
|
||||||
dev['size'] = dev.pop('Size', -1)
|
dev['size'] = dev.pop('Size', -1)
|
||||||
dev['ssd'] = dev.pop('SolidState', False)
|
dev['ssd'] = dev.pop('SolidState', False)
|
||||||
|
dev['trim'] = False # TODO: ACtually check for TRIM
|
||||||
dev['vendor'] = ''
|
dev['vendor'] = ''
|
||||||
if dev.get('WholeDisk', True):
|
if dev.get('WholeDisk', True):
|
||||||
dev['parent'] = None
|
dev['parent'] = None
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue