From 7a253cf5fe18658b881d2ad5da965dfb3d2c3bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 20 Aug 2008 20:22:06 +0000 Subject: [PATCH] * Since the file cache can access any kind of data (and not just file data), we must use {read|write}_pages() instead of {read|write}(). * This should fix accessing other file systems than BFS (ie. those that doesn't have an io() function) like ext3 and FAT. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27088 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/fs/vfs_request_io.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/system/kernel/fs/vfs_request_io.cpp b/src/system/kernel/fs/vfs_request_io.cpp index 3074f3c475..9d9586d3f4 100644 --- a/src/system/kernel/fs/vfs_request_io.cpp +++ b/src/system/kernel/fs/vfs_request_io.cpp @@ -166,10 +166,16 @@ public: protected: virtual status_t InternalIO(off_t offset, void* buffer, size_t* length) { - if (fWrite) - return FS_CALL(fVnode, write, fCookie, offset, buffer, length); + iovec vec; + vec.iov_base = buffer; + vec.iov_len = *length; - return FS_CALL(fVnode, read, fCookie, offset, buffer, length); + if (fWrite) { + return FS_CALL(fVnode, write_pages, fCookie, offset, &vec, 1, + length); + } + + return FS_CALL(fVnode, read_pages, fCookie, offset, &vec, 1, length); } private: