RHEL7: "leapp upgrade" fails in reboot phase with message "OSError: [Errno 30] Read-only file system" then enters Emergency mode

Solution Verified - Updated

Environment

  • Red Hat Enterprise Linux 7.9
    • Leapp

Issue

  • leapp upgrade fails in reboot phase with below error message and enters Emergency mode :
localhost upgrade[827]: Traceback (most recent call last):
localhost upgrade[827]:   File "/usr/bin/leapp", line 9, in <module>
localhost upgrade[827]:     load_entry_point('leapp==0.15.1', 'console_scripts', 'leapp')()
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/cli/__init__.py", line 45, in main
localhost upgrade[827]:     cli.command.execute('leapp version {}'.format(VERSION))
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/utils/clicmd.py", line 111, in execute
localhost upgrade[827]:     args.func(args)
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/utils/clicmd.py", line 133, in called
localhost upgrade[827]:     self.target(args)
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/cli/commands/upgrade/breadcrumbs.py", line 147, in wrapper
localhost upgrade[827]:     return f(*args, breadcrumbs=breadcrumbs, **kwargs)
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/cli/commands/upgrade/__init__.py", line 89, in upgrade
localhost upgrade[827]:     repositories = util.load_repositories()
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/cli/commands/upgrade/util.py", line 90, in load_repositories
localhost upgrade[827]:     manager.load()
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/repository/manager.py", line 120, in load
localhost upgrade[827]:     repo.load(resolve=False, stage=_LoadStage.ACTORS, skip_actors_discovery=skip_actors_discovery)
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/repository/__init__.py", line 153, in load
localhost upgrade[827]:     actor.discover()
localhost upgrade[827]:   File "/usr/lib/python2.7/site-packages/leapp/repository/actor_definition.py", line 207, in discover
localhost upgrade[827]:     q = Queue(1)
localhost upgrade[827]:   File "/usr/lib64/python2.7/multiprocessing/__init__.py", line 218, in Queue
localhost upgrade[827]:     return Queue(maxsize)
localhost upgrade[827]:   File "/usr/lib64/python2.7/multiprocessing/queues.py", line 63, in __init__
localhost upgrade[827]:     self._rlock = Lock()
localhost upgrade[827]:   File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 147, in __init__
localhost upgrade[827]:     SemLock.__init__(self, SEMAPHORE, 1, 1)
localhost upgrade[827]:   File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 75, in __init__
localhost upgrade[827]:     sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
localhost upgrade[827]: OSError: [Errno 30] Read-only file system

Resolution

  • Ensure /dev/shm is mounted as tmpfs filesystem type

  • The /etc/fstab entry should look like below for /dev/shm filesystem:

    /dev/mapper/<vgname>-<lvname> /dev/shm               tmpfs     defaults        0 0
    

Root Cause

  • /dev/shm filesystem is mounted as xfs/ext filesystem type instead of tmpfs.

Diagnostic Steps

  • Verify /etc/fstab file for an entry related to /dev/shm
# cat /etc/fstab | grep shm
/dev/mapper/<vgname>-<lvname> /dev/shm                xfs     defaults,noexec        0 0
SBR
Components
Category

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.