Lines Matching refs:bd

120 static void exfat_set_default_cluster_size(struct exfat_blk_dev *bd,
123 if (256 * MB >= bd->size)
125 else if (32 * GB >= bd->size)
139 struct exfat_blk_dev *bd)
180 bd->dev_fd = fd;
181 bd->offset = blk_dev_offset;
182 bd->size = blk_dev_size;
184 exfat_set_default_cluster_size(bd, ui);
189 if (ioctl(fd, BLKSSZGET, &bd->sector_size) < 0)
190 bd->sector_size = DEFAULT_SECTOR_SIZE;
191 bd->sector_size_bits = sector_size_bits(bd->sector_size);
192 bd->num_sectors = blk_dev_size / bd->sector_size;
193 bd->num_clusters = blk_dev_size / ui->cluster_size;
196 exfat_debug("Block device offset : %llu\n", bd->offset);
197 exfat_debug("Block device size : %llu\n", bd->size);
198 exfat_debug("Block sector size : %u\n", bd->sector_size);
200 bd->num_sectors);
202 bd->num_clusters);
205 bd->dev_fd = fd;
350 off_t exfat_get_root_entry_offset(struct exfat_blk_dev *bd)
363 nbytes = exfat_read(bd->dev_fd, bs, EXFAT_MAX_SECTOR_SIZE, 0);
494 int exfat_read_sector(struct exfat_blk_dev *bd, void *buf, unsigned int sec_off)
498 (unsigned long long)sec_off * bd->sector_size;
500 ret = pread(bd->dev_fd, buf, bd->sector_size, offset);
508 int exfat_write_sector(struct exfat_blk_dev *bd, void *buf,
513 (unsigned long long)sec_off * bd->sector_size;
515 bytes = pwrite(bd->dev_fd, buf, bd->sector_size, offset);
516 if (bytes != (int)bd->sector_size) {
524 int exfat_write_checksum_sector(struct exfat_blk_dev *bd,
532 checksum_buf = malloc(bd->sector_size);
539 for (i = 0; i < bd->sector_size / sizeof(int); i++)
542 ret = exfat_write_sector(bd, checksum_buf, sec_idx);
585 static int exfat_update_boot_checksum(struct exfat_blk_dev *bd, bool is_backup)
591 buf = malloc(bd->sector_size);
603 ret = exfat_read_sector(bd, buf, sec_idx + backup_sec_idx);
613 boot_calc_checksum(buf, bd->sector_size, is_boot_sec,
617 ret = exfat_write_checksum_sector(bd, checksum, is_backup);
625 int exfat_set_volume_serial(struct exfat_blk_dev *bd,
638 ret = exfat_read(bd->dev_fd, (char *)ppbr, EXFAT_MAX_SECTOR_SIZE,
652 bd->sector_size = 1 << ppbr->bsx.sect_size_bits;
656 ret = exfat_write_sector(bd, (char *)ppbr, BOOT_SEC_IDX);
664 ret = exfat_write_sector(bd, (char *)ppbr, BACKUP_BOOT_SEC_IDX);
671 ret = exfat_update_boot_checksum(bd, 0);
677 ret = exfat_update_boot_checksum(bd, 1);
688 unsigned int exfat_clus_to_blk_dev_off(struct exfat_blk_dev *bd,
691 return clu_off_sectnr * bd->sector_size +
692 (clu - EXFAT_RESERVED_CLUSTERS) * bd->cluster_size;