From: Tim Shimmin Date: Tue, 15 May 2001 04:05:35 +0000 (+0000) Subject: Test out that the modes of suid,guid,sticky are restored as well on X-Git-Tag: v1.1.0~1253 X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=commitdiff_plain;h=93e2cc4f301db7ae7a94e9a7c2b02688da47ab4b Test out that the modes of suid,guid,sticky are restored as well on files and directories. --- diff --git a/056 b/056 new file mode 100755 index 00000000..43480c2b --- /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 index 00000000..3d26bca7 --- /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 diff --git a/common.dump b/common.dump index a0fa43ce..6f834908 100644 --- a/common.dump +++ b/common.dump @@ -374,6 +374,24 @@ sub/biggg 102400 $nobody $nobody End-of-File } +_mk_fillconfig_perm() +{ + cat <$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 0c3cdf95..dfe889b1 100644 --- 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