[Ocfs2-test-devel] [PATCH] Enhancement for tunefs-test:add enable/disable test for inline-data
tristan
tristan.ye at oracle.com
Thu Aug 14 20:24:48 PDT 2008
Add new testcase in tunfs-test:enable/disable inline-data support for
volume,especially check if all inlined inodes in a volume will be
extented by disable volume's inline-data support,beside,also check
feature-incompat flag in SB.
Test will be launched via mkfsing a variety of blocksize(512,1k,4k).
Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
---
Index: ocfs2-test/programs/tunefs-test/tunefs-test.sh
===================================================================
--- ocfs2-test/programs/tunefs-test/tunefs-test.sh (revision 183)
+++ ocfs2-test/programs/tunefs-test/tunefs-test.sh (working copy)
@@ -30,7 +30,11 @@
DEBUGFS_BIN=`which debugfs.ocfs2`
TUNEFS_BIN=`which tunefs.ocfs2`
MOUNTED_BIN=`which mounted.ocfs2`
+MOUNT_BIN=`which mount.ocfs2`
+UMOUNT_BIN=`which umount`
TEE_BIN=`which tee`
+MKDIR_BIN=`which mkdir`
+RM_BIN=`which rm`
GAWK=`which gawk`
GREP=`which grep`
STAT=`which stat`
@@ -58,6 +62,9 @@
BLKCNT2=1048576 # 2nd blk count 4GB
BLKCNT3=3145728 # 3rd blk count 12GB
+FS_FEATURES=
+MOUNT_POINT=/tmp/storage.$$
+
#
# usage Display help information and exit.
#
@@ -191,7 +198,7 @@
Set_Volume_For_Test()
{
LogMsg "tunefs_test : Initializing volume for test"
- echo "y"| ${MKFS_BIN} -b ${BLOCKSIZE} -C ${CLUSTERSIZE} -L
${LABEL1} -N ${NNODES1} \
+ echo "y"| ${MKFS_BIN} ${FS_FEATURES} -b ${BLOCKSIZE} -C
${CLUSTERSIZE} -L ${LABEL1} -N ${NNODES1} \
-J size=${JOURNAL1} ${2} ${DEVICE} ${1} 2>&1 >> ${MKFSLOG}
Check_Volume;
}
@@ -520,6 +527,136 @@
fi;
fi;
}
+
+#
+# Enable_Disable_Inline_Data - Enable inline-data support for volume,
+# specially verify if all inlined inodes be extented after disabling
+# its inline-data support on SB.
+#
+Enable_Disable_Inline_Data()
+{
+ local O_BLOCKSIZE
+ local O_CLUSTERSIZE
+ local RC
+ local FILE_INDEX
+ local FILE_NUM=1000
+ local TEST_FILE
+
+ O_BLOCKSIZE=${BLOCKSIZE}
+ O_CLUSTERSIZE=${CLUSTERSIZE}
+
+ ${MKDIR_BIN} -p ${MOUNT_POINT}
+
+ for BLOCKSIZE in 512 1k 4k;do
+ for CLUSTERSIZE in 32k;do
+
+ #set none inline-data support for volume
+ LogMsg "tunefs_test : Enable/Disable
Inline-data"
+ LogMsg "tunefs_test : BlockSize=
${BLOCKSIZE},ClusterSize=${CLUSTERSIZE}"
+ FS_FEATURES="--fs-features=noinline-data"
+ Set_Volume_For_Test ${BLKCNT2};
+
+ #Check if we set none-inline-data for volume
+ (( ++NUM_OF_TESTS ))
+ CURRENT_TEST="Set None-inline-data support for
volume by mkfs.ocfs2";
+ ${DEBUGFS_BIN} -n -R "stats" ${DEVICE}|${GREP}
-i "Feature Incompat"|${GREP} -q "InlineData"
+ RC=$?
+ if [ "$RC" -eq "0" ];then
+ test_fail
+ else
+ ${MOUNT_BIN} -t ocfs2 ${DEVICE}
${MOUNT_POINT}
+ for FILE_INDEX in `seq ${FILE_NUM}`;do
+ #make sure file size less than
max_inline_sz
+ TEST_FILE=
${MOUNT_POINT}/TEST_EXTENT_FILE_${FILE_INDEX}
+ echo
"Extent-data-"${FILE_INDEX} >${TEST_FILE}
+ sync
+ ${DEBUGFS_BIN} -n -R
"stat /TEST_EXTENT_FILE_${FILE_INDEX}" ${DEVICE}|${GREP} "Dynamic
Features"|${GREP} -q "InlineData"
+ RC=$?
+ if [ "$RC" -eq "0" ];then
+ break
+ fi
+ done
+ if [ "$RC" -eq "0" ];then
+ test_fail
+ else
+ test_pass
+ fi
+ ${UMOUNT_BIN} ${DEVICE}
+ fi
+
+ #Enable Inline-data support by tunefs
+ (( ++NUM_OF_TESTS ))
+ CURRENT_TEST="Enable Inline-data support for
volume by tunefs.ocfs2"
+ FS_FEATURES="--fs-features=inline-data"
+ echo "y"|${TUNEFS_BIN} ${FS_FEATURES} ${DEVICE}
2>&1 >> ${TUNEFSLOG}
+ Check_Volume
+ ${DEBUGFS_BIN} -n -R "stats" ${DEVICE}|${GREP}
-i "Feature Incompat"|${GREP} -q "InlineData"
+ RC=$?
+ if [ "$RC" -eq "0" ];then
+ ${MOUNT_BIN} -t ocfs2 ${DEVICE}
${MOUNT_POINT}
+ for FILE_INDEX in `seq ${FILE_NUM}`;do
+ #make sure file size less than
max_inline_sz
+ TEST_FILE=
${MOUNT_POINT}/TEST_INLINE_FILE_${FILE_INDEX}
+ echo
"Inline-data-"${FILE_INDEX} >${TEST_FILE}
+ sync
+ ${DEBUGFS_BIN} -n -R
"stat /TEST_INLINE_FILE_${FILE_INDEX}" ${DEVICE}|${GREP} "Dynamic
Features"|${GREP} -q "InlineData"
+ RC=$?
+ if [ "$RC" -ne "0" ];then
+ break
+ fi
+ done
+ if [ "$RC" -eq "0" ];then
+ test_pass
+ else
+ test_fail
+ fi
+ ${UMOUNT_BIN} ${DEVICE}
+
+ else
+ test_fail
+ fi
+
+ #Disable Inline-data support,extent the inlined
inodde
+ (( ++ NUM_OF_TESTS ))
+ CURRENT_TEST="Disable Inline-data support for
volume by tunefs.ocfs2"
+ FS_FEATURES="--fs-features=noinline-data"
+ echo "y"|${TUNEFS_BIN} ${FS_FEATURES} ${DEVICE}
2>&1 >> ${TUNEFSLOG}
+ Check_Volume
+ ${DEBUGFS_BIN} -n -R "stats" ${DEVICE}|${GREP}
-i "Feature Incompat"|${GREP} -q "InlineData"
+ RC=$?
+ if [ "$RC" -eq "0" ] ;then
+ test_fail
+ else
+ #Verify if all inlined inode be
extented
+ for FILE_INDEX in `seq ${FILE_NUM}`;do
+ #make sure file size less than
max_inline_sz
+ TEST_FILE=
${MOUNT_POINT}/TEST_INLINE_FILE_${FILE_INDEX}
+ ${DEBUGFS_BIN} -n -R
"stat /TEST_INLINE_FILE_${FILE_INDEX}" ${DEVICE}|${GREP} "Dynamic
Features"|${GREP} -q "InlineData"
+ RC=$?
+ if [ "$RC" -eq "0" ];then
+ break
+ fi
+ done
+ if [ "$RC" -eq "0" ];then
+ test_fail
+ else
+ test_pass
+ fi
+
+ fi
+
+ done #done for cluster_sz loop
+ done #done for blk_sz loop
+
+ ${RM_BIN} -rf ${MOUNT_POINT}
+
+ BLOCKSIZE=${O_BLOCKSIZE}
+ CLUSTERSIZE=${O_CLUSTERSIZE}
+ FS_FEATURES=
+}
+
+
+
################################################################
#
@@ -590,6 +727,9 @@
set_log_file
+#Add Ctrl ^C signal handler for tunefs-test
+trap 'echo -ne "\n\n">>${LOGFILE};echo "Interrupted by Ctrl
^C,Cleanuping... "|${TEE_BIN} -a ${LOGFILE};exit 1' SIGINT
+
LogMsg "\ntunefs_test: Starting test \c"
LogMsg "(`date +%F-%H-%M-%S`)\n\n"
@@ -613,6 +753,8 @@
Journal_Node_Change
+Enable_Disable_Inline_Data
+
test_summary
LogMsg "\ntunefs_test: Ending test (`date +%F-%H-%M-%S`)\n"
More information about the Ocfs2-test-devel
mailing list