From b0958718d5e4f59de6d3321bbfae022ee7468720 Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Fri, 21 Jul 2017 11:05:06 +0200 Subject: [PATCH] UPSTREAM: 49127: Make definite mount timeout for glusterfs volume mount --- .../kubernetes/pkg/volume/glusterfs/glusterfs.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go b/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go index 8f21587945b7..519785ab48df 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go @@ -333,9 +333,14 @@ func (b *glusterfsMounter) setUpAtInternal(dir string) error { options = append(options, "backup-volfile-servers="+dstrings.Join(addrlist[:], ":")) mountOptions := volume.JoinMountOptions(b.mountOptions, options) - // Avoid mount storm, pick a host randomly. - // Iterate all hosts until mount succeeds. - for _, ip := range addrlist { + // with `backup-volfile-servers` mount option in place, it is not required to + // iterate over all the servers in the addrlist. A mount attempt with this option + // will fetch all the servers mentioned in the backup-volfile-servers list. + // Refer backup-volfile-servers @ https://access.redhat.com/documentation/en-US/Red_Hat_Storage/3/html/Administration_Guide/sect-Native_Client.html + + if (len(addrlist) > 0) && (addrlist[0] != "") { + ip := addrlist[0] + errs = b.mounter.Mount(ip+":"+b.path, dir, "glusterfs", mountOptions) if errs == nil { glog.Infof("glusterfs: successfully mounted %s", dir) @@ -360,6 +365,8 @@ func (b *glusterfsMounter) setUpAtInternal(dir string) error { return nil } } + } else { + return fmt.Errorf("glusterfs: failed to execute mount command:[no valid ipaddress found in endpoint address list]") } // Failed mount scenario.