Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Scott Garman <scott.a.garman@intel.com>
To: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/1] runqemu-export-rootfs and friends: don't put pseudo db in target fs
Date: Fri, 24 Aug 2012 00:31:45 -0700	[thread overview]
Message-ID: <50372DE1.40704@intel.com> (raw)
In-Reply-To: <eef91770e809fcde924c197427cf4e1e956a29ae.1345686284.git.peter.seebach@windriver.com>

On 08/22/2012 06:47 PM, Peter Seebach wrote:
> In a few places, we have scripts which use <rootfs>/var/pseudo for
> the pseudo state directory controlling a given filesystem. This
> seems possibly risky because it means that stuff running under
> qemu or whatnot could wipe out the data being used to handle that
> rootfs. Move this to:
>    <rootfs>/../pseudo_state_$(basename $rootfs)
> to avoid problems.
>
> This also solves at least one case (not directly hit by yocto's
> tree) wherein you could end up trying to remove a rootfs while
> pseudo was using a database inside that rootfs, and thus the
> remove would fail.
>
> Signed-off-by: Peter Seebach <peter.seebach@windriver.com>

I haven't tested this, but it appears to address the concerns I raised 
earlier.

With Jessica on vacation, could anyone else on the SDK team try this out 
and verify it with some sanity tests? e.g, boot some images using unfs 
and from an installed sdk.

Scott

> ---
>   .../installer/adt-installer/scripts/extract_rootfs |    8 ++++----
>   scripts/runqemu-export-rootfs                      |    2 +-
>   scripts/runqemu-extract-sdk                        |   15 +++++++++------
>   3 files changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/meta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs b/meta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs
> index 62dc170..fee463c 100755
> --- a/meta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs
> +++ b/meta/recipes-devtools/installer/adt-installer/scripts/extract_rootfs
> @@ -28,7 +28,6 @@ extract_rootfs()
>     native_sysroot=$3
>     target_sysroot=$2
>     PSEUDO_COMMAND="$native_sysroot/usr/bin/pseudo"
> -  PSEUDO_OPTS="-P $natvie_sysroot/usr"
>     TAR_OPTS="-xjf"
>     PSEUDO_OPTS="-P $native_sysroot/usr"
>
> @@ -46,9 +45,10 @@ extract_rootfs()
>       mkdir -p "$target_sysroot"
>     fi
>
> -  mkdir -p "$target_sysroot/var/pseudo"
> -  touch "$target_sysroot/var/pseudo/pseudo.pid"
> -  PSEUDO_LOCALSTATEDIR="$target_sysroot/var/pseudo"
> +  pseudo_state_dir="$target_sysroot/../pseudo_state_$(basename "$target_sysroot")"
> +  mkdir -p "$pseudo_state_dir"
> +  touch "$pseudo_state_dir/pseudo.pid"
> +  PSEUDO_LOCALSTATEDIR="$pseudo_state_dir"
>     export PSEUDO_LOCALSTATEDIR
>
>     echo_info "Extracting rootfs: $1, using pseudo..."
> diff --git a/scripts/runqemu-export-rootfs b/scripts/runqemu-export-rootfs
> index f8213ba..0e0d32c 100755
> --- a/scripts/runqemu-export-rootfs
> +++ b/scripts/runqemu-export-rootfs
> @@ -68,7 +68,7 @@ NFSPID=~/.runqemu-sdk/nfs$NFS_INSTANCE.pid
>   MOUNTPID=~/.runqemu-sdk/mount$NFS_INSTANCE.pid
>
>   PSEUDO_OPTS="-P $OECORE_NATIVE_SYSROOT/usr"
> -PSEUDO_LOCALSTATEDIR="$NFS_EXPORT_DIR/var/pseudo"
> +PSEUDO_LOCALSTATEDIR="$NFS_EXPORT_DIR/../pseudo_state/$(basename $NFS_EXPORT_DIR)"
>   export PSEUDO_LOCALSTATEDIR
>
>   if [ ! -d "$PSEUDO_LOCALSTATEDIR" ]; then
> diff --git a/scripts/runqemu-extract-sdk b/scripts/runqemu-extract-sdk
> index 4b52475..88fdf0d 100755
> --- a/scripts/runqemu-extract-sdk
> +++ b/scripts/runqemu-extract-sdk
> @@ -73,15 +73,18 @@ if [ ! -d "$SDK_ROOTFS_DIR" ]; then
>   	mkdir -p "$SDK_ROOTFS_DIR"
>   fi
>
> -if [ -e "$SDK_ROOTFS_DIR/var/pseudo" ]; then
> -	echo "Error: $SDK_ROOTFS_DIR/var/pseudo already exists!"
> -	echo "Please delete the entire rootfs tree manually if this is really what you want"
> +pseudo_state_dir="$SDK_ROOTFS_DIR/../pseudo_state_$(basename "$SDK_ROOTFS_DIR")"
> +
> +if [ -e "$pseudo_state_dir" ]; then
> +	echo "Error: $pseudo_state_dir already exists!"
> +	echo "Please delete the rootfs tree and pseudo directory manually"
> +        echo "if this is really what you want."
>   	exit 1
>   fi
>
> -mkdir -p "$SDK_ROOTFS_DIR/var/pseudo"
> -touch "$SDK_ROOTFS_DIR/var/pseudo/pseudo.pid"
> -PSEUDO_LOCALSTATEDIR="$SDK_ROOTFS_DIR/var/pseudo"
> +mkdir -p "$pseudo_state_dir"
> +touch "$pseudo_state_dir/pseudo.pid"
> +PSEUDO_LOCALSTATEDIR="$pseudo_state_dir
>   export PSEUDO_LOCALSTATEDIR
>
>   echo "Extracting rootfs tarball using pseudo..."
>


-- 
Scott Garman
Embedded Linux Engineer - Yocto Project
Intel Open Source Technology Center



  reply	other threads:[~2012-08-24  7:44 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-23  1:47 [PATCH 0/1] v2: Move pseudo directory out of its filesystem Peter Seebach
2012-08-23  1:47 ` [PATCH 1/1] runqemu-export-rootfs and friends: don't put pseudo db in target fs Peter Seebach
2012-08-24  7:31   ` Scott Garman [this message]
2012-08-24 19:55   ` Peter Seebach
  -- strict thread matches above, loose matches on Subject: below --
2012-08-27 18:32 [PATCH 0/1] v3: Move pseudo localstatedir outside of rootfs Peter Seebach
2012-08-27 18:32 ` [PATCH 1/1] runqemu-export-rootfs and friends: don't put pseudo db in target fs Peter Seebach
2012-08-21 18:31 [PATCH 0/1] Move PSEUDO_LOCALSTATEDIR outside rootfs Peter Seebach
2012-08-21 18:31 ` [PATCH 1/1] runqemu-export-rootfs and friends: don't put pseudo db in target fs Peter Seebach
2012-08-22 16:34   ` Scott Garman
2012-08-22 19:20     ` Peter Seebach
2012-08-22 19:39     ` Richard Purdie
2012-08-27 16:17       ` Peter Seebach

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50372DE1.40704@intel.com \
    --to=scott.a.garman@intel.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox