#
87d5beae |
|
09-Mar-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Made the duplicate_array endian safe. Cleanup. * Renamed the sorted_array to duplicate_array (which was only a typedef before), and moved it into the BPlusTree.cpp file, as its specific to that one. * Utilities.cpp is no longer needed. * Introduced endian safe getters/setters so that little endian BFS volumes should now work fine on a big endian architecture.
|
#
361f5cdf |
|
12-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Build fix for the boot loader (it's now using the new utility functions as well). Sorry! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33560 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
16a821d9 |
|
12-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Inode::FindBlockRun() now checks the block run size of double indirect runs, and stops processing if it finds something wrong. * The default indirect/double array size differs from BeOS' BFS. I've changed the size for double indirect arrays only, since the other size should work either way (not tested yet, this change has a negative effect on the maximum file size, but improves BeOS compatibility). * The read/write path of BFS is now double indirect block size agnostic, and should work with what it finds. * Merged all double indirect size computation into some utility inline functions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33551 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
71e439ea |
|
26-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Moved most utility functions from bfs.h to Utility.h. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31770 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
450a9b8e |
|
26-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* AllocateBlocks() now guarantees that the returned allocation size is a multiple of "minimum". git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31768 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
35a16d8f |
|
18-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Moved the inode_types into Utilities.h. * Added a S_EXTENDED_TYPES constant to simplify some checks. * Simplified the fAllowDuplicates computation in BPlusTree::SetTo(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27625 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
02c8f6c8 |
|
02-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Coding style cleanups, no functional changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26728 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2accd07b |
|
01-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced Chain with the new SinglyLinkedList. * Renamed openModeToAccess() to open_mode_to_access(). * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26718 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2e3477e3 |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the inode write locking to be held as long as the transaction is running - this fixes several cases where someone could see outdated data when a transaction had to be reverted (the time between unlocking the inode and actually reverting the blocks). For that, Inodes can now be put into a singly linked list. * Added a TODO in Inode::WriteAt() which explains why it cannot use the above method: seems that our VFS/VM locking model isn't really that good. * Fixed a possible deadlock in Attribute::_Truncate() where the inode write lock was held before starting the transaction. * Added an InodeReadLocker convenience class, that should be used instead of ReadLocker - Inode::Lock() only still exists because of the needs of bfs_io(). * Moved the bfs_io() callback hooks out of the exported module API region, and removed their bfs_ prefix. * Added a Volume::IsInitializing() method that should be used rather than checking if Volume::ID() is >= 0. * Removed the MultiInodeLocker again, as it's pretty much superfluous now. * Moved openModeToAccess() to the Utility.h header. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26715 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a9ae9781 |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed no longer needed IOCTL_FILE_UNCACHED_IO definition. * Some cleanup, no functional change. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26706 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9083840f |
|
20-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
bonefish + mmlr + axeld: * Fixed a bug that could easily corrupt your disks (yeah, one of those again): bfs_get_file_map() truncated the last vec incorrectly and would potentially return a too large file size -- which was later happily overwritten with file data, but could have belonged to anything but that file (like inodes, B+trees, etc.). * Renamed previous round_up() function to key_align(). * Added round_up() template function, and used it where appropriate. * The latter actually fixed two bugs where the and mask was computed in 32 bit where it should have been in 64 bit. * Inode::FindBlockRun() should have checked the max indirect size instead of the direct size - this didn't cause any problems, though. * White space cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26531 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae16ab9d |
|
19-Jan-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* When I ported over BFS to the new FS API, I pretty much toasted the logging code: - The vec array to contain the block list and the index block was one entry to small. - But that didn't really matter, as RunArrays/run_array was broken and never put anything into the log; we only ever wrote index headers. BFS would totally screw up the disk when trying to replay the log (even though the replay code itself was and is working fine). - If a log entry ended at the end of the log area, BFS could overwrite the first block after the log with the next entry. * run_array now adopt the sorting stuff from the sorted_array. Blocks in the log are now always sorted. * Added TODO item to sorted_array as it's not endian safe (will only work correctly when BFS is used in the native endian). * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23638 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c391f84b |
|
26-Apr-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Prepared the BFS sources to be used with the new FS shell: - Moved all inclusions of system headers into a new system_dependencies.h header, which conditionally either includes these or the FS shell headers. - Fixed compiler warnings related to printf-like functions (int32 is int, not long on non-BeOS platforms). * Build a new bfs_shell. Compiles and links, but does nothing ATM. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20860 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0bf62ebe |
|
18-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
The BlockArray class is now longer used, and strlcpy() is part of the Haiku kernel anyway. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c0614f32 |
|
30-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Ported r13366 back from the R5 BFS to the Haiku BFS: fixed bad bug in the journaling code, the super block log data could have been wrong. Moved the doubly linked list code to the kernel's util/DoublyLinkedList.h. Also removed Journal::fCurrent, as it's not really used. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0ddccfdc |
|
12-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
We now have atomic_test_and_set() and atomic_set() in the kernel directly. Removed Metrowerks support. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10403 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a49a098 |
|
07-Nov-2003 |
Nathan Whitehorn <nwhitehorn@nowhere.fake> |
Bunches of changes to make mwcc like the code. I also coded an _atomic_set() and _atomic_test_and_set() for PowerPC. Of course, there's already one in the kernel tree, but mine's better. :P Now builds (and works, after a fashion) on R5 PowerPC. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5280 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
161915fd |
|
01-Sep-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Resolved the name clashing caused by the introduction of atomic_set() and atomic_test_and_set() to the OpenBeOS headers (prefixed BFS versions with '_'). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4446 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0f374ebc |
|
25-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added a strlcpy() call for usage in BeOS (OpenBeOS has it built-in already). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2081 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0c9a17ce |
|
17-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added a simple (and completely non-reliable) C implementation for atomic_set(), and atomic_test_and_set() for userland testing purposes. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1987 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fb39a31c |
|
09-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a dead-lock that could happen if an attribute was changed and you had some running live queries. SimpleLock now allows nesting; added some missing atomic operations to make its implementation as easy as possible. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1901 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c42ee134 |
|
07-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Initial revision git-svn-id: file:///srv/svn/repos/haiku/trunk/current@639 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
87d5beae86a208ed47523046cf7f28ac717af969 |
|
09-Mar-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Made the duplicate_array endian safe. Cleanup. * Renamed the sorted_array to duplicate_array (which was only a typedef before), and moved it into the BPlusTree.cpp file, as its specific to that one. * Utilities.cpp is no longer needed. * Introduced endian safe getters/setters so that little endian BFS volumes should now work fine on a big endian architecture.
|
#
361f5cdfaf9ab08c6a4fff6da7bc964846850984 |
|
12-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Build fix for the boot loader (it's now using the new utility functions as well). Sorry! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33560 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
16a821d9685a8f25b8eb1f628474987ee6848fa6 |
|
12-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Inode::FindBlockRun() now checks the block run size of double indirect runs, and stops processing if it finds something wrong. * The default indirect/double array size differs from BeOS' BFS. I've changed the size for double indirect arrays only, since the other size should work either way (not tested yet, this change has a negative effect on the maximum file size, but improves BeOS compatibility). * The read/write path of BFS is now double indirect block size agnostic, and should work with what it finds. * Merged all double indirect size computation into some utility inline functions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33551 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
71e439ea3e4ec83d47d5cdd73fab5a2e5d618fc3 |
|
26-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Moved most utility functions from bfs.h to Utility.h. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31770 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
450a9b8e7e5eb95bbdd3125983138b7e8d0c68e1 |
|
26-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* AllocateBlocks() now guarantees that the returned allocation size is a multiple of "minimum". git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31768 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
35a16d8f5e035b37cf8dc6a242cadf54b23eb142 |
|
18-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Moved the inode_types into Utilities.h. * Added a S_EXTENDED_TYPES constant to simplify some checks. * Simplified the fAllowDuplicates computation in BPlusTree::SetTo(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27625 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
02c8f6c89d13b94c5507012eaadddc79982c976f |
|
02-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Coding style cleanups, no functional changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26728 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2accd07be4d2731332674ebf8d801260b5388130 |
|
01-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced Chain with the new SinglyLinkedList. * Renamed openModeToAccess() to open_mode_to_access(). * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26718 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2e3477e3d851cc46fa682712c3f73dbb82d64fd9 |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the inode write locking to be held as long as the transaction is running - this fixes several cases where someone could see outdated data when a transaction had to be reverted (the time between unlocking the inode and actually reverting the blocks). For that, Inodes can now be put into a singly linked list. * Added a TODO in Inode::WriteAt() which explains why it cannot use the above method: seems that our VFS/VM locking model isn't really that good. * Fixed a possible deadlock in Attribute::_Truncate() where the inode write lock was held before starting the transaction. * Added an InodeReadLocker convenience class, that should be used instead of ReadLocker - Inode::Lock() only still exists because of the needs of bfs_io(). * Moved the bfs_io() callback hooks out of the exported module API region, and removed their bfs_ prefix. * Added a Volume::IsInitializing() method that should be used rather than checking if Volume::ID() is >= 0. * Removed the MultiInodeLocker again, as it's pretty much superfluous now. * Moved openModeToAccess() to the Utility.h header. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26715 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a9ae9781ea50bb0a342887e6a7aa25a7d0ec4637 |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed no longer needed IOCTL_FILE_UNCACHED_IO definition. * Some cleanup, no functional change. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26706 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9083840f3462752eeba06158182a11a1e86c7aac |
|
20-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
bonefish + mmlr + axeld: * Fixed a bug that could easily corrupt your disks (yeah, one of those again): bfs_get_file_map() truncated the last vec incorrectly and would potentially return a too large file size -- which was later happily overwritten with file data, but could have belonged to anything but that file (like inodes, B+trees, etc.). * Renamed previous round_up() function to key_align(). * Added round_up() template function, and used it where appropriate. * The latter actually fixed two bugs where the and mask was computed in 32 bit where it should have been in 64 bit. * Inode::FindBlockRun() should have checked the max indirect size instead of the direct size - this didn't cause any problems, though. * White space cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26531 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae16ab9d0f8bfc6f23f755a4d57468a567ae4c29 |
|
19-Jan-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* When I ported over BFS to the new FS API, I pretty much toasted the logging code: - The vec array to contain the block list and the index block was one entry to small. - But that didn't really matter, as RunArrays/run_array was broken and never put anything into the log; we only ever wrote index headers. BFS would totally screw up the disk when trying to replay the log (even though the replay code itself was and is working fine). - If a log entry ended at the end of the log area, BFS could overwrite the first block after the log with the next entry. * run_array now adopt the sorting stuff from the sorted_array. Blocks in the log are now always sorted. * Added TODO item to sorted_array as it's not endian safe (will only work correctly when BFS is used in the native endian). * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23638 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c391f84b2c732398288276bc8354ac4060dc5a4d |
|
26-Apr-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Prepared the BFS sources to be used with the new FS shell: - Moved all inclusions of system headers into a new system_dependencies.h header, which conditionally either includes these or the FS shell headers. - Fixed compiler warnings related to printf-like functions (int32 is int, not long on non-BeOS platforms). * Build a new bfs_shell. Compiles and links, but does nothing ATM. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20860 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0bf62ebeceb89b1d5c611ff91ba06c2756cc8ca7 |
|
18-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
The BlockArray class is now longer used, and strlcpy() is part of the Haiku kernel anyway. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c0614f3291ad73663b85a1837fecbf24915bfa06 |
|
30-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Ported r13366 back from the R5 BFS to the Haiku BFS: fixed bad bug in the journaling code, the super block log data could have been wrong. Moved the doubly linked list code to the kernel's util/DoublyLinkedList.h. Also removed Journal::fCurrent, as it's not really used. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0ddccfdc7a99d84be9278244090d31f115d21a9d |
|
12-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
We now have atomic_test_and_set() and atomic_set() in the kernel directly. Removed Metrowerks support. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10403 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a49a0986bd50ef30d406b4f5001a0784d344015 |
|
07-Nov-2003 |
Nathan Whitehorn <nwhitehorn@nowhere.fake> |
Bunches of changes to make mwcc like the code. I also coded an _atomic_set() and _atomic_test_and_set() for PowerPC. Of course, there's already one in the kernel tree, but mine's better. :P Now builds (and works, after a fashion) on R5 PowerPC. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5280 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
161915fd91d9196887be2a32095f3c60515728a2 |
|
01-Sep-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Resolved the name clashing caused by the introduction of atomic_set() and atomic_test_and_set() to the OpenBeOS headers (prefixed BFS versions with '_'). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4446 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0f374ebc88ed207a2cf649548df99ec34906c7ba |
|
25-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added a strlcpy() call for usage in BeOS (OpenBeOS has it built-in already). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2081 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0c9a17ce0893f95a8a830d83f4fc5f21c6a08bc0 |
|
17-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added a simple (and completely non-reliable) C implementation for atomic_set(), and atomic_test_and_set() for userland testing purposes. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1987 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fb39a31ca77347bc7657f848a764b6a784ee6bf8 |
|
09-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a dead-lock that could happen if an attribute was changed and you had some running live queries. SimpleLock now allows nesting; added some missing atomic operations to make its implementation as easy as possible. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1901 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c42ee13401be80c431846910959d587949a1ad10 |
|
07-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Initial revision git-svn-id: file:///srv/svn/repos/haiku/trunk/current@639 a95241bf-73f2-0310-859d-f6bbb57e9c96
|