Write zone metadata in a single write()
This commit is contained in:
parent
6e92d5071a
commit
2e5bbb95b4
|
@ -36,7 +36,8 @@ cbd_format(const char* dev,
|
||||||
uint pblk_size;
|
uint pblk_size;
|
||||||
uint lblk_size;
|
uint lblk_size;
|
||||||
struct cbd_header header;
|
struct cbd_header header;
|
||||||
uint8_t buf[PAGE_SIZE];
|
uint8_t header_buf[PAGE_SIZE];
|
||||||
|
uint8_t* data_buf;
|
||||||
uint64_t pblk;
|
uint64_t pblk;
|
||||||
uint64_t zone_idx;
|
uint64_t zone_idx;
|
||||||
|
|
||||||
|
@ -132,26 +133,22 @@ cbd_format(const char* dev,
|
||||||
printf(" nr_zones=%lu\n", (unsigned long)header.params.nr_zones);
|
printf(" nr_zones=%lu\n", (unsigned long)header.params.nr_zones);
|
||||||
printf(" lblk_per_zone=%lu\n", (unsigned long)header.params.lblk_per_zone);
|
printf(" lblk_per_zone=%lu\n", (unsigned long)header.params.lblk_per_zone);
|
||||||
|
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(header_buf, 0, sizeof(header_buf));
|
||||||
cbd_header_put(buf, &header);
|
cbd_header_put(header_buf, &header);
|
||||||
|
|
||||||
pblk = 0;
|
pblk = 0;
|
||||||
pblk_write(devfd, pblk_size, pblk, 1, buf);
|
pblk_write(devfd, pblk_size, pblk, 1, header_buf);
|
||||||
pblk += CBD_HEADER_BLOCKS;
|
pblk += CBD_HEADER_BLOCKS;
|
||||||
|
|
||||||
printf("Writing %lu zones ...\n",
|
printf("Writing %lu zones ...\n",
|
||||||
(unsigned long)header.params.nr_zones);
|
(unsigned long)header.params.nr_zones);
|
||||||
|
|
||||||
memset(buf, 0, sizeof(buf));
|
data_buf = calloc(zone_metadata_len(&header.params), PAGE_SIZE);
|
||||||
for (zone_idx = 0; zone_idx < header.params.nr_zones; ++zone_idx) {
|
for (zone_idx = 0; zone_idx < header.params.nr_zones; ++zone_idx) {
|
||||||
uint32_t count;
|
|
||||||
uint32_t n;
|
|
||||||
pblk = zone_off(&header.params, zone_idx);
|
pblk = zone_off(&header.params, zone_idx);
|
||||||
count = zone_metadata_len(&header.params);
|
pblk_write(devfd, pblk_size, pblk, zone_metadata_len(&header.params), data_buf);
|
||||||
for (n = 0; n < count; ++n) {
|
|
||||||
pblk_write(devfd, pblk_size, pblk + n, 1, buf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
free(data_buf);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue