From 607254f510abd4700520f9a523c114726aa5d2ca Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Thu, 28 May 2009 15:32:42 +0000 Subject: [PATCH] We don't want to use the OVERLAY_CALL macro for can_page() as it returns a bool and not a status_t. In case of virtual files it would have wrongly returned B_UNSUPPORTED, resulting in true instead of false. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30895 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../layers/write_overlay/write_overlay.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp index 5bc3bbe23b..5b89ea590c 100644 --- a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp +++ b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp @@ -993,7 +993,17 @@ overlay_get_vnode_name(fs_volume *volume, fs_vnode *vnode, char *buffer, static bool overlay_can_page(fs_volume *volume, fs_vnode *vnode, void *cookie) { - OVERLAY_CALL(can_page, cookie) + TRACE("relaying op: can_page\n"); + OverlayInode *node = (OverlayInode *)vnode->private_node; + if (node->IsVirtual()) + return false; + + fs_vnode *superVnode = node->SuperVnode(); + if (superVnode->ops->can_page != NULL) { + return superVnode->ops->can_page(volume->super_volume, superVnode, + cookie); + } + return false; }