X-Git-Url: https://git.sven.stormbind.net/?p=sven%2Fexfatprogs.git;a=blobdiff_plain;f=lib%2Fexfat_dir.c;fp=lib%2Fexfat_dir.c;h=7c145f4a54978893f03ea6f07e81d001fca14324;hp=499b672f34fb977553c464f0dc64f32855df1b55;hb=0a7a8b470671035ad0c2d8dc0d7714d06921273d;hpb=03290761e3849db9b13d2d3b176b36ab31c395bb diff --git a/lib/exfat_dir.c b/lib/exfat_dir.c index 499b672..7c145f4 100644 --- a/lib/exfat_dir.c +++ b/lib/exfat_dir.c @@ -35,10 +35,11 @@ static ssize_t write_block(struct exfat_de_iter *iter, unsigned int block) unsigned int i; desc = &iter->buffer_desc[block & 0x01]; - device_offset = exfat_c2o(exfat, desc->p_clus) + desc->offset; for (i = 0; i < iter->read_size / iter->write_size; i++) { if (desc->dirty[i]) { + device_offset = exfat_c2o(exfat, desc->p_clus) + + desc->offset; if (exfat_write(exfat->blk_dev->dev_fd, desc->buffer + i * iter->write_size, iter->write_size, @@ -677,7 +678,7 @@ int exfat_update_file_dentry_set(struct exfat *exfat, return 0; } -static int find_free_cluster(struct exfat *exfat, +int exfat_find_free_cluster(struct exfat *exfat, clus_t start, clus_t *new_clu) { clus_t end = le32_to_cpu(exfat->bs->bsx.clu_count) + @@ -804,7 +805,7 @@ static int exfat_alloc_cluster(struct exfat *exfat, struct exfat_inode *inode, if ((need_dset && !inode->dentry_set) || inode->is_contiguous) return -EINVAL; - err = find_free_cluster(exfat, exfat->start_clu, new_clu); + err = exfat_find_free_cluster(exfat, exfat->start_clu, new_clu); if (err) { exfat->start_clu = EXFAT_FIRST_CLUSTER; exfat_err("failed to find an free cluster\n");