diff options
author | Sanoj Unnikrishnan <sunnikri@redhat.com> | 2017-07-19 18:40:38 +0530 |
---|---|---|
committer | Raghavendra G <rgowdapp@redhat.com> | 2017-09-14 17:55:30 +0000 |
commit | 777ad8f6a17d11e4582cf11d332a1a4d4c0c706f (patch) | |
tree | 2acf2ea99924aacdb356dc78834cb34a78838a87 | |
parent | e4a59b384f5bbaaeb937a53cef64f4e388f85153 (diff) |
Heal root xattr correctly upon an add-brick operation
When an add-brick is performed the root path xattr is healed using a hook
script. For a volume in stopped state, the hook script is triggered in post
op of add-brick. Otherwise, if the volume is in started state the hook script
is started on a subsequent volume start. The script unlinks itself after
execution.
The issue is that current hook script does not work when you have multiple
volumes in stopped state. A hook script meant for volume1 can get trigerred
during start of volume2.
Fix: create separate hook script links for individual volumes.
Bug: 1472609
Change-Id: If5f056509505fdbbbf73d3363e9966047ae6a3d3
Signed-off-by: Sanoj Unnikrishnan <sunnikri@redhat.com>
Reviewed-on: https://review.gluster.org/17824
Smoke: Gluster Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
-rwxr-xr-x | extras/hook-scripts/add-brick/post/disabled-quota-root-xattr-heal.sh | 11 | ||||
-rwxr-xr-x | extras/hook-scripts/add-brick/pre/S28Quota-enable-root-xattr-heal.sh | 7 |
2 files changed, 13 insertions, 5 deletions
diff --git a/extras/hook-scripts/add-brick/post/disabled-quota-root-xattr-heal.sh b/extras/hook-scripts/add-brick/post/disabled-quota-root-xattr-heal.sh index bde7249d429..ee3ad341e16 100755 --- a/extras/hook-scripts/add-brick/post/disabled-quota-root-xattr-heal.sh +++ b/extras/hook-scripts/add-brick/post/disabled-quota-root-xattr-heal.sh @@ -20,7 +20,10 @@ VOL_NAME= VERSION= VOLUME_OP= GLUSTERD_WORKDIR= -ENABLED_NAME="S28Quota-root-xattr-heal.sh" +ENABLED_NAME_PREFIX="S28" +ENABLED_NAME="Quota-root-xattr-heal.sh" + +THIS_SCRIPT=`echo $0 | awk -F'/' '{print $NF}'` cleanup_mountpoint () { @@ -102,7 +105,11 @@ do done ##---------------------------------------- -ENABLED_STATE="$GLUSTERD_WORKDIR/hooks/$VERSION/$VOLUME_OP/post/$ENABLED_NAME" +ENABLED_STATE="$GLUSTERD_WORKDIR/hooks/$VERSION/$VOLUME_OP/post/""$ENABLED_NAME_PREFIX$VOL_NAME""-""$ENABLED_NAME" + +if [[ $THIS_SCRIPT != *"$VOL_NAME"* ]]; then + exit 0 +fi ## Is quota enabled? FLAG=`grep "^features.quota=" $GLUSTERD_WORKDIR/vols/$VOL_NAME/info \ diff --git a/extras/hook-scripts/add-brick/pre/S28Quota-enable-root-xattr-heal.sh b/extras/hook-scripts/add-brick/pre/S28Quota-enable-root-xattr-heal.sh index 348f34ec3db..65cb212f09e 100755 --- a/extras/hook-scripts/add-brick/pre/S28Quota-enable-root-xattr-heal.sh +++ b/extras/hook-scripts/add-brick/pre/S28Quota-enable-root-xattr-heal.sh @@ -26,7 +26,8 @@ VOL_NAME= GLUSTERD_WORKDIR= VOLUME_OP= VERSION= -ENABLED_NAME="S28Quota-root-xattr-heal.sh" +ENABLED_NAME_PREFIX="S28" +ENABLED_NAME="Quota-root-xattr-heal.sh" DISABLED_NAME="disabled-quota-root-xattr-heal.sh" enable () @@ -69,8 +70,8 @@ done ##---------------------------------------- DISABLED_STATE="$GLUSTERD_WORKDIR/hooks/$VERSION/add-brick/post/$DISABLED_NAME" -ENABLED_STATE_START="$GLUSTERD_WORKDIR/hooks/$VERSION/start/post/$ENABLED_NAME" -ENABLED_STATE_ADD_BRICK="$GLUSTERD_WORKDIR/hooks/$VERSION/add-brick/post/$ENABLED_NAME"; +ENABLED_STATE_START="$GLUSTERD_WORKDIR/hooks/$VERSION/start/post/""$ENABLED_NAME_PREFIX$VOL_NAME""-""$ENABLED_NAME" +ENABLED_STATE_ADD_BRICK="$GLUSTERD_WORKDIR/hooks/$VERSION/add-brick/post/""$ENABLED_NAME_PREFIX""$VOL_NAME""-""$ENABLED_NAME"; ## Why to proceed if the required script itself is not present? ls $DISABLED_STATE; |