Lines Matching refs:disk
1060 //represents the GPT disk the partition resides on. In the case of emmc it
1133 //Get the block size of the disk represented by decsriptor fd
1154 //disk represented by fd
1190 //Read out the GPT header for the disk that contains the partition partname
1258 //The fd here is the descriptor for the 'disk' which
1353 struct gpt_disk *disk;
1354 disk = (struct gpt_disk *)malloc(sizeof(struct gpt_disk));
1355 if (!disk) {
1359 memset(disk, 0, sizeof(struct gpt_disk));
1361 return disk;
1365 void gpt_disk_free(struct gpt_disk *disk)
1367 if (!disk)
1369 if (disk->hdr)
1370 free(disk->hdr);
1371 if (disk->hdr_bak)
1372 free(disk->hdr_bak);
1373 if (disk->pentry_arr)
1374 free(disk->pentry_arr);
1375 if (disk->pentry_arr_bak)
1376 free(disk->pentry_arr_bak);
1377 free(disk);
1382 //disk represented by path dev. Returns 0 on success and -1 on error.
1385 struct gpt_disk *disk = NULL;
1393 disk = dsk;
1394 disk->hdr = gpt_get_header(dev, PRIMARY_GPT);
1395 if (!disk->hdr) {
1399 gpt_header_size = GET_4_BYTES(disk->hdr + HEADER_SIZE_OFFSET);
1400 disk->hdr_crc = sparse_crc32(0, disk->hdr, gpt_header_size);
1401 disk->hdr_bak = gpt_get_header(dev, PRIMARY_GPT);
1402 if (!disk->hdr_bak) {
1406 disk->hdr_bak_crc = sparse_crc32(0, disk->hdr_bak, gpt_header_size);
1411 disk->devpath,
1412 sizeof(disk->devpath)) != 0) {
1418 fd = open(disk->devpath, O_RDWR);
1422 disk->devpath,
1426 disk->pentry_arr = gpt_get_pentry_arr(disk->hdr, fd);
1427 if (!disk->pentry_arr) {
1432 disk->pentry_arr_bak = gpt_get_pentry_arr(disk->hdr_bak, fd);
1433 if (!disk->pentry_arr_bak) {
1438 disk->pentry_size = GET_4_BYTES(disk->hdr + PENTRY_SIZE_OFFSET);
1439 disk->pentry_arr_size =
1440 GET_4_BYTES(disk->hdr + PARTITION_COUNT_OFFSET) *
1441 disk->pentry_size;
1442 disk->pentry_arr_crc = GET_4_BYTES(disk->hdr + PARTITION_CRC_OFFSET);
1443 disk->pentry_arr_bak_crc = GET_4_BYTES(disk->hdr_bak +
1445 disk->block_size = gpt_get_block_size(fd);
1447 disk->is_initialized = GPT_DISK_INIT_MAGIC;
1456 uint8_t* gpt_disk_get_pentry(struct gpt_disk *disk,
1461 if (!disk || !partname || disk->is_initialized != GPT_DISK_INIT_MAGIC) {
1466 disk->pentry_arr : disk->pentry_arr_bak;
1468 ptn_arr + disk->pentry_arr_size ,
1469 disk->pentry_size));
1477 //disk.
1478 int gpt_disk_update_crc(struct gpt_disk *disk)
1481 if (!disk || (disk->is_initialized != GPT_DISK_INIT_MAGIC)) {
1486 disk->pentry_arr_crc = sparse_crc32(0,
1487 disk->pentry_arr,
1488 disk->pentry_arr_size);
1490 disk->pentry_arr_bak_crc = sparse_crc32(0,
1491 disk->pentry_arr_bak,
1492 disk->pentry_arr_size);
1494 PUT_4_BYTES(disk->hdr + PARTITION_CRC_OFFSET, disk->pentry_arr_crc);
1496 PUT_4_BYTES(disk->hdr_bak + PARTITION_CRC_OFFSET,
1497 disk->pentry_arr_bak_crc);
1499 gpt_header_size = GET_4_BYTES(disk->hdr + HEADER_SIZE_OFFSET);
1501 PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, 0);
1502 PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, 0);
1503 disk->hdr_crc = sparse_crc32(0, disk->hdr, gpt_header_size);
1504 disk->hdr_bak_crc = sparse_crc32(0, disk->hdr_bak, gpt_header_size);
1505 PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, disk->hdr_crc);
1506 PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, disk->hdr_bak_crc);
1512 //Write the contents of struct gpt_disk back to the actual disk
1513 int gpt_disk_commit(struct gpt_disk *disk)
1516 if (!disk || (disk->is_initialized != GPT_DISK_INIT_MAGIC)){
1520 fd = open(disk->devpath, O_RDWR);
1524 disk->devpath,
1530 if(gpt_set_header(disk->hdr, fd, PRIMARY_GPT) != 0) {
1537 if (gpt_set_pentry_arr(disk->hdr, fd, disk->pentry_arr)) {