diff options
-rw-r--r-- | c_pgms/INFO | 2 | ||||
-rw-r--r-- | c_pgms/truncate_write.c | 156 | ||||
-rw-r--r-- | helper_scrips/INFO | 10 | ||||
-rwxr-xr-x | helper_scrips/glusterfs_uninstall.sh | 46 | ||||
-rwxr-xr-x | helper_scrips/install_glusterfs_rpm.sh | 75 | ||||
-rwxr-xr-x | helper_scrips/install_parallel_glusterfs.sh | 64 | ||||
-rwxr-xr-x | helper_scrips/multi_uninstall.sh | 66 | ||||
-rwxr-xr-x | helper_scrips/rpm_download_install.sh | 161 | ||||
-rwxr-xr-x | sanity/nightly_sanity/nightly_updated.sh | 8 |
9 files changed, 583 insertions, 5 deletions
diff --git a/c_pgms/INFO b/c_pgms/INFO index b755c79..a73a6df 100644 --- a/c_pgms/INFO +++ b/c_pgms/INFO @@ -17,3 +17,5 @@ c_pgms/new-ps-perf(new-fs-perf.c) -----> fs-perf test program modified. Now the =============================================== c_pgms/ping_pong.c (ping_pong.c) -------> ping_pong program modified. Now the time duration for which ping_pong should execute can be given as an argument. By default it executed for 600 seconds. + +c_pgms/truncate_write.c (trucate_write.c) -----> it truncates a file to the size specified (default is 5GB, and creates and truncates if the file does not exist), writes some data to some offset. diff --git a/c_pgms/truncate_write.c b/c_pgms/truncate_write.c new file mode 100644 index 0000000..d6dcce9 --- /dev/null +++ b/c_pgms/truncate_write.c @@ -0,0 +1,156 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> +#include <sys/stat.h> +#include <sys/types.h> + +#define UNIT_KB 1024ULL +#define UNIT_MB UNIT_KB*1024ULL +#define UNIT_GB UNIT_MB*1024ULL +#define UNIT_TB UNIT_GB*1024ULL +#define UNIT_PB UNIT_TB*1024ULL + +#define UNIT_KB_STRING "KB" +#define UNIT_MB_STRING "MB" +#define UNIT_GB_STRING "GB" +#define UNIT_TB_STRING "TB" +#define UNIT_PB_STRING "PB" + +int +string2bytesize (const char *str, unsigned long long *n) +{ + unsigned long long value = 0ULL; + char *tail = NULL; + int old_errno = 0; + const char *s = NULL; + + if (str == NULL || n == NULL) + { + errno = EINVAL; + return -1; + } + + for (s = str; *s != '\0'; s++) + { + if (isspace (*s)) + { + continue; + } + if (*s == '-') + { + return -1; + } + break; + } + + old_errno = errno; + errno = 0; + value = strtoull (str, &tail, 10); + + if (errno == ERANGE || errno == EINVAL) + { + return -1; + } + + if (errno == 0) + { + errno = old_errno; + } + + if (tail[0] != '\0') + { + if (strcasecmp (tail, UNIT_KB_STRING) == 0) + { + value *= UNIT_KB; + } + else if (strcasecmp (tail, UNIT_MB_STRING) == 0) + { + value *= UNIT_MB; + } + else if (strcasecmp (tail, UNIT_GB_STRING) == 0) + { + value *= UNIT_GB; + } + else if (strcasecmp (tail, UNIT_TB_STRING) == 0) + { + value *= UNIT_TB; + } + else if (strcasecmp (tail, UNIT_PB_STRING) == 0) + { + value *= UNIT_PB; + } + + else + { + return -1; + } + } + + *n = value; + + return 0; +} + +int main (int argc, char *argv[]) +{ + int ret = -1; + int fd = -1; + char *buf = "This is a string"; + char *filename = NULL; + unsigned long long size = 0; + + if (argc < 2) { + fprintf (stderr, "Usage:./a.out <filename>\n"); + return 2; + } + + filename = argv[1]; + + fd = open (filename, O_CREAT|O_RDWR, 0644); + if (fd == -1) { + fprintf (stderr, "OPEN: cannot open the file fff. (%s)", + strerror (errno)); + return 2; + } + + if (argc < 3) + size = 5 * UNIT_GB; + else + string2bytesize (argv[2], &size); + + ret = ftruncate (fd, size); + if (ret == -1) { + fprintf (stderr, "TRUNCATE: cannot truncate the file %s. (%s)", + filename, strerror (errno)); + goto out; + } + + printf ("File got truncated tp %llu bytes. Sleeping for 22 seconds. " + "Kill the brick.....\n", size); + + sleep (22); + + ret = lseek (fd, 1048576, SEEK_SET); + if (ret == -1) { + fprintf (stderr, "LSEEK: cannot seek to the offset file fff. " + "(%s)", strerror (errno)); + goto out; + } + + ret = write (fd, buf, strlen (buf)); + if (ret == -1) { + fprintf (stderr, "WRITE: cannot write to the file fff. (%s)", + strerror (errno)); + goto out; + } + + ret = 0; +out: + if (fd) + close (fd); + + return ret; +} diff --git a/helper_scrips/INFO b/helper_scrips/INFO index 1f09a1b..d030697 100644 --- a/helper_scrips/INFO +++ b/helper_scrips/INFO @@ -6,10 +6,18 @@ helper_scrips/rpm_qa_download_install.sh -----> downloads the rpms for the speci ============================================================================================================================================= -herper_scripts/clean_glusterd.sh +helper_scripts/clean_glusterd.sh helper_scripts/clean_logs.sh helper_scripts/start_glusterd.sh helper_scripts/probe.sh The above scripts are usable with the passwordless ssh connection setup between the glusterfs servers, which helps in cleaning the logs, probing, cleaning glusterd, starting glusterd etc. +============================================================================================================================================= +helper_scripts/install_parallel_glusterfs.sh --------> executes the download_and_install.sh scripts prallely on multiple machines, such that glusterfs gets installed on multiple machines simultaneously. + +============================================================================================================================================= +helper_scrips/glusterfs_uninstall.sh ------> uninstalls the specified glusterfs version if it finds the source directory. +herper_scripts/multi_uninstall.sh -------> uninstalls the specified glusterfs from multiple machines, by executing glusterfs_uninstall.sh script. + +helper_scrips/install_glusterfs_rpm.sh -----> installs the specified glusterfs rpms on the machines whose list is provided in /root/machines,parallely
\ No newline at end of file diff --git a/helper_scrips/glusterfs_uninstall.sh b/helper_scrips/glusterfs_uninstall.sh new file mode 100755 index 0000000..31a000d --- /dev/null +++ b/helper_scrips/glusterfs_uninstall.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +#set -x; + +function _init () +{ + # echo $0; + # echo $#; + # echo $1; + set -u; + if [ $# -lt 1 ]; then + echo "usage: download_and_install <glusterfs-version>"; + exit 1; + fi + + version=$1; + echo $version; + echo $version | grep "glusterfs" 2>/dev/null 1>/dev/null; + if [ $? -ne 0 ]; then + echo "given argument is not glusterfs"; + exit 1; + fi +} + +function un_install () +{ + cd /root/$version; + + cd build; + make uninstall && make clean && make distclean; + + cd /root; +} + +main () +{ + + if [ ! -d $version ]; then + echo "the glusterfs version ($version) directory is not there." + return 1; + fi + + un_install; +} + +_init "$@" && main "$@" diff --git a/helper_scrips/install_glusterfs_rpm.sh b/helper_scrips/install_glusterfs_rpm.sh new file mode 100755 index 0000000..4e82b58 --- /dev/null +++ b/helper_scrips/install_glusterfs_rpm.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +function _init () +{ + set -u; + VERSION=$1; + if [ $# -lt 2 ]; then + upgrade="no"; + else + if [ $2 == "yes" ]; then + upgrade="yes"; + else + upgrade="no"; + fi + fi +} + +function install_glusterfs () +{ + local remote_server=; + + if [ $# -eq 1 ]; then + remote_server=$1; + fi + + if [ $remote_server ]; then + ssh $remote_server cp -f /root/scripts/rpm_download_install.sh /root/; + ssh $remote_server /root/rpm_download_install.sh $VERSION $upgrade; + return 0; + fi + + j=0; + for i in $(cat /root/machines) + do + j=$(($j+1)); + (install_glusterfs $i)& + done + +} + +function install_my_glusterfs () +{ + old_PWD=$PWD; + + cd /root; + cp /root/scripts/rpm_download_install.sh /root/; + /root/rpm_download_install.sh $VERSION $upgrade; + + cd $old_PWD; + return 0; +} + +function main () +{ + stat --printf=%i /root/machines 2>/dev/null 1>/dev/null; + if [ $? -ne 0 ]; then + echo "servers file is not present /root. Cannot execute further."; + + exit 1; + fi + + install_glusterfs; + for i in $(1 $j) + do + wait %$j; + done + + install_my_glusterfs; + + return 0; +} + +_init "$@" && main "$@" + + diff --git a/helper_scrips/install_parallel_glusterfs.sh b/helper_scrips/install_parallel_glusterfs.sh new file mode 100755 index 0000000..15455fb --- /dev/null +++ b/helper_scrips/install_parallel_glusterfs.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +function _init () +{ + set -u; + VERSION=$1; +} + +function install_glusterfs () +{ + local remote_server=; + + if [ $# -eq 1 ]; then + remote_server=$1; + fi + + if [ $remote_server ]; then + ssh $remote_server cp -f /root/scripts/download_and_install.sh /root/; + ssh $remote_server /root/download_and_install.sh $VERSION; + return 0; + fi + + j=0; + for i in $(cat /root/machines) + do + j=$(($j+1)); + (install_glusterfs $i)& + done + +} + +function install_my_glusterfs () +{ + old_PWD=$PWD; + + cd /root; + cp /root/scripts/download_and_install.sh /root/; + /root/download_and_install.sh $VERSION; + + cd $old_PWD; + return 0; +} + +function main () +{ + stat --printf=%i /root/machines 2>/dev/null 1>/dev/null; + if [ $? -ne 0 ]; then + echo "servers file is not present /root. Cannot execute further."; + + exit 1; + fi + + install_glusterfs; + for i in $(1 $j) + do + wait %$j; + done + + install_my_glusterfs; + + return 0; +} + +_init "$@" && main "$@" diff --git a/helper_scrips/multi_uninstall.sh b/helper_scrips/multi_uninstall.sh new file mode 100755 index 0000000..dca2350 --- /dev/null +++ b/helper_scrips/multi_uninstall.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +#!/bin/bash + +function _init () +{ + set -u; + VERSION=$1; +} + +function uninstall_glusterfs () +{ + local remote_server=; + + if [ $# -eq 1 ]; then + remote_server=$1; + fi + + if [ $remote_server ]; then + ssh $remote_server cp -f /root/scripts/glusterfs_uninstall.sh /root/; + ssh $remote_server /root/glusterfs_uninstall.sh $VERSION; + return 0; + fi + + j=0; + for i in $(cat /root/machines) + do + j=$(($j+1)); + (uninstall_glusterfs $i)& + done + +} + +function uninstall_my_glusterfs () +{ + old_PWD=$PWD; + + cd /root; + cp -f /root/scripts/glusterfs_uninstall.sh /root/; + /root/glusterfs_uninstall.sh $VERSION; + + cd $old_PWD; + return 0; +} + +function main () +{ + stat --printf=%i /root/machines 2>/dev/null 1>/dev/null; + if [ $? -ne 0 ]; then + echo "servers file is not present /root. Cannot execute further."; + + exit 1; + fi + + uninstall_glusterfs; + for i in $(1 $j) + do + wait %$j; + done + + uninstall_my_glusterfs; + + return 0; +} + +_init "$@" && main "$@" diff --git a/helper_scrips/rpm_download_install.sh b/helper_scrips/rpm_download_install.sh new file mode 100755 index 0000000..f1a071a --- /dev/null +++ b/helper_scrips/rpm_download_install.sh @@ -0,0 +1,161 @@ +#!/bin/bash + +#set -x; + +function _init () +{ + # echo $0; + # echo $#; + # echo $1; + set -u; + if [ $# -lt 1 ]; then + echo "usage: download_and_install <glusterfs-version> [upgrade decision]"; + exit 1; + fi + + version=$1; + echo $version; + echo $version | grep "glusterfs" 2>/dev/null 1>/dev/null; + if [ $? -ne 0 ]; then + echo "given argument is not glusterfs"; + exit 1; + fi + + version_number=$(echo $version | cut -f 2 -d "-"); + check_if_qa_release $version; + op_ret=$?; + + if [ $op_ret -eq 0 ]; then + download_address="http://bits.gluster.com/pub/gluster/glusterfs/"; + else + echo $version | grep "3.2" 2>/dev/null 1>/dev/null; + if [ $? -eq 0 ]; then + version_number=$(echo $version | cut -f 2 -d "-"); + download_address="http://download.gluster.com/pub/gluster/glusterfs/3.2/$version_number/RHEL/"; + else + grep "3.1" $version 2>/dev/null 1>/dev/null; + echo "haha yes" + if [ $? -eq 0 ]; then + version_number=$(echo $version | cut -f 2 -d "-"); + download_address="http://download.gluster.com/pub/gluster/glusterfs/3.1/$version_number/RHEL/"; + else + grep "3.0" $version 2>/dev/null 1>/dev/null; + if [ $? -eq 0 ]; then + version_number=$(cut -f 2 -d "-" $version); + download_address="http://download.gluster.com/pub/gluster/glusterfs/3.0/$version_number/RHEL/"; + fi + fi + fi + fi + + echo "Download address: $download_address" && sleep 2; +# ls -l "$version".tar.gz 2>/dev/null 1>/dev/null +# if [ $? -ne 0 ]; then +} + +function check_if_qa_release () +{ + glusterfs_version=$1; + + echo $glusterfs_version | grep "qa" 2>/dev/null 1>/dev/null; + ret=$?; + + return $ret; +} + +function download_rpms () +{ + address=$1; + local ret; + + if [ ! -d $PWD/rpms ] || [ ! -d $PWD/rpms/$version_number ]; then + mkdir $PWD/rpms/$version_number -p; + else + echo "the directory for the mentioned versrion $version_number is present"; + return; + fi + + cd $PWD/rpms/$version_number; + + echo $version_number | grep "3.2"; + is_32=$?; + if [ $is_32 -ne 0 ]; then + echo $version_number | grep "3.3"; + is_32=$?; + fi + + check_if_qa_release $version; + ret=$? + + if [ $ret -eq 0 ]; then + wget $address/$version_number/x86_64/glusterfs-core-$version_number-1.x86_64.rpm; + wget $address/$version_number/x86_64/glusterfs-debuginfo-$version_number-1.x86_64.rpm; + wget $address/$version_number/x86_64/glusterfs-fuse-$version_number-1.x86_64.rpm; + if [ $is_32 -eq 0 ]; then + wget $address/$version_number/x86_64/glusterfs-geo-replication-$version_number-1.x86_64.rpm; + echo "3.2 version"; + fi + else + wget $address/glusterfs-core-$version_number-1.el6.x86_64.rpm; + wget $address/glusterfs-debuginfo-$version_number-1.el6.x86_64.rpm; + wget $address/glusterfs-fuse-$version_number-1.el6.x86_64.rpm; + if [ $is_32 -eq 0 ]; then + wget $address/glusterfs-geo-replication-$version_number-1.el6.x86_64.rpm; + echo "3.2 version"; + fi + fi +} + + +function install_or_upgrade () +{ + local old_PWD; + + old_PWD=$PWD; + + cd $PWD/rpms/$version_number; + if [ $upgrade != "yes" ]; then + for i in $(ls) + do + rpm -ivh $i; + done + else + for i in $(ls) + do + rpm -Uvh $i; + done + fi + + ret=$?; + cd $old_PWD; + + ldconfig; + return $ret; +} + +main () +{ + echo $download_address; + download_rpms $download_address; + + upgrade="no"; + if [ $# -eq 2 ]; then + upgrade=$2; + fi + + if [ $upgrade != "yes" ] && [ $upgrade != "no" ]; then + echo "Invalid upgrade decision $upgrade"; + rm -rf /root/rpms/$version_number; + exit 1; + fi + + install_or_upgrade $upgrade; + ret=$?; + if [ $ret -ne 0 ]; then + rm -rf /root/rpms/$version_number; + fi +} + +_init "$@" && main "$@" + +
\ No newline at end of file diff --git a/sanity/nightly_sanity/nightly_updated.sh b/sanity/nightly_sanity/nightly_updated.sh index baed7d3..a8f4da1 100755 --- a/sanity/nightly_sanity/nightly_updated.sh +++ b/sanity/nightly_sanity/nightly_updated.sh @@ -702,7 +702,7 @@ function take_statedump () BRICK_PID=$(cat /etc/glusterd/vols/vol/run/$i); kill -USR1 $BRICK_PID; sleep 1; - mv /tmp/glusterdump.$BRICK_PID $dir; + mv /tmp/*.$BRICK_PID.dump $dir; done for j in $(seq 1 $num_clients) @@ -710,10 +710,10 @@ function take_statedump () CLIENT_PID=$(cat /tmp/client_pid$j); kill -USR1 $CLIENT_PID; sleep 1; - mv /tmp/glusterdump.$CLIENT_PID $dir; + mv /tmp/*.$CLIENT_PID.dump $dir; done } - + function main() { echo "In main"; @@ -724,7 +724,7 @@ function main() start_glusterd; start_glusterfs; take_statedump $LOGDIR/old_dump/; - run_tests; + run_tests; take_statedump $LOGDIR/new_dump/; trap - INT TERM EXIT post_run; |