From 45cd64efd9124013b28ce9c232f4d9c42df6cd56 Mon Sep 17 00:00:00 2001 From: Pawel Dziepak Date: Thu, 16 Aug 2012 01:30:24 +0200 Subject: [PATCH] nfs4: Fix amount of data written when using AIO --- src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp | 4 ++-- src/add-ons/kernel/file_systems/nfs4/WorkQueue.cpp | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp index 921d52a4e6..4d1b943e4e 100644 --- a/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/InodeRegular.cpp @@ -353,8 +353,8 @@ Inode::WriteDirect(OpenStateCookie* cookie, off_t pos, const void* _buffer, while (size < *_length) { uint32 len = *_length - size; - status_t result = WriteFile(cookie, state, pos + size, - &len, buffer + size, attribute); + status_t result = WriteFile(cookie, state, pos + size, &len, + buffer + size, attribute); if (result != B_OK) { if (size == 0) return result; diff --git a/src/add-ons/kernel/file_systems/nfs4/WorkQueue.cpp b/src/add-ons/kernel/file_systems/nfs4/WorkQueue.cpp index 9d387248cf..c576b96896 100644 --- a/src/add-ons/kernel/file_systems/nfs4/WorkQueue.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/WorkQueue.cpp @@ -153,8 +153,10 @@ WorkQueue::JobIO(IORequestArgs* args) uint64 size = 0; status_t result; if (io_request_is_write(args->fRequest)) { - result = read_from_io_request(args->fRequest, buffer, length); + if (offset + length > args->fInode->MaxFileSize()) + length = args->fInode->MaxFileSize() - offset; + result = read_from_io_request(args->fRequest, buffer, length); do { size_t bytesWritten = length - size; result = args->fInode->WriteDirect(NULL, offset + size,