code: func udevadmChangeToDrive(drivePath string) error {
  	klog.V(5).Infof("udevadmChangeToDrive: drive=%q", drivePath)
  
  	// Evaluate symlink, if any
  	drive, err := filepath.EvalSymlinks(drivePath)
  	if err != nil {
  		return fmt.Errorf("udevadmChangeToDrive: filepath.EvalSymlinks(%q) failed with %v", drivePath, err)
  	}
  	klog.V(5).Infof("udevadmChangeToDrive: symlink path is %q", drive)
  
  	// Check to make sure input is "/dev/sd*"
  	if !strings.Contains(drive, diskSDPath) {
  		return fmt.Errorf("udevadmChangeToDrive: expected input in the form \"%s\" but drive is %q", diskSDPattern, drive)
  	}
  
  	// Call "udevadm trigger --action=change --property-match=DEVNAME=/dev/sd..."
  	_, err = exec.New().Command(
  		"udevadm",
  		"trigger",
  		"--action=change",
  		fmt.Sprintf("--property-match=DEVNAME=%s", drive)).CombinedOutput()
  	if err != nil {
  		return fmt.Errorf("udevadmChangeToDrive: udevadm trigger failed for drive %q with %v", drive, err)
  	}
  	return nil
  }
docs: // Calls "udevadm trigger --action=change" on the specified drive.
  // drivePath must be the block device path to trigger on, in the format "/dev/sd*", or a symlink to it.
  // This is workaround for Issue #7972. Once the underlying issue has been resolved, this may be removed.