Lines Matching refs:bd
43 struct exfat_blk_dev *bd, struct exfat_user_input *ui)
57 pbsx->vol_offset = cpu_to_le64(bd->offset / bd->sector_size);
58 pbsx->vol_length = cpu_to_le64(bd->size / bd->sector_size);
59 pbsx->fat_offset = cpu_to_le32(finfo.fat_byte_off / bd->sector_size);
60 pbsx->fat_length = cpu_to_le32(finfo.fat_byte_len / bd->sector_size);
61 pbsx->clu_offset = cpu_to_le32(finfo.clu_byte_off / bd->sector_size);
66 pbsx->sect_size_bits = bd->sector_size_bits;
68 /* Compute base 2 logarithm of ui->cluster_size / bd->sector_size */
69 for (i = ui->cluster_size / bd->sector_size; i > 1; i /= 2)
102 static int exfat_write_boot_sector(struct exfat_blk_dev *bd,
113 ppbr = malloc(bd->sector_size);
118 memset(ppbr, 0, bd->sector_size);
120 exfat_setup_boot_sector(ppbr, bd, ui);
123 ret = exfat_write_sector(bd, ppbr, sec_idx);
130 boot_calc_checksum((unsigned char *)ppbr, bd->sector_size,
138 static int exfat_write_extended_boot_sectors(struct exfat_blk_dev *bd,
147 peb = malloc(bd->sector_size);
154 memset(peb, 0, bd->sector_size);
155 peb_signature = (__le16*) (peb + bd->sector_size - 2);
158 if (exfat_write_sector(bd, peb, sec_idx++)) {
164 boot_calc_checksum((unsigned char *) peb, bd->sector_size,
173 static int exfat_write_oem_sector(struct exfat_blk_dev *bd,
180 oem = malloc(bd->sector_size);
187 memset(oem, 0xFF, bd->sector_size);
188 ret = exfat_write_sector(bd, oem, sec_idx);
195 boot_calc_checksum((unsigned char *)oem, bd->sector_size, false,
199 memset(oem, 0, bd->sector_size);
200 ret = exfat_write_sector(bd, oem, sec_idx + 1);
207 boot_calc_checksum((unsigned char *)oem, bd->sector_size, false,
215 static int exfat_create_volume_boot_record(struct exfat_blk_dev *bd,
221 ret = exfat_write_boot_sector(bd, ui, &checksum, is_backup);
224 ret = exfat_write_extended_boot_sectors(bd, &checksum, is_backup);
227 ret = exfat_write_oem_sector(bd, &checksum, is_backup);
231 return exfat_write_checksum_sector(bd, checksum, is_backup);
271 static int exfat_create_fat_table(struct exfat_blk_dev *bd,
277 ret = write_fat_entry(bd->dev_fd, cpu_to_le32(0xfffffff8), 0);
284 ret = write_fat_entry(bd->dev_fd, cpu_to_le32(0xffffffff), 1);
291 clu = write_fat_entries(ui, bd->dev_fd, EXFAT_FIRST_CLUSTER,
297 clu = write_fat_entries(ui, bd->dev_fd, clu + 1, finfo.ut_byte_len);
302 clu = write_fat_entries(ui, bd->dev_fd, clu + 1, finfo.root_byte_len);
312 static int exfat_create_bitmap(struct exfat_blk_dev *bd)
325 nbytes = pwrite(bd->dev_fd, bitmap, finfo.bitmap_byte_len, finfo.bitmap_byte_off);
337 static int exfat_create_root_dir(struct exfat_blk_dev *bd,
362 nbytes = pwrite(bd->dev_fd, ed, dentries_len, finfo.root_byte_off);
436 static int exfat_build_mkfs_info(struct exfat_blk_dev *bd,
442 if (ui->cluster_size < bd->sector_size) {
444 ui->cluster_size, bd->sector_size);
447 if (ui->boundary_align < bd->sector_size) {
449 bd->sector_size);
452 finfo.fat_byte_off = round_up(bd->offset + 24 * bd->sector_size,
453 ui->boundary_align) - bd->offset;
455 if (bd->num_clusters > UINT32_MAX / 4) {
459 finfo.fat_byte_len = round_up((bd->num_clusters * 4), ui->cluster_size);
460 finfo.clu_byte_off = round_up(bd->offset + finfo.fat_byte_off +
461 finfo.fat_byte_len, ui->boundary_align) - bd->offset;
462 if (bd->size <= finfo.clu_byte_off) {
466 total_clu_cnt = (bd->size - finfo.clu_byte_off) / ui->cluster_size;
492 static int exfat_zero_out_disk(struct exfat_blk_dev *bd,
504 size = bd->size;
511 lseek(bd->dev_fd, 0, SEEK_SET);
514 nbytes = write(bd->dev_fd, buf, chunk_size);
525 total_written, bd->size);
529 static int make_exfat(struct exfat_blk_dev *bd, struct exfat_user_input *ui)
537 ret = exfat_create_volume_boot_record(bd, ui, 0);
544 ret = exfat_create_volume_boot_record(bd, ui, 1);
550 ret = exfat_create_fat_table(bd, ui);
556 ret = exfat_create_bitmap(bd);
562 ret = exfat_create_upcase_table(bd);
568 ret = exfat_create_root_dir(bd, ui);
605 struct exfat_blk_dev bd;
687 ret = exfat_get_blk_dev_info(&ui, &bd);
691 ret = exfat_build_mkfs_info(&bd, &ui);
695 ret = exfat_zero_out_disk(&bd, &ui);
699 ret = make_exfat(&bd, &ui);
704 ret = fsync(bd.dev_fd);
706 close(bd.dev_fd);