From 7f57b05f1dc4c8f355a72d9315ec0dba6e065a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 13 Aug 2008 11:04:51 +0000 Subject: [PATCH] * Temporarily use the private I/O request API to decide whether or not the request is a write request. * This closes bug #2579, thanks BGA for the investigation! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26958 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/Jamfile | 3 +++ src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/bfs/Jamfile b/src/add-ons/kernel/file_systems/bfs/Jamfile index f594463c9f..d10f47a007 100644 --- a/src/add-ons/kernel/file_systems/bfs/Jamfile +++ b/src/add-ons/kernel/file_systems/bfs/Jamfile @@ -28,6 +28,9 @@ UsePrivateKernelHeaders ; UsePrivateHeaders [ FDirName kernel disk_device_manager ] ; UsePrivateHeaders shared storage ; +# TODO: temporary solution as long as there is no public I/O requests API +SubDirHdrs $(HAIKU_TOP) src system kernel device_manager ; + KernelAddon bfs : bfs_disk_system.cpp BlockAllocator.cpp 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 b1a23f1b18..768c6825d1 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -16,6 +16,10 @@ #include "bfs_control.h" #include "bfs_disk_system.h" +// TODO: temporary solution as long as there is no public I/O requests API +#ifndef BFS_SHELL +# include "io_requests.h" +#endif #define BFS_IO_SIZE 65536 @@ -449,8 +453,10 @@ bfs_io(fs_volume* _volume, fs_vnode* _node, void* _cookie, io_request* request) Volume* volume = (Volume*)_volume->private_volume; Inode* inode = (Inode*)_node->private_node; - if (volume->IsReadOnly()) +#ifndef BFS_SHELL + if (request->IsWrite() && volume->IsReadOnly()) return B_READ_ONLY_DEVICE; +#endif if (inode->FileCache() == NULL) RETURN_ERROR(B_BAD_VALUE);