- exfat_debug("[fuse_exfat_write] %s (%zu bytes)", path, size);
- return exfat_write(&ef, get_node(fi), buffer, size, offset);
+ int rc;
+
+ exfat_debug("[%s] %s", __func__, path);
+ rc = exfat_flush_nodes(&ef);
+ if (rc != 0)
+ return rc;
+ rc = exfat_flush(&ef);
+ if (rc != 0)
+ return rc;
+ return exfat_fsync(ef.dev);
+}
+
+static int fuse_exfat_read(UNUSED const char* path, char* buffer,
+ size_t size, off_t offset, struct fuse_file_info* fi)
+{
+ exfat_debug("[%s] %s (%zu bytes)", __func__, path, size);
+ return exfat_generic_pread(&ef, get_node(fi), buffer, size, offset);
+}
+
+static int fuse_exfat_write(UNUSED const char* path, const char* buffer,
+ size_t size, off_t offset, struct fuse_file_info* fi)
+{
+ exfat_debug("[%s] %s (%zu bytes)", __func__, path, size);
+ return exfat_generic_pwrite(&ef, get_node(fi), buffer, size, offset);