* 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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user