Bind mount /run into chroot when installing grub
grub-mkconfig runs a lvs command that attempts to access /run/lvm
once for each block device, currently it times out after 10 seconds
for each device and moves on. Multiple 10 second delays become
a problem (causing IPA API timeouts) when multiple block devices
are present. Bind mounting in /run avoids the delay and the
timeouts.
Task: 30616
Story: 2005507
Change-Id: Iae8b7808a35bff121f64971aadd4bd36b5f5bb71
(cherry picked from commit 9c35f02792
)
This commit is contained in:
parent
ee768af3da
commit
8531d14c22
|
@ -30,7 +30,7 @@ from ironic_python_agent import utils
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
BIND_MOUNTS = ('/dev', '/proc')
|
BIND_MOUNTS = ('/dev', '/proc', '/run')
|
||||||
|
|
||||||
|
|
||||||
def _get_partition(device, uuid):
|
def _get_partition(device, uuid):
|
||||||
|
|
|
@ -104,6 +104,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
self.fake_dir + '/dev'),
|
self.fake_dir + '/dev'),
|
||||||
mock.call('mount', '-o', 'bind', '/proc',
|
mock.call('mount', '-o', 'bind', '/proc',
|
||||||
self.fake_dir + '/proc'),
|
self.fake_dir + '/proc'),
|
||||||
|
mock.call('mount', '-o', 'bind', '/run',
|
||||||
|
self.fake_dir + '/run'),
|
||||||
mock.call('mount', '-t', 'sysfs', 'none',
|
mock.call('mount', '-t', 'sysfs', 'none',
|
||||||
self.fake_dir + '/sys'),
|
self.fake_dir + '/sys'),
|
||||||
mock.call(('chroot %s /bin/sh -c '
|
mock.call(('chroot %s /bin/sh -c '
|
||||||
|
@ -119,6 +121,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/proc',
|
mock.call('umount', self.fake_dir + '/proc',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
|
mock.call('umount', self.fake_dir + '/run',
|
||||||
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/sys',
|
mock.call('umount', self.fake_dir + '/sys',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir, attempts=3,
|
mock.call('umount', self.fake_dir, attempts=3,
|
||||||
|
@ -143,6 +147,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
self.fake_dir + '/dev'),
|
self.fake_dir + '/dev'),
|
||||||
mock.call('mount', '-o', 'bind', '/proc',
|
mock.call('mount', '-o', 'bind', '/proc',
|
||||||
self.fake_dir + '/proc'),
|
self.fake_dir + '/proc'),
|
||||||
|
mock.call('mount', '-o', 'bind', '/run',
|
||||||
|
self.fake_dir + '/run'),
|
||||||
mock.call('mount', '-t', 'sysfs', 'none',
|
mock.call('mount', '-t', 'sysfs', 'none',
|
||||||
self.fake_dir + '/sys'),
|
self.fake_dir + '/sys'),
|
||||||
mock.call(('chroot %s /bin/sh -c '
|
mock.call(('chroot %s /bin/sh -c '
|
||||||
|
@ -159,6 +165,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/proc',
|
mock.call('umount', self.fake_dir + '/proc',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
|
mock.call('umount', self.fake_dir + '/run',
|
||||||
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/sys',
|
mock.call('umount', self.fake_dir + '/sys',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir, attempts=3,
|
mock.call('umount', self.fake_dir, attempts=3,
|
||||||
|
@ -189,6 +197,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
self.fake_dir + '/dev'),
|
self.fake_dir + '/dev'),
|
||||||
mock.call('mount', '-o', 'bind', '/proc',
|
mock.call('mount', '-o', 'bind', '/proc',
|
||||||
self.fake_dir + '/proc'),
|
self.fake_dir + '/proc'),
|
||||||
|
mock.call('mount', '-o', 'bind', '/run',
|
||||||
|
self.fake_dir + '/run'),
|
||||||
mock.call('mount', '-t', 'sysfs', 'none',
|
mock.call('mount', '-t', 'sysfs', 'none',
|
||||||
self.fake_dir + '/sys'),
|
self.fake_dir + '/sys'),
|
||||||
mock.call('mount', self.fake_efi_system_part,
|
mock.call('mount', self.fake_efi_system_part,
|
||||||
|
@ -212,6 +222,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/proc',
|
mock.call('umount', self.fake_dir + '/proc',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
|
mock.call('umount', self.fake_dir + '/run',
|
||||||
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/sys',
|
mock.call('umount', self.fake_dir + '/sys',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir, attempts=3,
|
mock.call('umount', self.fake_dir, attempts=3,
|
||||||
|
@ -249,6 +261,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
self.fake_dir + '/dev'),
|
self.fake_dir + '/dev'),
|
||||||
mock.call('mount', '-o', 'bind', '/proc',
|
mock.call('mount', '-o', 'bind', '/proc',
|
||||||
self.fake_dir + '/proc'),
|
self.fake_dir + '/proc'),
|
||||||
|
mock.call('mount', '-o', 'bind', '/run',
|
||||||
|
self.fake_dir + '/run'),
|
||||||
mock.call('mount', '-t', 'sysfs', 'none',
|
mock.call('mount', '-t', 'sysfs', 'none',
|
||||||
self.fake_dir + '/sys'),
|
self.fake_dir + '/sys'),
|
||||||
mock.call('mount', self.fake_efi_system_part,
|
mock.call('mount', self.fake_efi_system_part,
|
||||||
|
@ -294,6 +308,8 @@ class TestImageExtension(base.IronicAgentTest):
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/proc',
|
mock.call('umount', self.fake_dir + '/proc',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
|
mock.call('umount', self.fake_dir + '/run',
|
||||||
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir + '/sys',
|
mock.call('umount', self.fake_dir + '/sys',
|
||||||
attempts=3, delay_on_retry=True),
|
attempts=3, delay_on_retry=True),
|
||||||
mock.call('umount', self.fake_dir, attempts=3,
|
mock.call('umount', self.fake_dir, attempts=3,
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Mounts /run into chroot when installing grub to prevent timeouts.
|
Loading…
Reference in New Issue