Changeset b422718 in mainline
- Timestamp:
- 2024-10-28T17:44:11Z (7 months ago)
- Children:
- 066fed9
- Parents:
- 4dd650a
- git-author:
- Miroslav Cimerman <mc@…> (2024-10-28 17:42:31)
- git-committer:
- Miroslav Cimerman <mc@…> (2024-10-28 17:44:11)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/superblock.c
r4dd650a rb422718 112 112 } 113 113 114 static errno_t validate_meta(hr_metadata_t *md) 115 { 116 if (uint64_t_le2host(md->magic) != HR_MAGIC) { 117 printf("invalid magic\n"); 118 return EINVAL; 119 } 120 return EOK; 121 } 122 123 114 124 errno_t hr_get_vol_from_meta(hr_config_t *cfg, hr_volume_t *new_volume) 115 125 { … … 123 133 return ENOMEM; 124 134 125 /* for now assume metadata are in sync across extents */ 126 rc = read_metadata(cfg->devs[0], metadata); 127 if (rc != EOK) 128 goto end; 129 130 /* TODO: sort new_volume->extents according to metadata extent index */ 131 132 if (uint64_t_le2host(metadata->magic) != HR_MAGIC) { 133 printf("invalid magic\n"); 134 rc = EINVAL; 135 goto end; 136 } 135 uint32_t md_order[HR_MAXDEVS] = { 0 }; 136 for (size_t i = 0; i < cfg->dev_no; i++) { 137 rc = read_metadata(cfg->devs[i], metadata); 138 if (rc != EOK) 139 goto end; 140 rc = validate_meta(metadata); 141 if (rc != EOK) 142 goto end; 143 md_order[i] = uint32_t_le2host(metadata->index); 144 } 145 146 for (size_t i = 0; i < cfg->dev_no; i++) 147 for (size_t j = 0; j < cfg->dev_no; j++) 148 if (i == md_order[j]) 149 new_volume->extents[i].svc_id = cfg->devs[j]; 150 151 /* 152 * still assume metadata are in sync across extents 153 */ 137 154 138 155 new_volume->level = uint32_t_le2host(metadata->level);
Note:
See TracChangeset
for help on using the changeset viewer.