2
0
mirror of https://github.com/xcat2/confluent.git synced 2025-01-14 19:57:50 +00:00

Tolerate delays in crypt-dm completion for imgutil

This commit is contained in:
Jarrod Johnson 2021-08-26 10:38:34 -04:00
parent 6bf51a20b2
commit d0c23e490b

View File

@ -15,6 +15,7 @@ import struct
import subprocess
import sys
import tempfile
import time
libc = ctypes.CDLL(ctypes.util.find_library('c'))
CLONE_NEWNS = 0x00020000
@ -315,7 +316,16 @@ def encrypt_image(plainfile, cryptfile, keyfile):
lastoffset = plainin.tell()
cryptout.write(chunk)
chunk = plainin.read(2097152)
subprocess.check_call(['dmsetup', 'remove', dmname])
mounted = True
tries = 30
time.sleep(0.1)
while mounted:
tries -= 1
try:
subprocess.check_call(['dmsetup', 'remove', dmname])
mounted = False
except subprocess.CalledProcessError:
time.sleep(0.1)
subprocess.check_call(['losetup', '-d', loopdev])
oum = os.umask(0o077)
with open(keyfile, 'w') as keyout:
@ -890,7 +900,16 @@ def unpack_image(args):
subprocess.check_call(['unsquashfs', '-d', 'rootfs', indir])
finally:
if cleandmtable:
subprocess.check_call(['dmsetup', 'remove', cleandmtable])
mounted = True
tries = 30
time.sleep(0.1)
while mounted and tries:
tries -= 1
try:
subprocess.check_call(['dmsetup', 'remove', cleandmtable])
mounted = False
except subprocess.CalledProcessError:
time.sleep(0.1)
def pack_image(args):