diff options
| -rw-r--r-- | extras/Makefile.am | 5 | ||||
| -rwxr-xr-x | extras/post-upgrade-script-for-quota.sh | 65 | ||||
| -rwxr-xr-x | extras/pre-upgrade-script-for-quota.sh | 18 | ||||
| -rw-r--r-- | glusterfs.spec.in | 2 | 
4 files changed, 89 insertions, 1 deletions
diff --git a/extras/Makefile.am b/extras/Makefile.am index faa91cddf45..525fa97383c 100644 --- a/extras/Makefile.am +++ b/extras/Makefile.am @@ -9,11 +9,14 @@ conf_DATA = glusterfs-logrotate gluster-rsyslog-7.2.conf gluster-rsyslog-5.8.con  voldir = $(sysconfdir)/glusterfs  vol_DATA = glusterd.vol +scriptsdir = $(datadir)/glusterfs/scripts +scripts_DATA = post-upgrade-script-for-quota.sh pre-upgrade-script-for-quota.sh  EXTRA_DIST = $(conf_DATA) specgen.scm MacOSX/Portfile glusterfs-mode.el        \  	glusterfs.vim migrate-unify-to-distribute.sh backend-xattr-sanitize.sh \  	backend-cleanup.sh disk_usage_sync.sh clear_xattrs.sh                  \ -	glusterd-sysconfig glusterd.vol +	glusterd-sysconfig glusterd.vol post-upgrade-script-for-quota.sh       \ +	pre-upgrade-script-for-quota.sh  install-data-local:  	$(mkdir_p) $(DESTDIR)$(localstatedir)/lib/glusterd/groups diff --git a/extras/post-upgrade-script-for-quota.sh b/extras/post-upgrade-script-for-quota.sh new file mode 100755 index 00000000000..c226687935d --- /dev/null +++ b/extras/post-upgrade-script-for-quota.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +#The post-upgrade script must be executed after all the nodes in the cluster +#have upgraded. +#Also, all the clients accessing the given volume must also be upgraded +#before the script is run. +#Make sure glusterd and the brick processes are running on all nodes in the +#cluster post upgrade. +#Execute this script on the node where the pre-upgrade script for quota was run. + +VOL=$1; + +BACKUP_DIR=/var/tmp/glusterfs/quota-config-backup + +function set_limits { +        local var=$(gluster volume info $1 | grep 'features.quota'| cut -d" " -f2); + +        if  [ -z "$var" ] || [ "$var" == "off" ]; then +                if [ $2 -eq '0' ]; then +                        echo "Volume $1 does not have quota enabled. " \ +                             "Exiting ..." +                        exit 1 +                fi +        else +                gluster volume set $1 default-soft-limit 80% +                if [ $? -ne '0' ]; then +                        echo "Post-upgrade process failed." \ +                             "Please address the error and run " \ +                             "post-upgrade-script.sh on volume $VOL again." +                        exit 1 +                fi + +                gluster volume start $1 force +                sleep 3; + +                local path_array=( $(cat $BACKUP_DIR/vol_$1 | tail -n +3 | awk '{print $1}') ) +                local limit_array=( $(cat $BACKUP_DIR/vol_$1 | tail -n +3 | awk '{print $2}') ) +                local len=${#path_array[@]} + +                for ((j=0; j<$len; j++)) +                    do +                            gluster volume quota $1 limit-usage ${path_array[$j]} ${limit_array[j]}; +                            if [ $? -eq 0 ]; then +                                    echo "Setting limit (${limit_array[j]}) on " \ +                                         "path ${path_array[$j]} has been " \ +                                         "successful" +                            fi +                    done +        fi; +} + +if [ -z $1 ]; then +        echo "Please provide volume name or 'all'"; +        exit 1; +fi + +if [ "$1" == "all" ]; then +        for VOL in `gluster volume list`; +            do +                    set_limits $VOL '1'; +            done + +else +        set_limits $1 '0'; +fi diff --git a/extras/pre-upgrade-script-for-quota.sh b/extras/pre-upgrade-script-for-quota.sh new file mode 100755 index 00000000000..a8001e9e1fe --- /dev/null +++ b/extras/pre-upgrade-script-for-quota.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +#Make sure glusterd and the brick processes are running on all nodes in the +#cluster. +#This script must be run prior to upgradation, that too on +#only one of the nodes in the cluster. + +BACKUP_DIR=/var/tmp/glusterfs/quota-config-backup + +mkdir -p $BACKUP_DIR +for i in `gluster volume list`; do +        var=$(gluster volume info $i | grep 'features.quota'| cut -d" " -f2); +        if  [ -z "$var" ] || [ "$var" == "off" ]; then +                continue +        else +                gluster volume quota $i list > $BACKUP_DIR/vol_$i; +        fi; +done diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 5fa8ededc55..fbaabea4184 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -829,6 +829,8 @@ fi  %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13*  %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat*  %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache* +%{_datadir}/glusterfs/scripts/post-upgrade-script-for-quota.sh +%{_datadir}/glusterfs/scripts/pre-upgrade-script-for-quota.sh  %files api  %exclude %{_libdir}/*.so  | 
