From 8c6a62c60c366e302e9198bcf5187f317d4e866b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 23 Nov 2004 01:38:02 +0000 Subject: [PATCH] Now implements bfs_write_pages(). Changed some debug stuff. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10195 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/file_systems/bfs/kernel_interface.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index 2144d54ae2..9bd9375b0c 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -183,7 +183,7 @@ bfs_sync(void *_ns) static status_t bfs_read_vnode(void *_ns, vnode_id id, void **_node, bool reenter) { - FUNCTION_START(("vnode_id = %Ld\n", id)); + //FUNCTION_START(("vnode_id = %Ld\n", id)); Volume *volume = (Volume *)_ns; if (id < 0 || id > volume->NumBlocks()) { @@ -348,10 +348,16 @@ bfs_read_pages(fs_volume _fs, fs_vnode _node, fs_cookie _cookie, off_t pos, static status_t -bfs_write_pages(fs_volume _fs, fs_vnode _v, fs_cookie _cookie, off_t pos, +bfs_write_pages(fs_volume _fs, fs_vnode _node, fs_cookie _cookie, off_t pos, const iovec *vecs, size_t count, size_t *_numBytes) { - return EPERM; + Inode *inode = (Inode *)_node; + + if (!inode->HasUserAccessableStream()) + RETURN_ERROR(B_BAD_VALUE); + + ReadLocked locked(inode->Lock()); + return file_cache_write_pages(inode->FileCache(), pos, vecs, count, _numBytes); } @@ -367,7 +373,7 @@ bfs_get_file_map(fs_volume _fs, fs_vnode _node, off_t offset, size_t size, block_run run; off_t fileOffset; - FUNCTION_START(("offset = %Ld, size = %lu\n", offset, size)); + //FUNCTION_START(("offset = %Ld, size = %lu\n", offset, size)); while (true) { status_t status = inode->FindBlockRun(offset, run, fileOffset); @@ -760,7 +766,7 @@ bfs_create(void *_ns, void *_directory, const char *name, int omode, int mode, static status_t bfs_create_symlink(void *_ns, void *_directory, const char *name, const char *path, int mode) { - FUNCTION(); + FUNCTION_START(("name = \"%s\", path = \"%s\"\n", name, path)); if (_ns == NULL || _directory == NULL || path == NULL || name == NULL || *name == '\0')