Lines Matching refs:bd
62 void exfat_set_bit(struct exfat_blk_dev *bd, char *bitmap, in exfat_set_bit() argument
67 b = clu & ((bd->sector_size << 3) - 1); in exfat_set_bit()
72 void exfat_clear_bit(struct exfat_blk_dev *bd, char *bitmap, in exfat_clear_bit() argument
77 b = clu & ((bd->sector_size << 3) - 1); in exfat_clear_bit()
127 static void exfat_set_default_cluster_size(struct exfat_blk_dev *bd, in exfat_set_default_cluster_size() argument
130 if (256 * MB >= bd->size) in exfat_set_default_cluster_size()
132 else if (32 * GB >= bd->size) in exfat_set_default_cluster_size()
146 struct exfat_blk_dev *bd) in exfat_get_blk_dev_info() argument
187 bd->dev_fd = fd; in exfat_get_blk_dev_info()
188 bd->offset = blk_dev_offset; in exfat_get_blk_dev_info()
189 bd->size = blk_dev_size; in exfat_get_blk_dev_info()
191 exfat_set_default_cluster_size(bd, ui); in exfat_get_blk_dev_info()
196 if (ioctl(fd, BLKSSZGET, &bd->sector_size) < 0) in exfat_get_blk_dev_info()
197 bd->sector_size = DEFAULT_SECTOR_SIZE; in exfat_get_blk_dev_info()
198 bd->sector_size_bits = sector_size_bits(bd->sector_size); in exfat_get_blk_dev_info()
199 bd->num_sectors = blk_dev_size / bd->sector_size; in exfat_get_blk_dev_info()
200 bd->num_clusters = blk_dev_size / ui->cluster_size; in exfat_get_blk_dev_info()
203 exfat_debug("Block device offset : %llu\n", bd->offset); in exfat_get_blk_dev_info()
204 exfat_debug("Block device size : %llu\n", bd->size); in exfat_get_blk_dev_info()
205 exfat_debug("Block sector size : %u\n", bd->sector_size); in exfat_get_blk_dev_info()
207 bd->num_sectors); in exfat_get_blk_dev_info()
209 bd->num_clusters); in exfat_get_blk_dev_info()
212 bd->dev_fd = fd; in exfat_get_blk_dev_info()
357 off_t exfat_get_root_entry_offset(struct exfat_blk_dev *bd) in exfat_get_root_entry_offset() argument
370 nbytes = exfat_read(bd->dev_fd, bs, EXFAT_MAX_SECTOR_SIZE, 0); in exfat_get_root_entry_offset()
408 int exfat_show_volume_label(struct exfat_blk_dev *bd, off_t root_clu_off) in exfat_show_volume_label() argument
420 nbytes = exfat_read(bd->dev_fd, vol_entry, in exfat_show_volume_label()
441 int exfat_set_volume_label(struct exfat_blk_dev *bd, in exfat_set_volume_label() argument
461 nbytes = exfat_write(bd->dev_fd, &vol, sizeof(struct exfat_dentry), in exfat_set_volume_label()
467 fsync(bd->dev_fd); in exfat_set_volume_label()
473 int exfat_read_sector(struct exfat_blk_dev *bd, void *buf, unsigned int sec_off) in exfat_read_sector() argument
476 unsigned long long offset = sec_off * bd->sector_size; in exfat_read_sector()
478 ret = pread(bd->dev_fd, buf, bd->sector_size, offset); in exfat_read_sector()
486 int exfat_write_sector(struct exfat_blk_dev *bd, void *buf, in exfat_write_sector() argument
490 unsigned long long offset = sec_off * bd->sector_size; in exfat_write_sector()
492 bytes = pwrite(bd->dev_fd, buf, bd->sector_size, offset); in exfat_write_sector()
493 if (bytes != (int)bd->sector_size) { in exfat_write_sector()
501 int exfat_write_checksum_sector(struct exfat_blk_dev *bd, in exfat_write_checksum_sector() argument
509 checksum_buf = malloc(bd->sector_size); in exfat_write_checksum_sector()
516 for (i = 0; i < bd->sector_size / sizeof(int); i++) in exfat_write_checksum_sector()
519 ret = exfat_write_sector(bd, checksum_buf, sec_idx); in exfat_write_checksum_sector()
556 static int exfat_update_boot_checksum(struct exfat_blk_dev *bd, bool is_backup) in exfat_update_boot_checksum() argument
562 buf = malloc(bd->sector_size); in exfat_update_boot_checksum()
574 ret = exfat_read_sector(bd, buf, sec_idx + backup_sec_idx); in exfat_update_boot_checksum()
584 boot_calc_checksum(buf, bd->sector_size, is_boot_sec, in exfat_update_boot_checksum()
588 ret = exfat_write_checksum_sector(bd, checksum, is_backup); in exfat_update_boot_checksum()
596 int exfat_set_volume_serial(struct exfat_blk_dev *bd, in exfat_set_volume_serial() argument
609 ret = exfat_read(bd->dev_fd, (char *)ppbr, EXFAT_MAX_SECTOR_SIZE, in exfat_set_volume_serial()
617 bd->sector_size = 1 << ppbr->bsx.sect_size_bits; in exfat_set_volume_serial()
621 ret = exfat_write_sector(bd, (char *)ppbr, BOOT_SEC_IDX); in exfat_set_volume_serial()
629 ret = exfat_write_sector(bd, (char *)ppbr, BACKUP_BOOT_SEC_IDX); in exfat_set_volume_serial()
636 ret = exfat_update_boot_checksum(bd, 0); in exfat_set_volume_serial()
642 ret = exfat_update_boot_checksum(bd, 1); in exfat_set_volume_serial()
653 unsigned int exfat_clus_to_blk_dev_off(struct exfat_blk_dev *bd, in exfat_clus_to_blk_dev_off() argument
656 return clu_off_sectnr * bd->sector_size + in exfat_clus_to_blk_dev_off()
657 (clu - EXFAT_RESERVED_CLUSTERS) * bd->cluster_size; in exfat_clus_to_blk_dev_off()