diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-04-22 10:54:49 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-04-23 00:08:38 +0100 |
commit | d5eb86b3aa2fe41c39845c5dc9a7d50d86736509 (patch) | |
tree | c93d9314497d1776c4ff88d7df93fff112cf2fb2 | |
parent | 6f7bc9e4aff8923bcc45479aa1b269764fb9a20b (diff) | |
download | poky-d5eb86b3aa2fe41c39845c5dc9a7d50d86736509.tar.gz |
runqemu: Ensure we cleanup snapshot files after image run
We need to cleanup snapshot files if we make a copy of them to ensure
the tmpfs doesn't run out of space. There is already NFS code needing
this so make it a generic code path.
(From OE-Core rev: a3e0eec5a4785a0c4859455eb10b43aa832e606d)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-x | scripts/runqemu | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/scripts/runqemu b/scripts/runqemu index ba0b701aff..edd17d09c4 100755 --- a/scripts/runqemu +++ b/scripts/runqemu | |||
@@ -145,7 +145,6 @@ class BaseConfig(object): | |||
145 | self.qemu_opt = '' | 145 | self.qemu_opt = '' |
146 | self.qemu_opt_script = '' | 146 | self.qemu_opt_script = '' |
147 | self.qemuparams = '' | 147 | self.qemuparams = '' |
148 | self.clean_nfs_dir = False | ||
149 | self.nfs_server = '' | 148 | self.nfs_server = '' |
150 | self.rootfs = '' | 149 | self.rootfs = '' |
151 | # File name(s) of a OVMF firmware file or variable store, | 150 | # File name(s) of a OVMF firmware file or variable store, |
@@ -210,6 +209,8 @@ class BaseConfig(object): | |||
210 | self.qemupid = None | 209 | self.qemupid = None |
211 | # avoid cleanup twice | 210 | # avoid cleanup twice |
212 | self.cleaned = False | 211 | self.cleaned = False |
212 | # Files to cleanup after run | ||
213 | self.cleanup_files = [] | ||
213 | 214 | ||
214 | def acquire_taplock(self, error=True): | 215 | def acquire_taplock(self, error=True): |
215 | logger.debug("Acquiring lockfile %s..." % self.taplock) | 216 | logger.debug("Acquiring lockfile %s..." % self.taplock) |
@@ -1020,8 +1021,9 @@ class BaseConfig(object): | |||
1020 | logger.info('Running %s...' % str(cmd)) | 1021 | logger.info('Running %s...' % str(cmd)) |
1021 | if subprocess.call(cmd) != 0: | 1022 | if subprocess.call(cmd) != 0: |
1022 | raise RunQemuError('Failed to run %s' % cmd) | 1023 | raise RunQemuError('Failed to run %s' % cmd) |
1023 | self.clean_nfs_dir = True | ||
1024 | self.rootfs = dest | 1024 | self.rootfs = dest |
1025 | self.cleanup_files.append(self.rootfs) | ||
1026 | self.cleanup_files.append('%s.pseudo_state' % self.rootfs) | ||
1025 | 1027 | ||
1026 | # Start the userspace NFS server | 1028 | # Start the userspace NFS server |
1027 | cmd = ('runqemu-export-rootfs', 'start', self.rootfs) | 1029 | cmd = ('runqemu-export-rootfs', 'start', self.rootfs) |
@@ -1204,6 +1206,7 @@ class BaseConfig(object): | |||
1204 | self.rootfs = newrootfs | 1206 | self.rootfs = newrootfs |
1205 | # Don't need a second copy now! | 1207 | # Don't need a second copy now! |
1206 | self.snapshot = False | 1208 | self.snapshot = False |
1209 | self.cleanup_files.append(newrootfs) | ||
1207 | 1210 | ||
1208 | qb_rootfs_opt = self.get('QB_ROOTFS_OPT') | 1211 | qb_rootfs_opt = self.get('QB_ROOTFS_OPT') |
1209 | if qb_rootfs_opt: | 1212 | if qb_rootfs_opt: |
@@ -1476,10 +1479,13 @@ class BaseConfig(object): | |||
1476 | if self.saved_stty: | 1479 | if self.saved_stty: |
1477 | subprocess.check_call(("stty", self.saved_stty)) | 1480 | subprocess.check_call(("stty", self.saved_stty)) |
1478 | 1481 | ||
1479 | if self.clean_nfs_dir: | 1482 | if self.cleanup_files: |
1480 | logger.info('Removing %s' % self.rootfs) | 1483 | for ent in self.cleanup_files: |
1481 | shutil.rmtree(self.rootfs) | 1484 | logger.info('Removing %s' % ent) |
1482 | shutil.rmtree('%s.pseudo_state' % self.rootfs) | 1485 | if os.path.isfile(ent): |
1486 | os.remove(ent) | ||
1487 | else: | ||
1488 | shutil.rmtree(ent) | ||
1483 | 1489 | ||
1484 | self.cleaned = True | 1490 | self.cleaned = True |
1485 | 1491 | ||