@@ -268,7 +268,7 @@ func (VolumeAPI) GetDiskNumberFromVolumeID(volumeID string) (uint32, error) {
268268
269269// GetVolumeIDFromTargetPath - gets the volume ID given a mount point, the function is recursive until it find a volume or errors out 
270270func  (VolumeAPI ) GetVolumeIDFromTargetPath (mount  string ) (string , error ) {
271- 	volumeString , err  :=  getTarget (mount )
271+ 	volumeString , err  :=  getTarget (mount ,  0 )
272272
273273	if  err  !=  nil  {
274274		return  "" , fmt .Errorf ("error getting the volume for the mount %s, internal error %v" , mount , err )
@@ -277,22 +277,28 @@ func (VolumeAPI) GetVolumeIDFromTargetPath(mount string) (string, error) {
277277	return  volumeString , nil 
278278}
279279
280- func  getTarget (mount  string ) (string , error ) {
280+ func  getTarget (mount  string ,  retry   int ) (string , error ) {
281281	cmd  :=  `(Get-Item -Path $Env:mountpath).Target` 
282282	cmdEnv  :=  fmt .Sprintf ("mountpath=%s" , mount )
283283	out , err  :=  utils .RunPowershellCmd (cmd , cmdEnv )
284284	if  err  !=  nil  ||  len (out ) ==  0  {
285285		return  "" , fmt .Errorf ("error getting volume from mount. cmd: %s, output: %s, error: %v" , cmd , string (out ), err )
286286	}
287+ 	if  retry  >=  256  {
288+ 		return  "" , fmt .Errorf ("maximum recursion reached, cmd: %s, output: %s, :retry %d" , cmd , string (out ), retry )
289+ 	}
290+ 
287291	volumeString  :=  strings .TrimSpace (string (out ))
292+ 	klog .V (8 ).Infof ("retry: %d, volumeString: %s" , retry , volumeString )
293+ 
288294	if  ! strings .HasPrefix (volumeString , "Volume" ) {
289- 		return  getTarget (volumeString )
295+ 		return  getTarget (volumeString ,  retry + 1 )
290296	}
291297
292298	return  ensureVolumePrefix (volumeString ), nil 
293299}
294300
295- // GetVolumeIDFromTargetPath  returns the volume id of a given target path. 
301+ // GetClosestVolumeIDFromTargetPath  returns the volume id of a given target path. 
296302func  (VolumeAPI ) GetClosestVolumeIDFromTargetPath (targetPath  string ) (string , error ) {
297303	volumeString , err  :=  findClosestVolume (targetPath )
298304
0 commit comments