]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/include/spdk/vmd.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / include / spdk / vmd.h
index 5de5874c5ac1d5c9511a56661da3aa168319e412..100aa893cee4ebcc51597cfb4509791dd0d4bafa 100644 (file)
@@ -50,14 +50,19 @@ extern "C" {
 /* Maximum VMD devices - up to 6 per cpu */
 #define MAX_VMD_TARGET  24
 
-/*
+/**
  * Enumerate VMD devices and hook them into the spdk pci subsystem
  *
  * \return 0 on success, -1 on failure
  */
 int spdk_vmd_init(void);
 
-/*
+/**
+ * Release any resources allocated by the VMD library via spdk_vmd_init().
+ */
+void spdk_vmd_fini(void);
+
+/**
  * Returns a list of nvme devices found on the given vmd pci BDF.
  *
  * \param vmd_addr pci BDF of the vmd device to return end device list
@@ -67,6 +72,43 @@ int spdk_vmd_init(void);
  */
 int spdk_vmd_pci_device_list(struct spdk_pci_addr vmd_addr, struct spdk_pci_device *nvme_list);
 
+/** State of the LEDs */
+enum spdk_vmd_led_state {
+       SPDK_VMD_LED_STATE_OFF,
+       SPDK_VMD_LED_STATE_IDENTIFY,
+       SPDK_VMD_LED_STATE_FAULT,
+       SPDK_VMD_LED_STATE_REBUILD,
+       SPDK_VMD_LED_STATE_UNKNOWN,
+};
+
+/**
+ * Sets the state of the LED on specified PCI device.  The device needs to be behind VMD.
+ *
+ * \param pci_device PCI device
+ * \param state LED state to set
+ *
+ * \return 0 on success, negative errno otherwise
+ */
+int spdk_vmd_set_led_state(struct spdk_pci_device *pci_device, enum spdk_vmd_led_state state);
+
+/**
+ * Retrieves the state of the LED on specified PCI device.  The device needs to be behind VMD.
+ *
+ * \param pci_device PCI device
+ * \param state current LED state
+ *
+ * \return 0 on success, negative errno otherwise
+ */
+int spdk_vmd_get_led_state(struct spdk_pci_device *pci_device, enum spdk_vmd_led_state *state);
+
+/**
+ * Checks for hotplug/hotremove events of the devices behind the VMD.  Needs to be called
+ * periodically to detect them.
+ *
+ * \return number of hotplug events detected or negative errno in case of errors
+ */
+int spdk_vmd_hotplug_monitor(void);
+
 #ifdef __cplusplus
 }
 #endif