"""Before each server starts, remove one real 128 MiB Linux memory block.
Called by the scenario start-app hook; the scenario restores the selected block.
"""
from pathlib import Path
import sys
import os
os.sync()
for p in sorted(Path('/sys/devices/system/memory').glob('memory[0-9]*/state'), key=lambda p:int(p.parent.name[6:]), reverse=True):
    if p.read_text().strip() != 'online':
        continue
    try:
        p.write_text('offline\n')
    except OSError:
        continue
    Path(sys.argv[1]).write_text(str(p))
    break
else:
    raise RuntimeError('No removable memory block found')
