Lines Matching defs:exfat
27 void exfat_bitmap_set_range(struct exfat *exfat, char *bitmap,
32 if (!exfat_heap_clus(exfat, start_clus) ||
33 !exfat_heap_clus(exfat, start_clus + count - 1))
43 static int exfat_bitmap_find_bit(struct exfat *exfat, char *bmap,
49 last_clu = le32_to_cpu(exfat->bs->bsx.clu_count) +
61 int exfat_bitmap_find_zero(struct exfat *exfat, char *bmap,
64 return exfat_bitmap_find_bit(exfat, bmap,
68 int exfat_bitmap_find_one(struct exfat *exfat, char *bmap,
71 return exfat_bitmap_find_bit(exfat, bmap,
371 exfat_err("Bad fs_name in boot sector, which does not describe a valid exfat filesystem\n");
407 int exfat_read_volume_label(struct exfat *exfat)
417 err = exfat_lookup_dentry_set(exfat, exfat->root, &filter);
434 exfat->volume_label, sizeof(exfat->volume_label)) < 0) {
440 exfat_info("label: %s\n", exfat->volume_label);
446 int exfat_set_volume_label(struct exfat *exfat, char *label_input)
458 err = exfat_lookup_dentry_set(exfat, exfat->root, &filter);
483 loc.parent = exfat->root;
486 err = exfat_add_dentry_set(exfat, &loc, pvol, dcount, false);
573 exfat_err("Bad fs_name in boot sector, which does not describe a valid exfat filesystem\n");
647 exfat_err("Bad fs_name in boot sector, which does not describe a valid exfat filesystem\n");
695 int exfat_get_next_clus(struct exfat *exfat, clus_t clus, clus_t *next)
701 if (!exfat_heap_clus(exfat, clus))
704 offset = (off_t)le32_to_cpu(exfat->bs->bsx.fat_offset) <<
705 exfat->bs->bsx.sect_size_bits;
708 if (exfat_read(exfat->blk_dev->dev_fd, next, sizeof(*next), offset)
715 int exfat_get_inode_next_clus(struct exfat *exfat, struct exfat_inode *node,
721 if (!exfat_heap_clus(exfat, clus))
727 return exfat_get_next_clus(exfat, clus, next);
730 int exfat_set_fat(struct exfat *exfat, clus_t clus, clus_t next_clus)
734 offset = le32_to_cpu(exfat->bs->bsx.fat_offset) <<
735 exfat->bs->bsx.sect_size_bits;
738 if (exfat_write(exfat->blk_dev->dev_fd, &next_clus, sizeof(next_clus),
744 off_t exfat_s2o(struct exfat *exfat, off_t sect)
746 return sect << exfat->bs->bsx.sect_size_bits;
749 off_t exfat_c2o(struct exfat *exfat, unsigned int clus)
754 return exfat_s2o(exfat, le32_to_cpu(exfat->bs->bsx.clu_offset) +
756 exfat->bs->bsx.sect_per_clus_bits));
759 int exfat_o2c(struct exfat *exfat, off_t device_offset,
764 heap_offset = exfat_s2o(exfat, le32_to_cpu(exfat->bs->bsx.clu_offset));
769 exfat->clus_size) + EXFAT_FIRST_CLUSTER;
770 if (!exfat_heap_clus(exfat, *clu))
772 *offset = (device_offset - heap_offset) % exfat->clus_size;
776 bool exfat_heap_clus(struct exfat *exfat, clus_t clus)
779 (clus - EXFAT_FIRST_CLUSTER) < exfat->clus_count;
782 int exfat_root_clus_count(struct exfat *exfat)
784 struct exfat_inode *node = exfat->root;
788 if (!exfat_heap_clus(exfat, node->first_clus))
793 if (exfat_bitmap_get(exfat->alloc_bitmap, clus))
796 exfat_bitmap_set(exfat->alloc_bitmap, clus);
798 if (exfat_get_inode_next_clus(exfat, node, clus, &next)) {
803 if (next != EXFAT_EOF_CLUSTER && !exfat_heap_clus(exfat, next))
810 node->size = clus_count * exfat->clus_size;
831 exfat_err("failed to find exfat file system\n");