diff options
author | chenglin130 <35245387+chenglin130@users.noreply.github.com> | 2021-02-12 00:01:54 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-11 17:01:54 +0100 |
commit | 6fad53370c93023be3ab945fbf8eb4154b800995 (patch) | |
tree | 07578bec9dddf55522a701596581c2cb50011a73 /xlators | |
parent | 796ad4c4a10e03648499e4aedb9337e26706f505 (diff) | |
download | glusterfs-6fad53370c93023be3ab945fbf8eb4154b800995.tar.gz glusterfs-6fad53370c93023be3ab945fbf8eb4154b800995.tar.xz glusterfs-6fad53370c93023be3ab945fbf8eb4154b800995.zip |
mount: optimize parameter backup-volfile-servers (#2043)
Optimize parameter backup-volfile-servers to support IPv6 address.
Fixes: #2042
Signed-off-by: Cheng Lin <cheng.lin130@zte.com.cn>
Diffstat (limited to 'xlators')
-rwxr-xr-x | xlators/mount/fuse/utils/mount.glusterfs.in | 25 | ||||
-rwxr-xr-x | xlators/mount/fuse/utils/mount_glusterfs.in | 25 |
2 files changed, 48 insertions, 2 deletions
diff --git a/xlators/mount/fuse/utils/mount.glusterfs.in b/xlators/mount/fuse/utils/mount.glusterfs.in index ac4d94cb74..531a7c1649 100755 --- a/xlators/mount/fuse/utils/mount.glusterfs.in +++ b/xlators/mount/fuse/utils/mount.glusterfs.in @@ -75,7 +75,23 @@ parse_backup_volfile_servers () local servers="" local new_servers="" - servers=$(echo ${server_list} | sed 's/\:/ /g') + servers=$(echo ${server_list} | \ + sed 's/./& /g' | \ + awk 'BEGIN{sk=0;sep=0;err=0}{\ + for(i=1;i<=NF;i++){\ + if((sk!=0)&&(sk!=1)){err=1;break;}\ + if(sk && $i==":"){sep++;}\ + if($i=="["){sk++;sep=0;continue;}\ + if($i=="]"){sk--;if(sep){continue;}else{err=1;break;}}\ + if(sk){printf $i;}else{if($i==":")printf " ";else printf $i;}}}\ + END{if(sk!=0 || err){printf " SyntaxError";}else{printf " SyntaxOK";}}') + + servers=$(echo $servers) + if [ "$servers" == "SyntaxOK" ]; then + echo "" + return + fi + for server in ${servers}; do is_valid_hostname ${server} if [ $? -eq 1 ]; then @@ -338,6 +354,13 @@ start_glusterfs () if [ -n "$backup_volfile_servers" ]; then backup_servers=$(parse_backup_volfile_servers ${backup_volfile_servers}) + syntax_status=$(echo ${backup_servers##*' '}) + if [ "$syntax_status" == "SyntaxError" ]; then + warn "ERROR: Invalid backup-volfile-servers specified.. exiting" + exit 1 + fi + backup_servers=$(echo ${backup_servers%' '*}) + for i in $(echo ${backup_servers}); do cmd_line=$(echo "$cmd_line --volfile-server=$i"); done diff --git a/xlators/mount/fuse/utils/mount_glusterfs.in b/xlators/mount/fuse/utils/mount_glusterfs.in index 3a5feb606d..58c00e8c93 100755 --- a/xlators/mount/fuse/utils/mount_glusterfs.in +++ b/xlators/mount/fuse/utils/mount_glusterfs.in @@ -67,7 +67,23 @@ parse_backup_volfile_servers () local servers="" local new_servers="" - servers=$(echo ${server_list} | sed 's/\:/ /g') + servers=$(echo ${server_list} | \ + sed 's/./& /g' | \ + awk 'BEGIN{sk=0;sep=0;err=0}{\ + for(i=1;i<=NF;i++){\ + if((sk!=0)&&(sk!=1)){err=1;break;}\ + if(sk && $i==":"){sep++;}\ + if($i=="["){sk++;sep=0;continue;}\ + if($i=="]"){sk--;if(sep){continue;}else{err=1;break;}}\ + if(sk){printf $i;}else{if($i==":")printf " ";else printf $i;}}}\ + END{if(sk!=0 || err){printf " SyntaxError";}else{printf " SyntaxOK";}}') + + servers=$(echo $servers) + if [ "$servers" == "SyntaxOK" ]; then + echo "" + return + fi + for server in ${servers}; do is_valid_hostname ${server} if [ $? -eq 1 ]; then @@ -267,6 +283,13 @@ start_glusterfs () if [ -n "$backup_volfile_servers" ]; then backup_servers=$(parse_backup_volfile_servers ${backup_volfile_servers}) + syntax_status=$(echo ${backup_servers##*' '}) + if [ "$syntax_status" == "SyntaxError" ]; then + warn "ERROR: Invalid backup-volfile-servers specified.. exiting" + exit 1 + fi + backup_servers=$(echo ${backup_servers%' '*}) + for i in $(echo ${backup_servers}); do cmd_line=$(echo "$cmd_line --volfile-server=$i"); done |