@@ -268,7 +268,7 @@ func (VolumeAPI) GetDiskNumberFromVolumeID(volumeID string) (uint32, error) {
268
268
269
269
// GetVolumeIDFromTargetPath - gets the volume ID given a mount point, the function is recursive until it find a volume or errors out
270
270
func (VolumeAPI ) GetVolumeIDFromTargetPath (mount string ) (string , error ) {
271
- volumeString , err := getTarget (mount )
271
+ volumeString , err := getTarget (mount , 0 )
272
272
273
273
if err != nil {
274
274
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) {
277
277
return volumeString , nil
278
278
}
279
279
280
- func getTarget (mount string ) (string , error ) {
280
+ func getTarget (mount string , retry int ) (string , error ) {
281
281
cmd := `(Get-Item -Path $Env:mountpath).Target`
282
282
cmdEnv := fmt .Sprintf ("mountpath=%s" , mount )
283
283
out , err := utils .RunPowershellCmd (cmd , cmdEnv )
284
284
if err != nil || len (out ) == 0 {
285
285
return "" , fmt .Errorf ("error getting volume from mount. cmd: %s, output: %s, error: %v" , cmd , string (out ), err )
286
286
}
287
+ if retry >= 256 {
288
+ return "" , fmt .Errorf ("maximum recursion reached, cmd: %s, output: %s, :retry %d" , cmd , string (out ), retry )
289
+ }
290
+
287
291
volumeString := strings .TrimSpace (string (out ))
292
+ klog .V (8 ).Infof ("retry: %d, volumeString: %s" , retry , volumeString )
293
+
288
294
if ! strings .HasPrefix (volumeString , "Volume" ) {
289
- return getTarget (volumeString )
295
+ return getTarget (volumeString , retry + 1 )
290
296
}
291
297
292
298
return ensureVolumePrefix (volumeString ), nil
293
299
}
294
300
295
- // GetVolumeIDFromTargetPath returns the volume id of a given target path.
301
+ // GetClosestVolumeIDFromTargetPath returns the volume id of a given target path.
296
302
func (VolumeAPI ) GetClosestVolumeIDFromTargetPath (targetPath string ) (string , error ) {
297
303
volumeString , err := findClosestVolume (targetPath )
298
304
0 commit comments