Changeset 6f13257 in mainline for uspace/lib/device/include/hr.h
- Timestamp:
- 2025-05-20T11:01:31Z (2 weeks ago)
- Children:
- c5b60e25
- Parents:
- a2281efc
- git-author:
- Miroslav Cimerman <mc@…> (2025-05-20 10:55:15)
- git-committer:
- Miroslav Cimerman <mc@…> (2025-05-20 11:01:31)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/device/include/hr.h
ra2281efc r6f13257 48 48 49 49 typedef enum hr_level { 50 HR_LVL_0 51 HR_LVL_1 52 HR_LVL_4 53 HR_LVL_5 54 HR_LVL_UNKNOWN 50 HR_LVL_0 = 0x00, /* striping, no redundancy */ 51 HR_LVL_1 = 0x01, /* n-way mirroring */ 52 HR_LVL_4 = 0x04, /* dedicated parity */ 53 HR_LVL_5 = 0x05, /* distributed parity */ 54 HR_LVL_UNKNOWN = 0xFF 55 55 } hr_level_t; 56 56 57 57 typedef enum hr_layout { 58 HR_RLQ_NONE 59 HR_RLQ_RAID4_0, 60 HR_RLQ_RAID4_N, 61 HR_RLQ_RAID5_0R, 62 HR_RLQ_RAID5_NR, 63 HR_RLQ_RAID5_NC 58 HR_RLQ_NONE = 0, 59 HR_RLQ_RAID4_0, /* RAID-4 Non-Rotating Parity 0 */ 60 HR_RLQ_RAID4_N, /* RAID-4 Non-Rotating Parity N */ 61 HR_RLQ_RAID5_0R, /* RAID-5 Rotating Parity 0 with Data Restart */ 62 HR_RLQ_RAID5_NR, /* RAID-5 Rotating Parity N with Data Restart */ 63 HR_RLQ_RAID5_NC /* RAID-5 Rotating Parity N with Data Continuation */ 64 64 } hr_layout_t; 65 65 66 66 typedef enum hr_vol_state { 67 HR_VOL_NONE = 0, 68 HR_VOL_ONLINE, 69 HR_VOL_FAULTY, 70 HR_VOL_DEGRADED, 71 HR_VOL_REBUILD 67 HR_VOL_NONE = 0, /* Unknown/None */ 68 HR_VOL_ONLINE, /* optimal */ 69 HR_VOL_FAULTY, /* unusable */ 70 HR_VOL_DEGRADED, /* not optimal */ 71 HR_VOL_REBUILD /* rebuild in progress */ 72 72 } hr_vol_state_t; 73 73 74 74 typedef enum hr_ext_state { 75 HR_EXT_NONE = 0, 76 HR_EXT_INVALID, 77 HR_EXT_ONLINE, 78 HR_EXT_MISSING, 75 HR_EXT_NONE = 0, /* unknown/none state */ 76 HR_EXT_INVALID, /* working but not consistent */ 77 HR_EXT_ONLINE, /* ok */ 78 HR_EXT_MISSING, /* offline */ 79 79 HR_EXT_FAILED, 80 80 HR_EXT_REBUILD, … … 87 87 88 88 typedef struct hr_config { 89 char 90 service_id_t 91 size_t 92 hr_level_t 89 char devname[HR_DEVNAME_LEN]; 90 service_id_t devs[HR_MAX_EXTENTS]; 91 size_t dev_no; 92 hr_level_t level; 93 93 } hr_config_t; 94 94 95 95 typedef struct hr_extent { 96 service_id_t 97 hr_ext_state_t 96 service_id_t svc_id; 97 hr_ext_state_t state; 98 98 } hr_extent_t; 99 99 100 100 typedef struct hr_vol_info { 101 hr_extent_t 102 hr_extent_t 103 size_t 104 size_t 105 service_id_t 106 hr_level_t 107 uint64_t 108 uint32_t 109 size_t 110 hr_vol_state_t 111 uint8_t 101 hr_extent_t extents[HR_MAX_EXTENTS]; 102 hr_extent_t hotspares[HR_MAX_HOTSPARES]; 103 size_t extent_no; 104 size_t hotspare_no; 105 service_id_t svc_id; 106 hr_level_t level; 107 uint64_t nblocks; 108 uint32_t strip_size; 109 size_t bsize; 110 hr_vol_state_t state; 111 uint8_t layout; 112 112 } hr_vol_info_t; 113 113 114 114 typedef enum { 115 HR_METADATA_NATIVE 115 HR_METADATA_NATIVE = 0, 116 116 HR_METADATA_GEOM_MIRROR, 117 117 HR_METADATA_GEOM_STRIPE, … … 120 120 } hr_metadata_type_t; 121 121 122 extern errno_t 123 extern void 124 extern errno_t 125 extern errno_t 126 extern errno_t 127 extern errno_t 128 extern errno_t 129 extern errno_t 130 extern errno_t 131 extern errno_t 132 extern const char 133 extern const char 134 extern const char 135 extern const char 122 extern errno_t hr_sess_init(hr_t **); 123 extern void hr_sess_destroy(hr_t *); 124 extern errno_t hr_create(hr_t *, hr_config_t *); 125 extern errno_t hr_assemble(hr_t *, hr_config_t *, size_t *); 126 extern errno_t hr_auto_assemble(hr_t *, size_t *); 127 extern errno_t hr_stop(hr_t *, const char *); 128 extern errno_t hr_stop_all(hr_t *); 129 extern errno_t hr_fail_extent(hr_t *, const char *, unsigned long); 130 extern errno_t hr_add_hotspare(hr_t *, const char *, const char *); 131 extern errno_t hr_print_state(hr_t *); 132 extern const char *hr_get_vol_state_str(hr_vol_state_t); 133 extern const char *hr_get_ext_state_str(hr_ext_state_t); 134 extern const char *hr_get_layout_str(hr_layout_t); 135 extern const char *hr_get_metadata_type_str(hr_metadata_type_t); 136 136 137 137 #endif
Note:
See TracChangeset
for help on using the changeset viewer.