Only disable disk tests for critical errors

This commit is contained in:
2Shirt 2019-11-18 20:47:13 -07:00
parent b1a68e20d7
commit 4b7e34eb17
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -483,45 +483,45 @@ class DiskObj():
"""Run safety checks and disable tests if necessary."""
test_running = False
if self.nvme_attributes or self.smart_attributes:
disk_ok = self.check_attributes()
self.disk_ok = self.check_attributes()
test_running = self.check_smart_self_test(silent)
# Show errors (unless a SMART self-test is running)
if not (silent or test_running):
if disk_ok:
# 199/C7 warning
if self.smart_attributes.get(199, {}).get('raw', 0) > 0:
print_warning('199/C7 error detected')
print_standard(' (Have you tried swapping the disk cable?)')
else:
# Override?
show_report(
self.generate_attribute_report(description=True),
log_report=True)
print_warning(' {} error(s) detected.'.format(self.attr_type))
if self.override_disabled:
print_standard('Tests disabled for this device')
pause()
elif not (len(self.tests) == 3 and OVERRIDES_LIMITED):
if OVERRIDES_FORCED or ask('Run tests on this device anyway?'):
disk_ok = True
if 'NVMe / SMART' in self.tests:
self.disable_test('NVMe / SMART', 'OVERRIDE')
if not self.nvme_attributes and self.smart_attributes:
# Re-enable for SMART short-tests
self.tests['NVMe / SMART'].disabled = False
print_standard(' ')
#if not (silent or test_running):
# if self.disk_ok:
# # 199/C7 warning
# if self.smart_attributes.get(199, {}).get('raw', 0) > 0:
# print_warning('199/C7 error detected')
# print_standard(' (Have you tried swapping the disk cable?)')
# else:
# # Override?
# show_report(
# self.generate_attribute_report(description=True),
# log_report=True)
# print_warning(' {} error(s) detected.'.format(self.attr_type))
# if self.override_disabled:
# print_standard('Tests disabled for this device')
# pause()
# elif not (len(self.tests) == 3 and OVERRIDES_LIMITED):
# if OVERRIDES_FORCED or ask('Run tests on this device anyway?'):
# self.disk_ok = True
# if 'NVMe / SMART' in self.tests:
# self.disable_test('NVMe / SMART', 'OVERRIDE')
# if not self.nvme_attributes and self.smart_attributes:
# # Re-enable for SMART short-tests
# self.tests['NVMe / SMART'].disabled = False
# print_standard(' ')
else:
# No NVMe/SMART details
self.disable_test('NVMe / SMART', 'N/A')
if silent:
disk_ok = OVERRIDES_FORCED
else:
show_report(
self.generate_attribute_report(description=True),
log_report=True)
disk_ok = OVERRIDES_FORCED or ask('Run tests on this device anyway?')
print_standard(' ')
#if silent:
# self.disk_ok = OVERRIDES_FORCED
#else:
# show_report(
# self.generate_attribute_report(description=True),
# log_report=True)
# self.disk_ok = OVERRIDES_FORCED or ask('Run tests on this device anyway?')
# print_standard(' ')
# Disable tests if necessary (statuses won't be overwritten)
if test_running:
@ -530,7 +530,8 @@ class DiskObj():
self.disable_test('NVMe / SMART', 'Denied')
for t in ['badblocks', 'I/O Benchmark']:
self.disable_test(t, 'Denied')
elif not disk_ok:
elif self.override_disabled:
# Critical disk error, disable all tests
self.disable_test('NVMe / SMART', 'FAIL', test_failed=True)
for t in ['badblocks', 'I/O Benchmark']:
self.disable_test(t, 'Denied')