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 | |
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>
-rw-r--r-- | doc/mount.glusterfs.8 | 3 | ||||
-rwxr-xr-x | xlators/mount/fuse/utils/mount.glusterfs.in | 25 | ||||
-rwxr-xr-x | xlators/mount/fuse/utils/mount_glusterfs.in | 25 |
3 files changed, 51 insertions, 2 deletions
diff --git a/doc/mount.glusterfs.8 b/doc/mount.glusterfs.8 index ce16e9e40b..c261a59b30 100644 --- a/doc/mount.glusterfs.8 +++ b/doc/mount.glusterfs.8 @@ -104,9 +104,12 @@ Set the subdirectory mount option [default: NULL, ie, no subdirectory mount] .TP \fBbackup\-volfile\-servers=\fRSERVERLIST Provide list of backup volfile servers in the following format [default: None] +If use IPv6 address in SERVERLIST, it is required to use '[' and ']' to surround IPv6 address. \fB$ mount \-t glusterfs \-obackup\-volfile\-servers=<server2>:\fR \fB <server3>:...:<serverN> <server1>:/<volname> <mount_point>\fR +\fB$ mount \-t glusterfs \-obackup\-volfile\-servers=<[ipv6_addr2]>:\fR +\fB <[ipv6_addr3]>:...:<[ipv6_addrN]> <ipv6_addr1>:/<volname> <mount_point>\fR .TP .TP 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 |