Thread (6 messages) 6 messages, 2 authors, 2014-10-23

Re: [PATCH 1/2] xfstests-bld: Split system images in two parts

From: Dmitry Monakhov <hidden>
Date: 2014-10-23 11:25:47

Theodore Ts'o [off-list ref] writes:
On Wed, Oct 22, 2014 at 05:25:35PM -0400, Theodore Ts'o wrote:
quoted
So what I suggest instead is that we have a new script, update-image,
which takes an existing root_fs.img, and installs the updated
xfstests, the configuration files, and startup files, leaving the
existing debian base image intact.
Here's an enhancement to the gen-image script which adds a new
--update option.
Yes. This one looke much than mine, than you.
quoted hunk ↗ jump to hunk
					- Ted

commit debd9734bc23108f37c6f62914cb5f9e16da20cc
Author: Theodore Ts'o [off-list ref]
Date:   Wed Oct 22 20:42:32 2014 -0400

    test-appliance: add --update option to the gen-image script
    
    This allows gen-image to to update the xfstests.tar.gz tarball and the
    xfstests driver scripts into an existing root_fs.img file, keeping the
    original operating systems files unchanged.  This takes less than 15
    seconds, compared to about 90 seconds to do a full gen-image build
    using a local disk debian mirror.  It also allows a xfstests developer
    to generate new versions of the root_fs.img more simply on a system
    that does not have debootstrap installed or has access to a Debian
    archive or mirror.
    
    Signed-off-by: Theodore Ts'o [off-list ref]
diff --git a/kvm-xfstests/test-appliance/gen-image b/kvm-xfstests/test-appliance/gen-image
index 550d070..27f9d96 100755
--- a/kvm-xfstests/test-appliance/gen-image
+++ b/kvm-xfstests/test-appliance/gen-image
@@ -12,6 +12,7 @@ ROOT_FS=$DIR/root_fs.img
 COMPAT="-o compat=0.10"
 SAVE_RAW_ROOT=no
 DO_GCE=no
+DO_UPDATE=no
 
 if test -r config.custom ; then
    . $(pwd)/config.custom
@@ -29,8 +30,11 @@ while [ "$1" != "" ]; do
       DO_GCE=yes
       SAVE_RAW_ROOT=yes;
       ;;
+    --update)
+      DO_UPDATE=yes
+      ;;
     *)
-      echo "usage: gen-image [--save_raw_root] [--do_gce] [--mirror MIRROR_LOC]"
+      echo "usage: gen-image [--save_raw_root] [--do_gce] [--update] [--mirror MIRROR_LOC]"
       exit 1
       ;;
   esac
@@ -42,6 +46,31 @@ then
     RAW_ROOT_FS=/tmp/root_fs.raw.$$
 fi
 
+update_xfstests()
+{
+   tar -C $ROOTDIR/root -xf ../../xfstests.tar.gz
+   rsync -avH files/* $ROOTDIR
+}
+
+finalize_rootfs()
+{
+   e2fsck -fyD $RAW_ROOT_FS
+   e2fsck -fy -E discard $RAW_ROOT_FS
+   qemu-img convert -f raw -O qcow2 $COMPAT -c $RAW_ROOT_FS $ROOT_FS
+}
+
+mkdir -p $ROOTDIR
+if test $DO_UPDATE = "yes" ; then
+   qemu-img convert -f qcow2 -O raw $ROOT_FS $RAW_ROOT_FS
+   mount -t ext4 -o loop $RAW_ROOT_FS $ROOTDIR
+   rm -rf $ROOTDIR/xfstests
+   update_xfstests
+   umount $ROOTDIR
+   rmdir $ROOTDIR
+   finalize_rootfs
+   exit 0
+fi
+
 mkdir -p gce
 if test $DO_GCE = "yes" ; then
     sh get-gce-debs
@@ -51,7 +80,6 @@ else
     variant=xfstests
 fi
 
-mkdir -p $ROOTDIR
 mkdir -p var.cache.apt.archives
 mkdir -p var.lib.apt.lists
 mkdir -p debs
@@ -69,9 +97,7 @@ mount --bind gce $ROOTDIR/gce
 mkdir -p $ROOTDIR/imgdir
 mount --bind $(dirname $RAW_ROOT_FS) $ROOTDIR/imgdir
 debootstrap --variant=$variant $ARCH $SUITE $ROOTDIR $MIRROR $DIR/kvm-xfstest.script
-cp -r files/* rootdir
-echo "untaring xfstests"
-tar -C rootdir/root -xf ../../xfstests.tar.gz
+update_xfstests
 for i in vda vdb vdc vdd vde vdf results
 do
 	mkdir $ROOTDIR/$i
@@ -139,9 +165,7 @@ rmdir $ROOTDIR
 
 if test $DO_GCE != "yes" ; then
    tune2fs -O has_journal $RAW_ROOT_FS
-   e2fsck -fyD $RAW_ROOT_FS
-   e2fsck -fy -E discard $RAW_ROOT_FS
-   qemu-img convert -f raw -O qcow2 $COMPAT -c $RAW_ROOT_FS $ROOT_FS
+   finalize_rootfs
 fi
 
 if test "$SAVE_RAW_ROOT" = "yes" ; then

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help