History log of /haiku/src/add-ons/kernel/file_systems/bfs/Query.cpp
Revision Date Author Comments
# 711e2dc0 01-Dec-2021 Augustin Cavalier <waddlesplash@gmail.com>

Adjust all struct dirent creations (again), this time to use offsetof().

The dirent struct is not packed, so offsetof(dirent, d_name) != sizeof(dirent).
Thus in order not to waste the alignment bytes (which are significant,
on x86_64 at least, sizeof(dirent)==32, but offsetof(...)=26.)

This is also the most portable way to handle things, and should
work just fine in cross-platform code that has a non-zero-sized d_name.


# 9d242fb9 18-Nov-2021 Augustin Cavalier <waddlesplash@gmail.com>

file_systems & Tracker: Do not assume sizeof(dirent) contains 1 byte for the name.

At present, it does, but that is an oddity we have preserved from BeOS
that the next commit is going to remove. (This commit thus wastes 1 byte
without the following one.)

Most changes are pretty straightforward: only a +1 is needed,
and a few removed from sizing calculations. Some filesystems like UDF
originally passed back the length with the \0 included, so they have
been adjusted further. UFS2 had some other sizing problems which are also
corrected in this commit.


# 93845aec 11-Jun-2020 Axel Dörfler <axeld@pinc-software.de>

block_cache: Change signature of *_etc() functions

* This allows file systems to retrieve the actual error code on a
failure, and report it to the user.
* All affected file systems have been adjusted to the API change.
This is a binary incompatible change.

Change-Id: Id73392aaf9c6cb7d643ff9adcb8bf80f3037874c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2913
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 3e818f20 07-Jan-2020 X512 <danger_mail@list.ru>

bfs: keep valid dirent->d_reclen in case of bad name

Fixes #15607.

Change-Id: I96b807f031df4e5c8b5ae17b22a21aed77616b17
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2083
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# 48063a42 08-Apr-2017 Axel Dörfler <axeld@pinc-software.de>

BFS: Use MAX_INDEX_KEY_LENGTH for queries.

* INODE_FILE_NAME_LENGTH makes no sense here, even though this change
is not supposed to actually change anything besides the naming.


# 6609c1a0 08-Apr-2017 Axel Dörfler <axeld@pinc-software.de>

BFS: Removed match empty string logic.

* This produces more reliable query results no matter which index
gets chosen to run the query.
* This fixes the final part of #13254.


# 0ed0f5cb 27-Jan-2017 Axel Dörfler <axeld@pinc-software.de>

bfs: Handle type 'TIME' as int32 in queries.

* This fixes ticket #6734.


# f7917997 19-Jan-2017 Axel Dörfler <axeld@pinc-software.de>

bfs: Query parser needs to filter out escape char.

* When escaping operator/quote characters, the character was properly
ignored. However, the escape char was left in the string which
altered the query.
* This fixes bug #10976.


# a2eb6bbd 19-Jan-2017 Axel Dörfler <axeld@pinc-software.de>

bfs: Minor cleanup.

* Added helper methods for operator/equation characters.


# e5022f23 19-Jan-2017 Axel Dörfler <axeld@pinc-software.de>

Coding style cleanup, no functional change.


# 39f437f7 04-Jan-2017 Axel Dörfler <axeld@pinc-software.de>

bfs: Always check if NodeGetter succeeded.

* There were quite a few cases that just assumed that the disk access
would succeed.
* This also fixes bug #12962.


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


# a1566b06 06-May-2013 Axel Dörfler <axeld@pinc-software.de>

bfs: removed kernel_cpp.h's new operator.

* This fixes bug #9715 from the POV of BFS, ie. the new operator seems
to call the constructor on a NULL object on failure.


# 7707f8ce 02-Mar-2012 Axel Dörfler <axeld@pinc-software.de>

Fixed warning when compiled with DEBUG=1 but an empty D().


# a54f7dc2 08-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move B_MIME_STRING_TYPE to <TypeConstants.h>


# 3e292446 08-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move B_MIME_STRING_TYPE to <TypeConstants.h>


# 9674328e 24-Jun-2011 Axel Dörfler <axeld@pinc-software.de>

* Minor style cleanup.


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


# 4a5a077f 24-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add a private B_ATTR_CHANGE_NOTIFICATION flag to the open query syscall to tell the query to send notifications when an entry attribute changed and the entry stays in the query. Previously you only get created and removed messages, now you can also get updated messages. Only implement it for bfs.
Fix copy right.



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


# 4ea6fb8b 27-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed the query code again to send B_ENTRY_REMOVED/B_ENTRY_CREATED
notifications if an inode in a query result was moved/renamed - this time all
the information is correct, though.
* While I did not introduce B_ENTRY_MOVED for queries yet, this should make
adding it very simple (left as an excercise for the reader ;-))


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


# 8859eeab 24-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced "%Ld" and "%lld" in printf()s by the new B_PRI* macros to avoid
warnings when building with a 64 bit compiler.


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


# 2edf7c46 20-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* I just checked, and BeOS actually does not update the query this way - this
must have been my very own stupid idea. It's removed now.


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


# 6f8b6a0d 20-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* When an item was deleted, the order of the attributes decided whether or not
one or two remove messages were generated, as the query code produces
remove/create notifications on renames. Will check next if that also happens
on BeOS, as it doesn't really make much sense.
* This should fix the wrong mail count of the Deskbar replicant when you delete
mail.


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


# a1a92831 11-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* This should fix #4760.


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


# 75f5498c 10-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed two problems of the OR operator (||): if the first of the equations
failed to evaluate, the whole term was ignored. Also, if the left term got
the higher score (and was thus evaluated first), the second term was never
evaluated anymore. This should fix, for example, MDR sometimes not sending
out pending mails.
* Minor cleanup, improved comments.


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


# 7e14656c 06-Aug-2009 Rene Gollent <anevilyak@gmail.com>

Patch by Blub\0: fix bfs build with DEBUG defined on gcc4.



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


# 1a60fd72 06-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Replaced the Inode::GetTree() method with a simple getter - the tree is
always created for directories since quite some time now.


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


# f5d5ca18 30-Jul-2008 Axel Dörfler <axeld@pinc-software.de>

Cleanup.


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


# c6f752c0 06-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

Corrected patch to fix warnings when compiled with GCC 4, thanks Vasilis!


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


# b631d2f4 27-Sep-2006 Axel Dörfler <axeld@pinc-software.de>

* Fixed the bug Bruno observed (and worked around) in a safer way - the node data was
not written back before GetNextSmallData() was called (which let the region appear
empty even though it wasn't).
* I left the shortcut in case of the "name" attribute in there, because it should
be a bit faster.


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


# 7676dedf 21-Sep-2006 Bruno G. Albuquerque <bga@bug-br.org.br>

Fixed live query notification for new files being created. It seems using Inode::GetName() in the middle of a transaction is not a good idea.

Axel, can you check if we really need to keep the old code there as it is now or if we can
completelly remove it? I think we can but maybe there is some case I did not consider.


// We have to special-case the name attribute here because
// Inode::Getname will return NULL as we are in the middle
// of the transaction at this point when a new file is
// created. We just use newKey which happens to contain
// the new file name anyway.
//
// TODO: Check if there is any sense in leaving this if
// statement as it is or if we can completelly remove the
// original code.



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


# b68efdca 18-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

We now use the kernel's Stack class instead of our own copy.


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


# 0d3a7fe9 02-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

Moved over to the new live query notification API.
Fixed a stupid bug in Query::LiveUpdate() that prevented it to work correctly before:
instead of the file name, the attribute value was passed to send_notification().


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


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

Added Query::Rewind() method - not yet tested.


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


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

Removed KEEP_WRONG_DIRENT_RECLEN support.
Fixed endian issue.
Changed due to new inode code.


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


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

Some changes due to the fsproto.h/fs_interface.h tandem.


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


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

It's now <util/kernel_cpp.h> rather than <kernel_cpp.h>.
Forgot to commit that...


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


# 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


# 09ed3db8 25-May-2003 Axel Dörfler <axeld@pinc-software.de>

Some minor style changes/clean ups.


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


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

Added a virtual desctructor for the Term base class, and added the virtual
keyword to the ones of its subclasses as well.


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


# 1241a215 29-Jan-2003 Axel Dörfler <axeld@pinc-software.de>

Only queries non-indexed attributes if the B_QUERY_NON_INDEXED flag was
passed during construction of the Query.
Only live queries are now registered with the BVolume (for now - since Be's kernel
doesn't free queries when an app has crashed, we might want to have a work-around
for that one day [or just a new kernel :)]).
Small cleanups.


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


# d9f08d80 10-Jan-2003 Axel Dörfler <axeld@pinc-software.de>

The empty string ("", length 0) will now be replaced with ("", length 1) in
queries, to let the BPlusTree::Find() method search for it (there can't be
any keys in the tree with length 0).
That means that the query 'META:url=""' will now return all files where the
attribute "META:url" is present but empty.


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


# 006928f8 29-Nov-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed the bug in the query code: B_MIME_STRING_TYPE was not correctly
translated into B_STRING_TYPE for the key comparison (it was translated
but not saved under the new type).
compareKeys() will now return -1 if it didn't know the type to compare.


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


# c0f2928e 25-Nov-2002 Axel Dörfler <axeld@pinc-software.de>

Now uses Inode::GetName() where appropriate.
Fixed a bigger race condition when matching against the name index.


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


# a3d39a9e 06-Nov-2002 Axel Dörfler <axeld@pinc-software.de>

Equation::Match() unlocked the small data section too soon (the contents
could be changed before or during the comparison).
Some style changes.


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


# 2b5451f1 16-Sep-2002 Axel Dörfler <axeld@pinc-software.de>

Added private non-implemented copy constructor and assignment operators
for many classes for the sake of completeness.
Added a Transaction::IsStarted() method to not let it look like as if the
transaction is started more than once.
Changes made after suggestions from Mike Nordell, again :-)


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


# 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


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


# a1566b06b7b53d14fa53c169b0989925c54fd69d 06-May-2013 Axel Dörfler <axeld@pinc-software.de>

bfs: removed kernel_cpp.h's new operator.

* This fixes bug #9715 from the POV of BFS, ie. the new operator seems
to call the constructor on a NULL object on failure.


# 7707f8cec2f8ef5773c9e298879f1e96251e8259 02-Mar-2012 Axel Dörfler <axeld@pinc-software.de>

Fixed warning when compiled with DEBUG=1 but an empty D().


# a54f7dc2506cd315ef499129b1f44ec96e8c1e10 08-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move B_MIME_STRING_TYPE to <TypeConstants.h>


# 3e29244600395a0cea91cfc0a0323016fc0f3253 08-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Move B_MIME_STRING_TYPE to <TypeConstants.h>


# 9674328ebe9b3c9e903b301294c04a99ad57ca07 24-Jun-2011 Axel Dörfler <axeld@pinc-software.de>

* Minor style cleanup.


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


# 4a5a077ff79e1b1ffb2571fdfc5ea8218a64196c 24-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add a private B_ATTR_CHANGE_NOTIFICATION flag to the open query syscall to tell the query to send notifications when an entry attribute changed and the entry stays in the query. Previously you only get created and removed messages, now you can also get updated messages. Only implement it for bfs.
Fix copy right.



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


# 4ea6fb8bd4961cdd6177dcfa90a14ec09c94c3e4 27-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed the query code again to send B_ENTRY_REMOVED/B_ENTRY_CREATED
notifications if an inode in a query result was moved/renamed - this time all
the information is correct, though.
* While I did not introduce B_ENTRY_MOVED for queries yet, this should make
adding it very simple (left as an excercise for the reader ;-))


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


# 8859eeab5349da39ee9972ee0943919740754b77 24-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced "%Ld" and "%lld" in printf()s by the new B_PRI* macros to avoid
warnings when building with a 64 bit compiler.


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


# 2edf7c468768196178cdd07aae92b50c0a026a8d 20-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* I just checked, and BeOS actually does not update the query this way - this
must have been my very own stupid idea. It's removed now.


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


# 6f8b6a0dfd4275b717a40688ecdf4729feb9f8a5 20-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* When an item was deleted, the order of the attributes decided whether or not
one or two remove messages were generated, as the query code produces
remove/create notifications on renames. Will check next if that also happens
on BeOS, as it doesn't really make much sense.
* This should fix the wrong mail count of the Deskbar replicant when you delete
mail.


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


# a1a928319d2c7720129a6e815f70c5c57b52aa87 11-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* This should fix #4760.


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


# 75f5498c0a862f46f2db237ed854f9943d584502 10-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed two problems of the OR operator (||): if the first of the equations
failed to evaluate, the whole term was ignored. Also, if the left term got
the higher score (and was thus evaluated first), the second term was never
evaluated anymore. This should fix, for example, MDR sometimes not sending
out pending mails.
* Minor cleanup, improved comments.


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


# 7e14656cf7317b55847bf8c721542b4bfa9ce030 06-Aug-2009 Rene Gollent <anevilyak@gmail.com>

Patch by Blub\0: fix bfs build with DEBUG defined on gcc4.



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


# 1a60fd72cf588ed0d25028da354261b4d8409c08 06-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Replaced the Inode::GetTree() method with a simple getter - the tree is
always created for directories since quite some time now.


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


# f5d5ca18f6c9f396e680cda176495527e8e0a59d 30-Jul-2008 Axel Dörfler <axeld@pinc-software.de>

Cleanup.


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


# c6f752c0c5f38752dedaee4f781bdf23de395bdb 06-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

Corrected patch to fix warnings when compiled with GCC 4, thanks Vasilis!


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


# b631d2f40d9e9b66e90533ad6e7595380a5dcda7 27-Sep-2006 Axel Dörfler <axeld@pinc-software.de>

* Fixed the bug Bruno observed (and worked around) in a safer way - the node data was
not written back before GetNextSmallData() was called (which let the region appear
empty even though it wasn't).
* I left the shortcut in case of the "name" attribute in there, because it should
be a bit faster.


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


# 7676dedf5711cebc9db288079882d085365a2223 21-Sep-2006 Bruno G. Albuquerque <bga@bug-br.org.br>

Fixed live query notification for new files being created. It seems using Inode::GetName() in the middle of a transaction is not a good idea.

Axel, can you check if we really need to keep the old code there as it is now or if we can
completelly remove it? I think we can but maybe there is some case I did not consider.


// We have to special-case the name attribute here because
// Inode::Getname will return NULL as we are in the middle
// of the transaction at this point when a new file is
// created. We just use newKey which happens to contain
// the new file name anyway.
//
// TODO: Check if there is any sense in leaving this if
// statement as it is or if we can completelly remove the
// original code.



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


# b68efdcaa7f9c148cbf77b6e8bf60978f0bd5978 18-Oct-2005 Axel Dörfler <axeld@pinc-software.de>

We now use the kernel's Stack class instead of our own copy.


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


# 0d3a7fe9b1feec64fc4320959e6b79f5f2b2378b 02-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

Moved over to the new live query notification API.
Fixed a stupid bug in Query::LiveUpdate() that prevented it to work correctly before:
instead of the file name, the attribute value was passed to send_notification().


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


# 467954408f7d4c187469bf62d96bfffe47cf1d0f 12-Dec-2004 Axel Dörfler <axeld@pinc-software.de>

Added Query::Rewind() method - not yet tested.


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


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

Removed KEEP_WRONG_DIRENT_RECLEN support.
Fixed endian issue.
Changed due to new inode code.


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


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

Some changes due to the fsproto.h/fs_interface.h tandem.


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


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

It's now <util/kernel_cpp.h> rather than <kernel_cpp.h>.
Forgot to commit that...


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


# 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


# 09ed3db89a7892a5fd9f4d168c17d8efb2105c5b 25-May-2003 Axel Dörfler <axeld@pinc-software.de>

Some minor style changes/clean ups.


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


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

Added a virtual desctructor for the Term base class, and added the virtual
keyword to the ones of its subclasses as well.


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


# 1241a21542d419b9032494814abffd1873653d2f 29-Jan-2003 Axel Dörfler <axeld@pinc-software.de>

Only queries non-indexed attributes if the B_QUERY_NON_INDEXED flag was
passed during construction of the Query.
Only live queries are now registered with the BVolume (for now - since Be's kernel
doesn't free queries when an app has crashed, we might want to have a work-around
for that one day [or just a new kernel :)]).
Small cleanups.


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


# d9f08d808d1ab6e7101467b242ab19fc539e00a1 10-Jan-2003 Axel Dörfler <axeld@pinc-software.de>

The empty string ("", length 0) will now be replaced with ("", length 1) in
queries, to let the BPlusTree::Find() method search for it (there can't be
any keys in the tree with length 0).
That means that the query 'META:url=""' will now return all files where the
attribute "META:url" is present but empty.


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


# 006928f81b2ab30d54835dbc9964c04c07d392d7 29-Nov-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed the bug in the query code: B_MIME_STRING_TYPE was not correctly
translated into B_STRING_TYPE for the key comparison (it was translated
but not saved under the new type).
compareKeys() will now return -1 if it didn't know the type to compare.


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


# c0f2928e7dc1592b5b5d842869f660eede746dab 25-Nov-2002 Axel Dörfler <axeld@pinc-software.de>

Now uses Inode::GetName() where appropriate.
Fixed a bigger race condition when matching against the name index.


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


# a3d39a9e8adec7be7a0f41a6bf66d6d709ee64d4 06-Nov-2002 Axel Dörfler <axeld@pinc-software.de>

Equation::Match() unlocked the small data section too soon (the contents
could be changed before or during the comparison).
Some style changes.


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


# 2b5451f1642e72a8bd34ccabac5c0b670f09f664 16-Sep-2002 Axel Dörfler <axeld@pinc-software.de>

Added private non-implemented copy constructor and assignment operators
for many classes for the sake of completeness.
Added a Transaction::IsStarted() method to not let it look like as if the
transaction is started more than once.
Changes made after suggestions from Mike Nordell, again :-)


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


# 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