[oe-commits] [openembedded-core] 09/09: initrdscripts/init-live.sh: fix mounts w/ spaces fail to move to real rootfs

git at git.openembedded.org git at git.openembedded.org
Thu Jun 28 22:39:30 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 6f8f984ba363f764e83290b972ec31a90aad1603
Author: Arsalan H. Awan <Arsalan_Awan at mentor.com>
AuthorDate: Thu Jun 28 19:16:36 2018 +0500

    initrdscripts/init-live.sh: fix mounts w/ spaces fail to move to real rootfs
    
    When there are spaces in the mount points of devices e.g.:
    
     a partition mounted at "/run/media/My Root Partition-sda1",
    
    the initrd fails to move such mount points over to the
    corresponding directories at /media under the real root filesystem,
    and the mount points would appear at the same location as they were
    mounted on when detected by initrd, for example:
     here: "/run/media/My Root Partition-sda1"
     instead of here: "/media/My Root Partition-sda1"
    
    This causes issues such as:
    
      * The disks/partitions cannot be formated with any filesystem
        using e.g. mkfs.ext4 or mke2fs in general. When tried to do so
        by making sure the device is not mounted, it failed with
        errors such as:
    
        > /dev/sda1 is apparently in use by the system; will not make a
          filesystem here!
        > /dev/sda1: Device or resource busy while setting up superblock
    
      * The read/write operations become extremely slow. e.g. Under testing,
        it took approx. 2 hours just to copy 700 MB of data to the partition,
        and it took more than 40 minutes to delete that data from it.
        Same operations took under 5 minutes on a partition that had no
        spaces in its mount point (or that was successfully moved to real
        root by initrd and appeared under /media instead of /run/media).
    
    This commit fixes such issues by quoting the arguments of failing mount
    move commands and by parsing OCT or HEX encoded special characters
    such as spaces to ASCII charecters in the mount points as kernel
    populates the procfs like so.
    
    Signed-off-by: Arsalan H. Awan <Arsalan_Awan at mentor.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/recipes-core/initrdscripts/files/init-live.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
index 46cab6c..65183d7 100644
--- a/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -95,8 +95,11 @@ boot_live_root() {
     # Move the mount points of some filesystems over to
     # the corresponding directories under the real root filesystem.
     for dir in `awk '/\/dev.* \/run\/media/{print $2}' /proc/mounts`; do
-        mkdir -p  ${ROOT_MOUNT}/media/${dir##*/}
-        mount -n --move $dir ${ROOT_MOUNT}/media/${dir##*/}
+        # Parse any OCT or HEX encoded chars such as spaces
+        # in the mount points to actual ASCII chars
+        dir=`printf $dir`
+        mkdir -p "${ROOT_MOUNT}/media/${dir##*/}"
+        mount -n --move "$dir" "${ROOT_MOUNT}/media/${dir##*/}"
     done
     mount -n --move /proc ${ROOT_MOUNT}/proc
     mount -n --move /sys ${ROOT_MOUNT}/sys

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list