#include <errno.h>
#include <string.h>
-#define BMAP_GET(bitmap, index) ((bitmap)[(index) / 8] & (1u << ((index) % 8)))
-#define BMAP_SET(bitmap, index) (bitmap)[(index) / 8] |= (1u << ((index) % 8))
-#define BMAP_CLR(bitmap, index) (bitmap)[(index) / 8] &= ~(1u << ((index) % 8))
-
/*
* Block to absolute offset.
*/
cluster_t current, cluster_t next)
{
off_t fat_offset;
+ le32_t next_le32;
if (contiguous)
return;
fat_offset = b2o(ef, le32_to_cpu(ef->sb->fat_block_start))
+ current * sizeof(cluster_t);
- exfat_write_raw(&next, sizeof(next), fat_offset, ef->fd);
+ next_le32 = cpu_to_le32(next);
+ exfat_write_raw(&next_le32, sizeof(next_le32), fat_offset, ef->fd);
}
static cluster_t allocate_cluster(struct exfat* ef, cluster_t hint)
uint32_t c2 = bytes2clusters(ef, size);
int rc = 0;
+ if (node->references == 0 && node->parent)
+ exfat_bug("no references, node changes can be lost");
+
if (node->size == size)
return 0;
return 0;
}
-uint32_t exfat_count_free_clusters(struct exfat* ef)
+uint32_t exfat_count_free_clusters(const struct exfat* ef)
{
uint32_t free_clusters = 0;
uint32_t i;