From 3818aa7dac4af166b107553c90bca6acf650739f Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 25 Nov 2009 21:24:45 +0000 Subject: [PATCH] On 64 bit machines the bfs_inode::pad field is too small for a DoublyLinkedListLink. That actually seems to get the bfs_shell working properly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34257 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/Inode.h | 11 +++++++++++ src/add-ons/kernel/file_systems/bfs/bfs.h | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/bfs/Inode.h b/src/add-ons/kernel/file_systems/bfs/Inode.h index b7034a1e82..6ef5ef3159 100644 --- a/src/add-ons/kernel/file_systems/bfs/Inode.h +++ b/src/add-ons/kernel/file_systems/bfs/Inode.h @@ -180,10 +180,17 @@ public: { ASSERT_WRITE_LOCKED_RW_LOCK(&fLock); } #endif +#ifdef B_HAIKU_64_BIT + Link* GetDoublyLinkedListLink() + { return &fListLink; } + const Link* GetDoublyLinkedListLink() const + { return &fListLink; } +#else Link* GetDoublyLinkedListLink() { return (Link*)&fNode.pad[0]; } const Link* GetDoublyLinkedListLink() const { return (Link*)&fNode.pad[0]; } +#endif private: Inode(const Inode& other); @@ -241,6 +248,10 @@ private: // we need those values to ensure we will remove // the correct keys from the indices +#ifdef B_HAIKU_64_BIT + Link fListLink; +#endif + mutable recursive_lock fSmallDataLock; SinglyLinkedList fIterators; }; diff --git a/src/add-ons/kernel/file_systems/bfs/bfs.h b/src/add-ons/kernel/file_systems/bfs/bfs.h index 936ce6f3a2..8fbf4781bc 100644 --- a/src/add-ons/kernel/file_systems/bfs/bfs.h +++ b/src/add-ons/kernel/file_systems/bfs/bfs.h @@ -202,7 +202,8 @@ struct bfs_inode { }; bigtime_t status_change_time; int32 pad[2]; - // we use this member as a doubly linked list link + // on 32 bit architectures we use this member as a doubly linked list + // link small_data small_data_start[0];