@@ -15,6 +15,7 @@ import (
1515 "github.com/IBM/ibm-object-csi-driver/pkg/constants"
1616 "github.com/mitchellh/go-ps"
1717 "k8s.io/klog/v2"
18+ k8sMountUtils "k8s.io/mount-utils"
1819)
1920
2021var unmount = syscall .Unmount
@@ -32,16 +33,19 @@ type MounterOptsUtils struct {
3233
3334func (su * MounterOptsUtils ) FuseMount (path string , comm string , args []string ) error {
3435 klog .Info ("-FuseMount-" )
35- klog .Infof ("FuseMount params:\n \t path: <%s>\n \t command: <%s>\n \t args: <%s >" , path , comm , args )
36+ klog .Infof ("FuseMount params:\n \t path: <%s>\n \t command: <%s>\n \t args: <%v >" , path , comm , args )
3637 out , err := command (comm , args ... ).CombinedOutput ()
3738 if err != nil {
39+ klog .Warningf ("FuseMount: mount command failed: mounter=%s, args=%v, error=%v, output=%s" , comm , args , err , string (out ))
40+ klog .Infof ("FuseMount: checking if path already exists and is a mountpoint: path=%s" , path )
3841 if mounted , err1 := isMountpoint (path ); err1 == nil && mounted { // check if bucket already got mounted
3942 klog .Infof ("bucket is already mounted using '%s' mounter" , comm )
4043 return nil
4144 }
42- klog .Errorf ("FuseMount: command execution failed: <%s> \n args: <%s> \n error: <%v> \n output: <%v> " , comm , args , err , string ( out ) )
45+ klog .Errorf ("FuseMount: path is not mountpoint, mount failed: path=%s " , path )
4346 return fmt .Errorf ("'%s' mount failed: <%v>" , comm , string (out ))
4447 }
48+ klog .Infof ("mount command succeeded: mounter=%s, output=%s" , comm , string (out ))
4549 if err := waitForMount (path , 10 * time .Second ); err != nil {
4650 return err
4751 }
@@ -126,20 +130,21 @@ func isMountpoint(pathname string) (bool, error) {
126130
127131func waitForMount (path string , timeout time.Duration ) error {
128132 var elapsed time.Duration
133+ attempt := 1
129134 for {
130- out , err := exec .Command ("mountpoint" , path ).CombinedOutput ()
131- outStr := strings .TrimSpace (string (out ))
132- if err == nil && strings .HasSuffix (outStr , "is a mountpoint" ) {
133- klog .Infof ("Path is a mountpoint: pathname - %s" , path )
135+ isMount , err := k8sMountUtils .New ("" ).IsMountPoint (path )
136+ if err == nil && isMount {
137+ klog .Infof ("Path is a mountpoint: pathname: %s" , path )
134138 return nil
135139 }
136140
137- klog .Infof ("Mountpoint check in progress: path=%s, output=%s , err=%v" , path , outStr , err )
141+ klog .Infof ("Mountpoint check in progress: attempt=%d, path=%s, isMount=%v , err=%v" , attempt , path , isMount , err )
138142 time .Sleep (constants .Interval )
139- elapsed = elapsed + constants .Interval
143+ elapsed += constants .Interval
140144 if elapsed >= timeout {
141- return fmt .Errorf ("timeout waiting for mount: last check output: %s " , outStr )
145+ return fmt .Errorf ("timeout waiting for mount. Last check response: isMount=%v, err=%v " , isMount , err )
142146 }
147+ attempt ++
143148 }
144149}
145150
0 commit comments