code: func (c *controllerCommon) GetNextDiskLun(nodeName types.NodeName) (int32, error) {
  	disks, err := c.getNodeDataDisks(nodeName)
  	if err != nil {
  		klog.Errorf("error of getting data disks for node %q: %v", nodeName, err)
  		return -1, err
  	}
  
  	used := make([]bool, maxLUN)
  	for _, disk := range disks {
  		if disk.Lun != nil {
  			used[*disk.Lun] = true
  		}
  	}
  	for k, v := range used {
  		if !v {
  			return int32(k), nil
  		}
  	}
  	return -1, fmt.Errorf("all luns are used")
  }
docs: // GetNextDiskLun searches all vhd attachment on the host and find unused lun. Return -1 if all luns are used.