code: func (f *flexVolumeMounter) SetUpAt(dir string, fsGroup *int64) error {
  	// Mount only once.
  	alreadyMounted, err := prepareForMount(f.mounter, dir)
  	if err != nil {
  		return err
  	}
  	if alreadyMounted {
  		return nil
  	}
  
  	call := f.plugin.NewDriverCall(mountCmd)
  
  	// Interface parameters
  	call.Append(dir)
  
  	extraOptions := make(map[string]string)
  
  	// pod metadata
  	extraOptions[optionKeyPodName] = f.podName
  	extraOptions[optionKeyPodNamespace] = f.podNamespace
  	extraOptions[optionKeyPodUID] = string(f.podUID)
  	// service account metadata
  	extraOptions[optionKeyServiceAccountName] = f.podServiceAccountName
  
  	// Extract secret and pass it as options.
  	if err := addSecretsToOptions(extraOptions, f.spec, f.podNamespace, f.driverName, f.plugin.host); err != nil {
  		os.Remove(dir)
  		return err
  	}
  
  	// Implicit parameters
  	if fsGroup != nil {
  		extraOptions[optionFSGroup] = strconv.FormatInt(int64(*fsGroup), 10)
  	}
  
  	call.AppendSpec(f.spec, f.plugin.host, extraOptions)
  
  	_, err = call.Run()
  	if isCmdNotSupportedErr(err) {
  		err = (*mounterDefaults)(f).SetUpAt(dir, fsGroup)
  	}
  
  	if err != nil {
  		os.Remove(dir)
  		return err
  	}
  
  	if !f.readOnly {
  		if f.plugin.capabilities.FSGroup {
  			volume.SetVolumeOwnership(f, fsGroup)
  		}
  	}
  
  	return nil
  }
docs: // SetUpAt creates new directory.