# Run online scrubbers in parallel, but avoid thrashing.
+@INIT_GETTEXT@
import subprocess
import json
import threading
global debug
if debug:
- print('run ', ' '.join(self.cmdline))
+ print(_('run '), ' '.join(self.cmdline))
try:
self.proc = subprocess.Popen(self.cmdline)
global debug
if debug:
- print('kill ', ' '.join(self.cmdline))
+ print(_('kill '), ' '.join(self.cmdline))
if self.proc is not None:
self.proc.terminate()
for i in range(0, int(wait_for / interval)):
s = self.state()
if debug:
- print('waiting for activation %s %s' % (self.unitname, s))
+ msg = _("waiting for activation")
+ print(f'{msg} {self.unitname} {s}')
if s == 'failed':
return 1
if s != 'inactive':
s = self.state()
if debug:
- print('waited for startup %s %s' % (self.unitname, s))
+ msg = _('waited for startup')
+ print(f'{msg} {self.unitname} {s}')
if s == 'failed':
return 1
if s != 'inactive':
s = self.state()
while s not in ['failed', 'inactive']:
if debug:
- print('waiting %s %s' % (self.unitname, s))
+ msg = _("waiting for")
+ print(f'{msg} {self.unitname} {s}')
time.sleep(interval)
s = self.state()
if debug:
- print('waited %s %s' % (self.unitname, s))
+ msg = _('waited for')
+ print(f'{msg} {self.unitname} {s}')
if s == 'failed':
return 1
return 0
global debug
if debug:
- print('starting %s' % self.unitname)
+ msg = _("starting")
+ print(f'{msg} {self.unitname}')
try:
last_active = self.last_activation()
global debug
if debug:
- print('stopping %s' % self.unitname)
+ msg = _('stopping')
+ print(f'{msg} {self.unitname}')
try:
self.__dbusrun(lambda: self.unit.Stop('replace'))
if 'SERVICE_MODE' in os.environ:
ret = run_service(mnt, scrub_media, killfuncs)
if ret == 32:
- print("Scrubbing %s disabled by administrator, (err=%d)" % (mnt, ret))
+ msg = _("Scrubbing disabled by administrator")
+ print(f"{mnt}: {msg}, (err={ret})")
sys.stdout.flush()
return
if ret == 0 or ret == 1:
- print("Scrubbing %s done, (err=%d)" % (mnt, ret))
+ msg = _("Scrubbing done")
+ print(f"{mnt}: {msg}, (err={ret})")
sys.stdout.flush()
retcode |= ret
return
# systemd services are unavailable.
ret = run_subprocess(mnt, scrub_media, killfuncs)
if ret >= 0:
- print("Scrubbing %s done, (err=%d)" % (mnt, ret))
+ msg = _("Scrubbing done")
+ print(f"{mnt}: {msg}, (err={ret})")
sys.stdout.flush()
retcode |= ret
return
if terminate:
return
- print("Unable to start scrub tool.")
+ print(_("Unable to start scrub tool."))
sys.stdout.flush()
finally:
running_devs -= mntdevs
global terminate
if debug:
- print('Signal handler called with signal', signum)
+ print(_('Signal handler called with signal'), signum)
sys.stdout.flush()
terminate = True
global terminate
if debug:
- print('waiting for threads to terminate')
+ print(_('waiting for threads to terminate'))
sys.stdout.flush()
cond.acquire()
if not terminate:
return False
- print("Terminating...")
+ print(_("Terminating..."))
sys.stdout.flush()
while len(killfuncs) > 0:
fn = killfuncs.pop()
try:
interval = scan_interval(args.auto_media_scan_interval)
except Exception as e:
- raise Exception('%s: Invalid media scan interval.' % \
- args.auto_media_scan_interval)
+ msg = _("Invalid media scan interval.")
+ raise Exception(f'{args.auto_media_scan_interval}: {msg}')
p = Path(args.auto_media_scan_stamp)
if already_enabled:
with p.open('w') as f:
pass
if not already_enabled:
- print('Automatically enabling file data scrub.')
+ print(_('Automatically enabling file data scrub.'))
sys.stdout.flush()
return res
global debug
parser = argparse.ArgumentParser( \
- description = "Scrub all mounted XFS filesystems.")
- parser.add_argument("--debug", help = "Enabling debugging messages.", \
+ description = _("Scrub all mounted XFS filesystems."))
+ parser.add_argument("--debug", help = _("Enabling debugging messages."), \
action = "store_true")
- parser.add_argument("-V", help = "Report version and exit.", \
+ parser.add_argument("-V", help = _("Report version and exit."), \
action = "store_true")
- parser.add_argument("-x", help = "Scrub file data after filesystem metadata.", \
+ parser.add_argument("-x", help = _("Scrub file data after filesystem metadata."), \
action = "store_true")
- parser.add_argument("--auto-media-scan-interval", help = "Automatically scrub file data at this interval.", \
+ parser.add_argument("--auto-media-scan-interval", help = _("Automatically scrub file data at this interval."), \
default = None)
- parser.add_argument("--auto-media-scan-stamp", help = "Stamp file for automatic file data scrub.", \
+ parser.add_argument("--auto-media-scan-stamp", help = _("Stamp file for automatic file data scrub."), \
default = '@stampfile@')
args = parser.parse_args()
if args.V:
- print("xfs_scrub_all version @pkg_version@")
+ msg = _("xfs_scrub_all version")
+ pkgver = "@pkg_version@"
+ print(f"{msg} {pkgver}")
sys.exit(0)
if args.debug: