* Use vfs_vnode_io() to schedule subrequests instead of calling the FS's

io() hook directly (it might not even have one).
* Fixed incorrect check in synchronous_io() which would cause requests
  with more than one vec to finish early. Fixes bug #2558.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26751 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2008-08-03 01:55:25 +00:00
parent 58306fecd6
commit 5054db1859
+2 -2
View File
@@ -210,7 +210,7 @@ do_iterative_fd_io_iterate(void* _cookie, io_request* request,
if (error == B_OK) {
TRACE_RIO("[%ld] scheduling subrequest: %p\n", find_thread(NULL),
subRequest);
error = FS_CALL(cookie->vnode, io, cookie->descriptor->cookie,
error = vfs_vnode_io(cookie->vnode, cookie->descriptor->cookie,
subRequest);
} else {
// Once scheduling a subrequest failed, we cancel all subsequent
@@ -335,7 +335,7 @@ synchronous_io(io_request* request, DoIO& io)
offset += transferred;
length -= transferred;
if (transferred != length)
if (transferred != vecLength)
break;
}