Lines Matching refs:bd
43 struct exfat_blk_dev *bd, struct exfat_user_input *ui) in exfat_setup_boot_sector() argument
57 pbsx->vol_offset = cpu_to_le64(bd->offset / bd->sector_size); in exfat_setup_boot_sector()
58 pbsx->vol_length = cpu_to_le64(bd->size / bd->sector_size); in exfat_setup_boot_sector()
59 pbsx->fat_offset = cpu_to_le32(finfo.fat_byte_off / bd->sector_size); in exfat_setup_boot_sector()
60 pbsx->fat_length = cpu_to_le32(finfo.fat_byte_len / bd->sector_size); in exfat_setup_boot_sector()
61 pbsx->clu_offset = cpu_to_le32(finfo.clu_byte_off / bd->sector_size); in exfat_setup_boot_sector()
66 pbsx->sect_size_bits = bd->sector_size_bits; in exfat_setup_boot_sector()
69 for (i = ui->cluster_size / bd->sector_size; i > 1; i /= 2) in exfat_setup_boot_sector()
102 static int exfat_write_boot_sector(struct exfat_blk_dev *bd, in exfat_write_boot_sector() argument
113 ppbr = malloc(bd->sector_size); in exfat_write_boot_sector()
118 memset(ppbr, 0, bd->sector_size); in exfat_write_boot_sector()
120 exfat_setup_boot_sector(ppbr, bd, ui); in exfat_write_boot_sector()
123 ret = exfat_write_sector(bd, ppbr, sec_idx); in exfat_write_boot_sector()
130 boot_calc_checksum((unsigned char *)ppbr, bd->sector_size, in exfat_write_boot_sector()
138 static int exfat_write_extended_boot_sectors(struct exfat_blk_dev *bd, in exfat_write_extended_boot_sectors() argument
147 peb = malloc(bd->sector_size); in exfat_write_extended_boot_sectors()
154 memset(peb, 0, bd->sector_size); in exfat_write_extended_boot_sectors()
155 peb_signature = (__le16*) (peb + bd->sector_size - 2); in exfat_write_extended_boot_sectors()
158 if (exfat_write_sector(bd, peb, sec_idx++)) { in exfat_write_extended_boot_sectors()
164 boot_calc_checksum((unsigned char *) peb, bd->sector_size, in exfat_write_extended_boot_sectors()
173 static int exfat_write_oem_sector(struct exfat_blk_dev *bd, in exfat_write_oem_sector() argument
180 oem = malloc(bd->sector_size); in exfat_write_oem_sector()
187 memset(oem, 0xFF, bd->sector_size); in exfat_write_oem_sector()
188 ret = exfat_write_sector(bd, oem, sec_idx); in exfat_write_oem_sector()
195 boot_calc_checksum((unsigned char *)oem, bd->sector_size, false, in exfat_write_oem_sector()
199 memset(oem, 0, bd->sector_size); in exfat_write_oem_sector()
200 ret = exfat_write_sector(bd, oem, sec_idx + 1); in exfat_write_oem_sector()
207 boot_calc_checksum((unsigned char *)oem, bd->sector_size, false, in exfat_write_oem_sector()
215 static int exfat_create_volume_boot_record(struct exfat_blk_dev *bd, in exfat_create_volume_boot_record() argument
221 ret = exfat_write_boot_sector(bd, ui, &checksum, is_backup); in exfat_create_volume_boot_record()
224 ret = exfat_write_extended_boot_sectors(bd, &checksum, is_backup); in exfat_create_volume_boot_record()
227 ret = exfat_write_oem_sector(bd, &checksum, is_backup); in exfat_create_volume_boot_record()
231 return exfat_write_checksum_sector(bd, checksum, is_backup); in exfat_create_volume_boot_record()
271 static int exfat_create_fat_table(struct exfat_blk_dev *bd, in exfat_create_fat_table() argument
277 ret = write_fat_entry(bd->dev_fd, cpu_to_le32(0xfffffff8), 0); in exfat_create_fat_table()
284 ret = write_fat_entry(bd->dev_fd, cpu_to_le32(0xffffffff), 1); in exfat_create_fat_table()
291 clu = write_fat_entries(ui, bd->dev_fd, EXFAT_FIRST_CLUSTER, in exfat_create_fat_table()
297 clu = write_fat_entries(ui, bd->dev_fd, clu + 1, finfo.ut_byte_len); in exfat_create_fat_table()
302 clu = write_fat_entries(ui, bd->dev_fd, clu + 1, finfo.root_byte_len); in exfat_create_fat_table()
312 static int exfat_create_bitmap(struct exfat_blk_dev *bd) in exfat_create_bitmap() argument
322 exfat_set_bit(bd, bitmap, i); in exfat_create_bitmap()
324 nbytes = pwrite(bd->dev_fd, bitmap, finfo.bitmap_byte_len, finfo.bitmap_byte_off); in exfat_create_bitmap()
336 static int exfat_create_root_dir(struct exfat_blk_dev *bd, in exfat_create_root_dir() argument
361 nbytes = pwrite(bd->dev_fd, ed, dentries_len, finfo.root_byte_off); in exfat_create_root_dir()
435 static int exfat_build_mkfs_info(struct exfat_blk_dev *bd, in exfat_build_mkfs_info() argument
441 if (ui->cluster_size < bd->sector_size) { in exfat_build_mkfs_info()
443 ui->cluster_size, bd->sector_size); in exfat_build_mkfs_info()
446 if (ui->boundary_align < bd->sector_size) { in exfat_build_mkfs_info()
448 bd->sector_size); in exfat_build_mkfs_info()
451 finfo.fat_byte_off = round_up(bd->offset + 24 * bd->sector_size, in exfat_build_mkfs_info()
452 ui->boundary_align) - bd->offset; in exfat_build_mkfs_info()
454 if (bd->num_clusters > UINT32_MAX / 4) { in exfat_build_mkfs_info()
458 finfo.fat_byte_len = round_up((bd->num_clusters * 4), ui->cluster_size); in exfat_build_mkfs_info()
459 finfo.clu_byte_off = round_up(bd->offset + finfo.fat_byte_off + in exfat_build_mkfs_info()
460 finfo.fat_byte_len, ui->boundary_align) - bd->offset; in exfat_build_mkfs_info()
461 if (bd->size <= finfo.clu_byte_off) { in exfat_build_mkfs_info()
465 total_clu_cnt = (bd->size - finfo.clu_byte_off) / ui->cluster_size; in exfat_build_mkfs_info()
491 static int exfat_zero_out_disk(struct exfat_blk_dev *bd, in exfat_zero_out_disk() argument
503 size = bd->size; in exfat_zero_out_disk()
510 lseek(bd->dev_fd, 0, SEEK_SET); in exfat_zero_out_disk()
513 nbytes = write(bd->dev_fd, buf, chunk_size); in exfat_zero_out_disk()
524 total_written, bd->size); in exfat_zero_out_disk()
528 static int make_exfat(struct exfat_blk_dev *bd, struct exfat_user_input *ui) in make_exfat() argument
536 ret = exfat_create_volume_boot_record(bd, ui, 0); in make_exfat()
543 ret = exfat_create_volume_boot_record(bd, ui, 1); in make_exfat()
549 ret = exfat_create_fat_table(bd, ui); in make_exfat()
555 ret = exfat_create_bitmap(bd); in make_exfat()
561 ret = exfat_create_upcase_table(bd); in make_exfat()
567 ret = exfat_create_root_dir(bd, ui); in make_exfat()
604 struct exfat_blk_dev bd; in main() local
686 ret = exfat_get_blk_dev_info(&ui, &bd); in main()
690 ret = exfat_build_mkfs_info(&bd, &ui); in main()
694 ret = exfat_zero_out_disk(&bd, &ui); in main()
698 ret = make_exfat(&bd, &ui); in main()
703 ret = fsync(bd.dev_fd); in main()
705 close(bd.dev_fd); in main()