From 61cdc02db055e82d30e6f1c6b3b274a19274ed7c Mon Sep 17 00:00:00 2001 From: bigbiff bigbiff Date: Thu, 8 Aug 2013 08:35:06 -0400 Subject: update exfat to latest commits for io issues --- exfat/exfat-fuse/main.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'exfat/exfat-fuse/main.c') diff --git a/exfat/exfat-fuse/main.c b/exfat/exfat-fuse/main.c index 53ce2feb5..abb60e7df 100644 --- a/exfat/exfat-fuse/main.c +++ b/exfat/exfat-fuse/main.c @@ -2,11 +2,12 @@ main.c (01.09.09) FUSE-based exFAT implementation. Requires FUSE 2.6 or later. + Free exFAT implementation. Copyright (C) 2010-2013 Andrew Nayenko - This program is free software: you can redistribute it and/or modify + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or + the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -14,8 +15,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define FUSE_USE_VERSION 26 @@ -152,6 +154,21 @@ static int fuse_exfat_release(const char* path, struct fuse_file_info* fi) return 0; } +static int fuse_exfat_fsync(const char* path, int datasync, + struct fuse_file_info *fi) +{ + int rc; + + exfat_debug("[%s] %s", __func__, path); + rc = exfat_flush_node(&ef, get_node(fi)); + if (rc != 0) + return rc; + rc = exfat_flush(&ef); + if (rc != 0) + return rc; + return exfat_fsync(ef.dev); +} + static int fuse_exfat_read(const char* path, char* buffer, size_t size, off64_t offset, struct fuse_file_info* fi) { @@ -313,6 +330,8 @@ static struct fuse_operations fuse_exfat_ops = .readdir = fuse_exfat_readdir, .open = fuse_exfat_open, .release = fuse_exfat_release, + .fsync = fuse_exfat_fsync, + .fsyncdir = fuse_exfat_fsync, .read = fuse_exfat_read, .write = fuse_exfat_write, .unlink = fuse_exfat_unlink, -- cgit v1.2.3