]> git.sven.stormbind.net Git - sven/exfatprogs.git/blobdiff - lib/exfat_dir.c
New upstream version 1.2.1
[sven/exfatprogs.git] / lib / exfat_dir.c
index 499b672f34fb977553c464f0dc64f32855df1b55..7c145f4a54978893f03ea6f07e81d001fca14324 100644 (file)
@@ -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");