Commit 918dfe08 authored by sevenuz's avatar sevenuz Committed by Julius Athenstaedt
Browse files

fix read and write for large sizes

parent 9080ba8b
Loading
Loading
Loading
Loading
+7 −19
Original line number Diff line number Diff line
@@ -273,14 +273,10 @@ read_handler(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
        return;
    }
    std::vector<char> buf(size);
    int lc = gkfs::syscall::gkfs_lseek(fi->fh, off, SEEK_SET);
    if(lc < 0) {
        fuse_reply_err(req, 1);
        return;
    }
    int rc = gkfs::syscall::gkfs_read(fi->fh, buf.data(), size);
    int rc = gkfs::syscall::gkfs_pread(fi->fh, buf.data(), size, off);
    if(rc < 0) {
        fuse_reply_err(req, 1);
        fuse_log(FUSE_LOG_DEBUG, "read fail \n");
        fuse_reply_err(req, errno);
        return;
    }
    fuse_reply_buf(req, buf.data(), rc);
@@ -295,18 +291,10 @@ write_handler(fuse_req_t req, fuse_ino_t ino, const char* buf, size_t size,
        fuse_reply_err(req, ENOENT);
        return;
    }
    int lc = gkfs::syscall::gkfs_lseek(fi->fh, off, SEEK_SET);
    if(lc < 0) {
        fuse_reply_err(req, 1);
        return;
    }
    int rc = gkfs::syscall::gkfs_write(fi->fh, buf, size);
    if(rc < 0) {
        fuse_reply_err(req, 1);
        return;
    }
    int rc = gkfs::syscall::gkfs_pwrite(fi->fh, buf, size, off);
    if(rc < 0) {
        fuse_reply_err(req, 1);
        fuse_log(FUSE_LOG_DEBUG, "write fail \n");
        fuse_reply_err(req, errno);
        return;
    }
    fuse_reply_write(req, rc);
@@ -1021,5 +1009,5 @@ main(int argc, char* argv[]) {
    }

    fuse_session_unmount(se);
    return ret ? 1 : 0;
    return ret < 0 ? 1 : 0;
}