History log of /haiku/src/add-ons/kernel/file_systems/bfs/Jamfile
Revision Date Author Comments
# 88255e08 26-Oct-2018 François Revol <revol@free.fr>

BFS: Add support for building big-endian BFS

I tried to use the feature stuff to relocate objects but didn't managed
to get it to work, having another subdir seems to be the simplest
solution.

I managed to mount a clone of my BeBox' drive, but it KDLed shortly when mouting
read-write.

Change-Id: Ia4f126673e553e4f3e524a40218e6c623527b96d
Reviewed-on: https://review.haiku-os.org/c/645
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# aa775038 05-Jul-2012 ahenriksson <sausageboy@gmail.com>

bfs: split checkfs code into FileSystemVisitor and CheckVisitor

Another FileSystemVisitor implementation will be used for resizing

Change-Id: I2d5f47dcbefb4c76834487b194a99c6f5ae7de50
Reviewed-on: https://review.haiku-os.org/c/923
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# a558d185 22-Jun-2015 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert "filesystems: we aren't BeOS, so we can safely use -O2(+)."

This reverts commit ae495ca8fe9e48dea982cf522c5c54c56dffb9fd.

My system volume was mysteriously corrupted while booting or shutting down today,
enough to make it unbootable and KDL on attempt to mount it. I'm assuming our gcc2
still isn't safe with regard to -O2 optimization of filesystems, and revert this,
until proven wrong (eg. by running test suites and FS stress tests and finding no
issues.

Axel comented on the commit saying it probably was not a good idea, but no action was
taken. Should we setup a better commit review system?


# ae495ca8 08-May-2015 Augustin Cavalier <waddlesplash@gmail.com>

filesystems: we aren't BeOS, so we can safely use -O2(+).


# de9c0613 03-Jul-2014 Axel Dörfler <axeld@pinc-software.de>

bfs: Use the QueryParserUtils instead of its own copy.

* Ingo copied the methods into a shared location, and then obviously
"forgot" to let BFS use them. As a side note for Ingo: the complete
error GCC reported was "std::fssh_size_t" not defined with the macro
wrapper as code location. The actual problem was a "using std::size_t"
in some C++ header that accidentally got included after the wrapper.
* The shared Query code is not yet used. That'll be done another time.
* Renamed BFS_SHELL define to FS_SHELL, such that QueryParserUtils can be
used in any file system shell, not just the bfs_shell.


# 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.


# 08e6655a 05-Nov-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by kaliber (ticket #6333): Removed many instances of
passing an additional -Wall to the compiler, which may actually
have unwanted effects. -Wall is standard by the build system.
Also, -Wno-multichar was passed unnecessarily for Haiku targets.
I didn't remove it for the bfs_shell, hope this is what Ingo meant
in the ticket.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39314 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 98697fac 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

The private IORequest.h header isn't used anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29461 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7f57b05f 13-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* 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


# 03fa417b 07-Jul-2008 Axel Dörfler <axeld@pinc-software.de>

* Removed the home-brewn locking classes in BFS besides the read/write lock
(for now).
* Inode::fSmallDataLock is now a recursive_lock, Journal::fLock is now
a recursive_lock, too, Journal::fEntriesLock is now a mutex, as is
BPlusTree::fIteratorLock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26298 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 370fc8c9 09-May-2008 Stephan Aßmus <superstippi@gmx.de>

Fix the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25397 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8e8edffc 29-Apr-2008 Axel Dörfler <axeld@pinc-software.de>

* Fixed at least the "dd" part of bug #2148: the second double indirect array
block would be incorrectly addressed when allocating a stream - this could
cause random blocks to be overwritten, and therefore could cause many sorts
of problems.
* Moved BFS_TRACING macro to the tracing_config.h file, and let it follow the
new semantics of those other macros in there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25249 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c59c68c5 19-Jan-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Build with RTTI. Needed for soon to come tracing feature (well, we could
also move the thread ID from AbstractTraceEntry to TraceEntry).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23657 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7477802 12-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Made the additions of the KDL debugger commands independant from the
DEBUG macro; they are now added only if BFS_DEBUGGER_COMMANDS is
defined (which is now done by default in the Jamfile).
* Added "bfs" KDL command which dumps volume information and the super
block.
* Made use of the new tracing API to trace block and inode actions
(and the new AbstractTraceEntry class I forgot to mention in the last
commit). Is compiled in only when BFS_TRACING is enabled (defaults to
off in the standard builds).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23464 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 57225f03 10-Nov-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Moved helper function to check initialization parameters to separate
source file. Added function to check the volume name.
* Removed bfs_validate_initialize(). This functionality is to be implemented
in a userland add-on.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22871 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5682fde4 26-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

OPTIM is reset for each subdir anyway. No need to do that manually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20433 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fc317af2 23-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

Writing to attributes was deadlock prone; the BFS volume lock was acquired with
the BFS Journal lock held.
Since our get_vnode() is no longer unsafe (unlike Be's version of it), we can
get rid of the UNSAFE_GET_VNODE stuff, which also solves this bug.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19916 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c49e0c68 18-Sep-2006 Jérôme Duval <korli@users.berlios.de>

dropped a useless arg of the KernelAddon rule, hope I don't mess anything


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18879 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 338b8dc3 29-Oct-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Merged changes from branch build_system_redesign at revision 14573.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 47f39c93 23-May-2005 Axel Dörfler <axeld@pinc-software.de>

Merged the disk device manager module interface for file systems with the
VFS's interface, so that a file system only has to implement one interface.
As a side effect, the automatic file system detection may now work (not yet
tested, though).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12786 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 900849fa 13-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Since objects/.../system/kernel is now a directory, the kernel target is now
called kernel_${arch} like on disk. A "jam kernel" will still work, though.
Also updated all those Jamfiles I forgot to update before.
Since makehdimage now runs through (and even builds a working image), I guess
most of the consequences of the "kernel/core" -> "system/kernel" rename task
are solved.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12364 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d48f7182 07-Dec-2004 Axel Dörfler <axeld@pinc-software.de>

Enabled full attribute support under the Haiku kernel.
It's not as clean as it could, but it works for now.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10377 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fb02804a 19-Nov-2004 Axel Dörfler <axeld@pinc-software.de>

Big update while moving over completely to the Haiku kernel:
- Ported over BFS to the new cache API
- Inode no longer inherits from CachedBlock, and therefore, no longer
keeps the whole inode block in memory. It now has a copy of the bfs_inode
structure in memory instead. This has a number of advantages but also some
disadvantages, so it might be reverted later, even if it's unlikely.
- Added a NodeGetter class that can be used whenever the real block needs
to be accessed (ie. for attributes)
- Changed *transaction to &transaction where possible
- Removed support for KEEP_WRONG_DIRENT_RECLEN
- Removed support for uncached file access since that's no longer needed
- Fixed some endian issues in bfs_write_stat()
- Removed the install BFS rules, since they don't make any sense anymore
(unless you are running Haiku ;-))

Note, logged streams are not supported anymore right now. Also, the
transaction code is pretty simple and slow - it will be improved later
on. Attribute code is pretty much untested in the new environment.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10053 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f4b08fea 03-Nov-2004 Axel Dörfler <axeld@pinc-software.de>

This fixes the build of the R5 version.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9779 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec3d3e05 25-Oct-2004 Axel Dörfler <axeld@pinc-software.de>

Implemented the Disk Device Manager Scanning API. It's currently exported
as a separate module, but might be merged with the standard FS API.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9504 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a4e05e61 06-Sep-2004 Axel Dörfler <axeld@pinc-software.de>

Added a "cookie" parameter to the fs_read|write|has_page[s]().
Implemented bfs_get_file_map().
Now uses the brand new file cache for the file data streams.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8877 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b89e0b3 07-Jun-2004 Axel Dörfler <axeld@pinc-software.de>

Now builds two file systems: "bfs" is now the file system for the new kernel,
while "bfs_r5" or "obfs_r5" is the one for the R5/Zeta kernel.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c697a0f4 05-May-2004 Axel Dörfler <axeld@pinc-software.de>

When you now set COMPILE_FOR_ZETA=1 on the command line when jamming, the
api version will be set to 3 as required for Dano/Zeta - apparently, the
previous mechanism doesn't work with our headers, as we don't define
B_BEOS_VERSION_DANO at all :)
Fixed the build again (because of the stdio switch).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7428 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e936bb7 04-May-2004 Bruno G. Albuquerque <bga@bug-br.org.br>

Now when BFS_REPLACEMENT is set, the name used for the add-on is "bfs" instead
of "obfs" (thanks Ingo). Also, changed the destination directory. It was formelly
"beos/system/add-ons/kernel/file_systems/bfs/" and now it is
"beos/system/add-ons/kernel/file_systems/" (as it should be).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7411 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b1e75231 03-May-2004 Bruno G. Albuquerque <bga@bug-br.org.br>

Ops! :)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7404 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e4758ac3 03-May-2004 Bruno G. Albuquerque <bga@bug-br.org.br>

Added BFS_REPLACEMENT define that will enable compiling OpenBFS as as full
BFS replacement (will report itself as "bfs" instead of "obfs". Is there a
way to change the add-on name based on the same define?


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7403 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 36660c5e 29-Jan-2004 Axel Dörfler <axeld@pinc-software.de>

Switched from direct get_vnode() usage to the Vnode class.
Now acquires the volume lock always before get_vnode() is called as long
as UNSAFE_GET_VNODE is defined (which now is by default).
May cause some unwanted side-effects; it still has to be thorougly tested.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6424 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54343bbc 25-Jan-2004 Axel Dörfler <axeld@pinc-software.de>

Switched to kernel_cpp.h/cpp.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6291 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb94280c 16-Sep-2003 Axel Dörfler <axeld@pinc-software.de>

The file system is now almost endian-aware.
Used lazy unreadable conversion: ==, !=, == 0, != 0 are endian-safe
and don't need byte swapping.
If the platform endian differs from the one selected at compile time,
it will mount all volumes read-only for now.
Uncomment BFS_BIG_ENDIAN_ONLY in the Jamfile to build the big endian
version under x86.
No matter on what platform, the compilation defaults to build BFS as
little endian file system (see bfs_endian.h for details).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c1b7aba3 26-Aug-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Changes reflecting the change of semantics of the DEBUG variable.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4383 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d62fee51 25-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

The global OPTIM variable is now reset at the end of the file.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2846 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5d600858 24-Feb-2003 Axel Dörfler <axeld@pinc-software.de>

Now compiles with -Wall (why aren't we using that as default anyway?)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2835 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7ab95d9d 21-Oct-2002 Axel Dörfler <axeld@pinc-software.de>

Made it easier to switch from R5 compilation to the test "obfs" compilation.
$ COMPILE_FOR_R5=1 jam
will compile the "bfs" version, otherwise the "obfs" version is created.
Note: the final executable will always be called obfs (for now).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1591 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f1e38490 08-Sep-2002 Axel Dörfler <axeld@pinc-software.de>

If debugging is disabled and the "release build" of BFS is done, optimization
is no only "-O1", since gcc obviously produces bad code if compiled with more.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@996 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ba04be1d 19-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed the dirent.d_reclen calculation - define KEEP_WRONG_DIRENT_RECLEN to
enable the old and compatible behaviour (on BeOS R5, all available file
systems seem to do that wrong).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ba5530fd 13-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Now only "jam install" triggers the installation of bfs (in this directory only).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@756 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a1faae7 13-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed the build process of bfs; -g and -O2 don't mix well together...
To enable debug output, type:
$ DEBUG=1 jam
Also, it's now automatically installed in /boot/home/config/add-ons/kernel/file_systems


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@751 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40f7fd6c 07-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Implemented the basics to allow uncached file access under BeOS.
This is needed for the VM swap file and if you want to mount disk images
located on the BFS volume.
There is now a BufferPool class that manages a pool of buffers, so that
Inode::ReadAt()/Inode::WriteAt() can access a file without having to use
the cache or malloc()/free().
The real uncached file access is not yet implemented, though.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@643 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


# a558d185272e619fc8f2c75e3eca9f3161a6b45b 22-Jun-2015 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert "filesystems: we aren't BeOS, so we can safely use -O2(+)."

This reverts commit ae495ca8fe9e48dea982cf522c5c54c56dffb9fd.

My system volume was mysteriously corrupted while booting or shutting down today,
enough to make it unbootable and KDL on attempt to mount it. I'm assuming our gcc2
still isn't safe with regard to -O2 optimization of filesystems, and revert this,
until proven wrong (eg. by running test suites and FS stress tests and finding no
issues.

Axel comented on the commit saying it probably was not a good idea, but no action was
taken. Should we setup a better commit review system?


# ae495ca8fe9e48dea982cf522c5c54c56dffb9fd 08-May-2015 Augustin Cavalier <waddlesplash@gmail.com>

filesystems: we aren't BeOS, so we can safely use -O2(+).


# de9c0613398645390b8d450089051b2888e2e15b 03-Jul-2014 Axel Dörfler <axeld@pinc-software.de>

bfs: Use the QueryParserUtils instead of its own copy.

* Ingo copied the methods into a shared location, and then obviously
"forgot" to let BFS use them. As a side note for Ingo: the complete
error GCC reported was "std::fssh_size_t" not defined with the macro
wrapper as code location. The actual problem was a "using std::size_t"
in some C++ header that accidentally got included after the wrapper.
* The shared Query code is not yet used. That'll be done another time.
* Renamed BFS_SHELL define to FS_SHELL, such that QueryParserUtils can be
used in any file system shell, not just the bfs_shell.


# 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.


# 08e6655afee625a44a411570694d0c2e9a024bbc 05-Nov-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by kaliber (ticket #6333): Removed many instances of
passing an additional -Wall to the compiler, which may actually
have unwanted effects. -Wall is standard by the build system.
Also, -Wno-multichar was passed unnecessarily for Haiku targets.
I didn't remove it for the bfs_shell, hope this is what Ingo meant
in the ticket.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39314 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 98697fac693747bf15a65858a2ec056c7b6bc47b 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

The private IORequest.h header isn't used anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29461 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7f57b05f1dc4c8f355a72d9315ec0dba6e065a41 13-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* 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


# 03fa417b706f63305263982a61eb1002e6ff9d96 07-Jul-2008 Axel Dörfler <axeld@pinc-software.de>

* Removed the home-brewn locking classes in BFS besides the read/write lock
(for now).
* Inode::fSmallDataLock is now a recursive_lock, Journal::fLock is now
a recursive_lock, too, Journal::fEntriesLock is now a mutex, as is
BPlusTree::fIteratorLock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26298 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 370fc8c9077c01945dda6658f220b39fa949f315 09-May-2008 Stephan Aßmus <superstippi@gmx.de>

Fix the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25397 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8e8edffce7fdf16a8ae17b2de36bffa05082114e 29-Apr-2008 Axel Dörfler <axeld@pinc-software.de>

* Fixed at least the "dd" part of bug #2148: the second double indirect array
block would be incorrectly addressed when allocating a stream - this could
cause random blocks to be overwritten, and therefore could cause many sorts
of problems.
* Moved BFS_TRACING macro to the tracing_config.h file, and let it follow the
new semantics of those other macros in there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25249 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c59c68c5e00deb30bf4c382593ce28d9546af0cb 19-Jan-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Build with RTTI. Needed for soon to come tracing feature (well, we could
also move the thread ID from AbstractTraceEntry to TraceEntry).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23657 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7477802b8a5451ce525646fd2d4b13ef449c455 12-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Made the additions of the KDL debugger commands independant from the
DEBUG macro; they are now added only if BFS_DEBUGGER_COMMANDS is
defined (which is now done by default in the Jamfile).
* Added "bfs" KDL command which dumps volume information and the super
block.
* Made use of the new tracing API to trace block and inode actions
(and the new AbstractTraceEntry class I forgot to mention in the last
commit). Is compiled in only when BFS_TRACING is enabled (defaults to
off in the standard builds).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23464 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 57225f0367dd88447cb87714cae045e76b9ec9c0 10-Nov-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Moved helper function to check initialization parameters to separate
source file. Added function to check the volume name.
* Removed bfs_validate_initialize(). This functionality is to be implemented
in a userland add-on.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22871 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5682fde43936a0cfecc2a0d6e6bed6e767daab71 26-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

OPTIM is reset for each subdir anyway. No need to do that manually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20433 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fc317af25e51b2c96c416b3d1fc01e3f0b168595 23-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

Writing to attributes was deadlock prone; the BFS volume lock was acquired with
the BFS Journal lock held.
Since our get_vnode() is no longer unsafe (unlike Be's version of it), we can
get rid of the UNSAFE_GET_VNODE stuff, which also solves this bug.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19916 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c49e0c68b013ebe90a3a48d5e98b5788ba2e6542 18-Sep-2006 Jérôme Duval <korli@users.berlios.de>

dropped a useless arg of the KernelAddon rule, hope I don't mess anything


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18879 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 338b8dc301721b1f472e8297a898d4eaa2f2ee3a 29-Oct-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Merged changes from branch build_system_redesign at revision 14573.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 47f39c93cbd7db06e72642b047f1fc327852684c 23-May-2005 Axel Dörfler <axeld@pinc-software.de>

Merged the disk device manager module interface for file systems with the
VFS's interface, so that a file system only has to implement one interface.
As a side effect, the automatic file system detection may now work (not yet
tested, though).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12786 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 900849fa0dbc41731df2958c4670042786f7afc2 13-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Since objects/.../system/kernel is now a directory, the kernel target is now
called kernel_${arch} like on disk. A "jam kernel" will still work, though.
Also updated all those Jamfiles I forgot to update before.
Since makehdimage now runs through (and even builds a working image), I guess
most of the consequences of the "kernel/core" -> "system/kernel" rename task
are solved.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12364 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d48f7182eb8750dfe386f0d2c3404c99e61b8065 07-Dec-2004 Axel Dörfler <axeld@pinc-software.de>

Enabled full attribute support under the Haiku kernel.
It's not as clean as it could, but it works for now.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10377 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fb02804a89b1100c0f20c3e3c28be28215103c44 19-Nov-2004 Axel Dörfler <axeld@pinc-software.de>

Big update while moving over completely to the Haiku kernel:
- Ported over BFS to the new cache API
- Inode no longer inherits from CachedBlock, and therefore, no longer
keeps the whole inode block in memory. It now has a copy of the bfs_inode
structure in memory instead. This has a number of advantages but also some
disadvantages, so it might be reverted later, even if it's unlikely.
- Added a NodeGetter class that can be used whenever the real block needs
to be accessed (ie. for attributes)
- Changed *transaction to &transaction where possible
- Removed support for KEEP_WRONG_DIRENT_RECLEN
- Removed support for uncached file access since that's no longer needed
- Fixed some endian issues in bfs_write_stat()
- Removed the install BFS rules, since they don't make any sense anymore
(unless you are running Haiku ;-))

Note, logged streams are not supported anymore right now. Also, the
transaction code is pretty simple and slow - it will be improved later
on. Attribute code is pretty much untested in the new environment.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10053 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f4b08feaac433b177025b50aebd5d32503a0db1e 03-Nov-2004 Axel Dörfler <axeld@pinc-software.de>

This fixes the build of the R5 version.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9779 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec3d3e05fe484c061ea1fe1b4aa59d8f679b66cd 25-Oct-2004 Axel Dörfler <axeld@pinc-software.de>

Implemented the Disk Device Manager Scanning API. It's currently exported
as a separate module, but might be merged with the standard FS API.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9504 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a4e05e618a467d1af0433cde51683a33580ce6cc 06-Sep-2004 Axel Dörfler <axeld@pinc-software.de>

Added a "cookie" parameter to the fs_read|write|has_page[s]().
Implemented bfs_get_file_map().
Now uses the brand new file cache for the file data streams.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8877 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b89e0b32f14a2d83f656db26abc394051745bde 07-Jun-2004 Axel Dörfler <axeld@pinc-software.de>

Now builds two file systems: "bfs" is now the file system for the new kernel,
while "bfs_r5" or "obfs_r5" is the one for the R5/Zeta kernel.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c697a0f4ccedb3a7985352b6373cbe62be9fd1d2 05-May-2004 Axel Dörfler <axeld@pinc-software.de>

When you now set COMPILE_FOR_ZETA=1 on the command line when jamming, the
api version will be set to 3 as required for Dano/Zeta - apparently, the
previous mechanism doesn't work with our headers, as we don't define
B_BEOS_VERSION_DANO at all :)
Fixed the build again (because of the stdio switch).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7428 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e936bb759242d9e8022dc6ad69e64f78b9b1e0d 04-May-2004 Bruno G. Albuquerque <bga@bug-br.org.br>

Now when BFS_REPLACEMENT is set, the name used for the add-on is "bfs" instead
of "obfs" (thanks Ingo). Also, changed the destination directory. It was formelly
"beos/system/add-ons/kernel/file_systems/bfs/" and now it is
"beos/system/add-ons/kernel/file_systems/" (as it should be).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7411 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b1e752314f6ea15168c26eef1c1449fea56f825a 03-May-2004 Bruno G. Albuquerque <bga@bug-br.org.br>

Ops! :)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7404 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e4758ac3824ebcac1e9862668512762f8a879dde 03-May-2004 Bruno G. Albuquerque <bga@bug-br.org.br>

Added BFS_REPLACEMENT define that will enable compiling OpenBFS as as full
BFS replacement (will report itself as "bfs" instead of "obfs". Is there a
way to change the add-on name based on the same define?


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7403 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 36660c5e9996909146d3872baa555115357f9267 29-Jan-2004 Axel Dörfler <axeld@pinc-software.de>

Switched from direct get_vnode() usage to the Vnode class.
Now acquires the volume lock always before get_vnode() is called as long
as UNSAFE_GET_VNODE is defined (which now is by default).
May cause some unwanted side-effects; it still has to be thorougly tested.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6424 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54343bbc2d49684c7d85169ba9a4bab7fc53fac8 25-Jan-2004 Axel Dörfler <axeld@pinc-software.de>

Switched to kernel_cpp.h/cpp.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6291 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb94280c6b8450b48764df889cdf0a8fd19af64b 16-Sep-2003 Axel Dörfler <axeld@pinc-software.de>

The file system is now almost endian-aware.
Used lazy unreadable conversion: ==, !=, == 0, != 0 are endian-safe
and don't need byte swapping.
If the platform endian differs from the one selected at compile time,
it will mount all volumes read-only for now.
Uncomment BFS_BIG_ENDIAN_ONLY in the Jamfile to build the big endian
version under x86.
No matter on what platform, the compilation defaults to build BFS as
little endian file system (see bfs_endian.h for details).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c1b7aba392b1ea358027283127db72cf42ba2769 26-Aug-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Changes reflecting the change of semantics of the DEBUG variable.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4383 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d62fee51423725d5bc39b19f16636d1b3d26d43f 25-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

The global OPTIM variable is now reset at the end of the file.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2846 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5d60085846f9e73acc43e1fe0c890a7c55f7b00d 24-Feb-2003 Axel Dörfler <axeld@pinc-software.de>

Now compiles with -Wall (why aren't we using that as default anyway?)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2835 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7ab95d9da94ccc3df95e8b2d97e1c2f71b100b97 21-Oct-2002 Axel Dörfler <axeld@pinc-software.de>

Made it easier to switch from R5 compilation to the test "obfs" compilation.
$ COMPILE_FOR_R5=1 jam
will compile the "bfs" version, otherwise the "obfs" version is created.
Note: the final executable will always be called obfs (for now).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1591 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f1e38490ebc4590bfea7ceb1e24bd976c9394577 08-Sep-2002 Axel Dörfler <axeld@pinc-software.de>

If debugging is disabled and the "release build" of BFS is done, optimization
is no only "-O1", since gcc obviously produces bad code if compiled with more.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@996 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ba04be1db056769234a3b572138e5a7b916adb4d 19-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed the dirent.d_reclen calculation - define KEEP_WRONG_DIRENT_RECLEN to
enable the old and compatible behaviour (on BeOS R5, all available file
systems seem to do that wrong).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ba5530fdc9b6a864960c7c756dacd522a760dfaf 13-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Now only "jam install" triggers the installation of bfs (in this directory only).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@756 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a1faae799346021744f17311b6867e42c2dc77f 13-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed the build process of bfs; -g and -O2 don't mix well together...
To enable debug output, type:
$ DEBUG=1 jam
Also, it's now automatically installed in /boot/home/config/add-ons/kernel/file_systems


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@751 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40f7fd6cf3371d69b9d78ca406058a93648cf18c 07-Aug-2002 Axel Dörfler <axeld@pinc-software.de>

Implemented the basics to allow uncached file access under BeOS.
This is needed for the VM swap file and if you want to mount disk images
located on the BFS volume.
There is now a BufferPool class that manages a pool of buffers, so that
Inode::ReadAt()/Inode::WriteAt() can access a file without having to use
the cache or malloc()/free().
The real uncached file access is not yet implemented, though.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@643 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