Test out that the modes of suid,guid,sticky are restored as well on
authorTim Shimmin <tes@sgi.com>
Tue, 15 May 2001 04:05:35 +0000 (04:05 +0000)
committerTim Shimmin <tes@sgi.com>
Tue, 15 May 2001 04:05:35 +0000 (04:05 +0000)
files and directories.

056 [new file with mode: 0755]
056.out [new file with mode: 0644]
common.dump
group

diff --git a/056 b/056
new file mode 100755 (executable)
index 0000000..43480c2
--- /dev/null
+++ b/056
@@ -0,0 +1,63 @@
+#! /bin/sh
+# XFS QA Test No. 026
+# $Id: 1.1 $
+#
+# Test xfsdump/xfsrestore to a dump file (as opposed to a tape)
+# and test restoring various permissions/modes
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
+# 
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+# 
+# This program is distributed in the hope that it would be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# 
+# Further, this software is distributed without any warranty that it is
+# free of the rightful claim of any third person regarding infringement
+# or the like.  Any license provided herein, whether implied or
+# otherwise, applies only to this software file.  Patent licenses, if
+# any, provided herein do not apply to combinations of this program with
+# other software, or any other product whatsoever.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write the Free Software Foundation, Inc., 59
+# Temple Place - Suite 330, Boston MA 02111-1307, USA.
+# 
+# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+# Mountain View, CA  94043, or:
+# 
+# http://www.sgi.com 
+# 
+# For further information regarding this notice, see: 
+# 
+# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+#-----------------------------------------------------------------------
+#
+# creator
+owner=tes@bruce.melbourne.sgi.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.dump
+
+# real QA test starts here
+
+_create_dumpdir_fill_perm
+_do_dump_file
+_do_restore_file
+_ls_compare_sub
+
+# success, all done
+exit
diff --git a/056.out b/056.out
new file mode 100644 (file)
index 0000000..3d26bca
--- /dev/null
+++ b/056.out
@@ -0,0 +1,38 @@
+QA output created by 056
+Creating directory system to dump using src/fill.
+Setup ..........
+Dumping to file...
+xfsdump  -f DUMP_FILE -M stress_tape_media -L stress_056 SCRATCH_MNT
+xfsdump: version 3.0 - Running single-threaded
+xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
+xfsdump: dump date: DATE
+xfsdump: session id: ID
+xfsdump: session label: "stress_056"
+xfsdump: ino map phase 1: skipping (no subtrees specified)
+xfsdump: ino map phase 2: constructing initial dump list
+xfsdump: ino map phase 3: skipping (no pruning necessary)
+xfsdump: ino map phase 4: skipping (size estimated in phase 2)
+xfsdump: ino map phase 5: skipping (only one dump stream)
+xfsdump: ino map construction complete
+xfsdump: estimated dump size: NUM bytes
+xfsdump: /var/xfsdump/inventory created
+xfsdump: creating dump session media file 0 (media 0, file 0)
+xfsdump: dumping ino map
+xfsdump: dumping directories
+xfsdump: dumping non-directory files
+xfsdump: ending media file
+xfsdump: media file size NUM bytes
+xfsdump: dump size (non-dir files) : NUM bytes
+xfsdump: dump complete: SECS seconds elapsed
+Restoring from file...
+xfsrestore  -f DUMP_FILE  -L stress_056 RESTORE_DIR
+xfsrestore: version 3.0 - Running single-threaded
+xfsrestore: using online session inventory
+xfsrestore: searching media for directory dump
+xfsrestore: examining media file 0
+xfsrestore: reading directories
+xfsrestore: directory post-processing
+xfsrestore: restoring non-directory files
+xfsrestore: restore complete: SECS seconds elapsed
+Comparing listing of dump directory with restore directory
+Files TMP.dump_dir and TMP.restore_dir are identical
index a0fa43ce1859059d8447b944773efe342d9afb13..6f834908391510193ebef7aaf3dd1680e959f5c6 100644 (file)
@@ -374,6 +374,24 @@ sub/biggg  102400  $nobody $nobody
 End-of-File
 }
 
+_mk_fillconfig_perm()
+{
+    cat <<End-of-File >$tmp.config
+# pathname     size/dir  user group mode
+#
+file_suid      10      $nobody $nobody 04777
+file_guid      10      $nobody $nobody 02777
+file_sticky    10      $nobody $nobody 01777
+file_mix1      10      $nobody $nobody 761
+file_mix2      10      $nobody $nobody 642
+dir_suid       d       $nobody $nobody 04777
+dir_guid       d       $nobody $nobody 02777
+dir_sticky     d       $nobody $nobody 01777
+dir_mix1       d       $nobody $nobody 761
+dir_mix2       d       $nobody $nobody 642
+End-of-File
+}
+
 #
 # Create a bunch of directories/files of different sizes
 # filled with data.
@@ -397,9 +415,9 @@ _do_create_dumpdir_fill()
     sed -e '/^#/d' $tmp.config \
     | while read file nbytes owner group perms
     do
-       dir=`dirname $file`
-       if [ "$dir" != "." ]
-       then
+       if [ $nbytes = "d" ]; then
+           # create a directory
+           dir=$file   
            if [ ! -d $dir ]
            then
                if mkdir $dir
@@ -411,15 +429,32 @@ _do_create_dumpdir_fill()
                    exit 1
                fi
            fi
-       fi
-       rm -f $file
-       if $here/src/fill $file $file $nbytes
-       then
-           :
        else
-           $verbose && echo
-           echo "Error: cannot create \"$file\""
-           exit 1
+           # create a directory/file
+           dir=`dirname $file`
+           if [ "$dir" != "." ]
+           then
+               if [ ! -d $dir ]
+               then
+                   if mkdir $dir
+                   then
+                       :
+                   else
+                       $verbose && echo
+                       echo "Error: cannot mkdir \"$dir\""
+                       exit 1
+                   fi
+               fi
+           fi
+           rm -f $file
+           if $here/src/fill $file $file $nbytes
+           then
+               :
+           else
+               $verbose && echo
+               echo "Error: cannot create \"$file\""
+               exit 1
+           fi
        fi
        if [ -n "$owner" -a -n "$group" ]; then
            chown $owner.$group $file
@@ -451,6 +486,14 @@ _create_dumpdir_fill2()
     _stable_fs
 }      
 
+_create_dumpdir_fill_perm()
+{
+    _wipe_fs
+    _mk_fillconfig_perm
+    _do_create_dumpdir_fill
+    _stable_fs
+}      
+
 
 
 #
diff --git a/group b/group
index 0c3cdf95cc5663717d08e0fe0e67ec4dfa84cb58..dfe889b130393aa1606aa0e934831f2b2f407c06 100644 (file)
--- a/group
+++ b/group
@@ -103,4 +103,5 @@ auto                dxm@sgi.com
 052 quota db auto
 053 acl repair auto
 054 quota auto
-055 dump auto
+055 xfsdump auto
+056 xfsdump auto