History log of /haiku/src/kits/storage/Node.cpp
Revision Date Author Comments
# 2532a287 23-Nov-2021 Augustin Cavalier <waddlesplash@gmail.com>

Avoid using unions for LongDirEntry.

GCC still assumes that the dirent has no data past the end for some
scenarios here and still mis-optimizes things. Therefore, drop the
usages of unions altogether, and instead use a casted character array.

Additionally, use B_FILE_NAME_LENGTH for the array, not B_PATH_NAME_LENGTH,
and make sure to add 1 for the NULL terminator.


# 8f03af00 18-Nov-2021 Augustin Cavalier <waddlesplash@gmail.com>

Storage: Rework LongDirEntry to be a union.

Our dirent structure is "slim": it has a flexible-length array at the
end which must be allocated to whatever size the consumer wants. However,
we use [1] there and not [0] or [], which meant GCC thought it was not
a flexible-length array, and so it optimized various string accesses
that it assumed must be always false. Among these was BDirectory's
check for "." and "..", and so that resulted in infinite loops.

When changing our dirent structure to a proper FLA instead of [1],
GCC then throws errors on LongDirEntry as it has data "after" the
FLA; which is what we want, but there is no way to tell GCC that.
So now we use a union instead, which is the proper way to statically
allocate a FLA.

This is part of #17389, but the real fix requires changing our dirent
structure, which is coming in a separate commit.


# 3db31932 07-Dec-2016 John Scipione <jscipione@gmail.com>

BNode: CID 602323 explicitly ignore fCStatus return value in ctor

This is what it this whole push was all about


# f901d7f5 10-Dec-2016 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert BNode changes resulting in non bootable system

Revert "BNode: CID 602323 explicitly ignore fCStatus return value in ctor"
Revert "BNode: Set fCStatus in SetTo() explicitly"
Revert "BNode: Style fixes, see below for details"

This reverts commit ede463195dee8536628c54ee6a4a888c0683a83f.
This reverts commit 6e3445098abd1d1e4cca69ba2d959fe74fe2cb1b.
This reverts commit 89c0b71c9a5acdbdb4543f025f64937bfbd893e3.

We are due for a release soon. Please keep things working.


# ede46319 07-Dec-2016 John Scipione <jscipione@gmail.com>

BNode: CID 602323 explicitly ignore fCStatus return value in ctor

This is what it this whole push was all about


# 6e344509 07-Dec-2016 John Scipione <jscipione@gmail.com>

BNode: Set fCStatus in SetTo() explicitly

instead of setting it in _SetTo() and then again in SetTo()

fCStatus could be set even fewer times but this is a good compromise
(logically, performance wise it is not an issue).

Update copyright, add myself to Authors


# 89c0b71c 07-Dec-2016 John Scipione <jscipione@gmail.com>

BNode: Style fixes, see below for details

Remove superfluous parens
Rename result variable to bytesWritten
Sync() Unwrap ternary style fix (for consistency)
* Shouldn't this return fCStatus instead of B_FILE ERROR?
* BeBook says "returning B_OK on success and an appropriate error message otherwise."
* Has returned B_FILE_ERROR since "it is accomplished ..."
Rename result variable to bytesWritten (again)
Remove superfluous space
explictly cast status_t to ssize_t
Remove superfluous parens, remove space, add newline
Explicitly cast status_t to ssize_t (again)
WriteAttrString() cleanup
* rename error to result
* rename sizeWritten to bytesWritten (consistency and clarity)
* check if error cede from WriteAttr and cast to status_t
* > not entirely style but functionaly same
* if length is different then written return B_FILE_ERROR
* > not a style change but a very minor functional change
* add some comments
Tiny documentation fix precede vars with \a
More style fixes
* Rename error to result
* Put parens around conditional of ternary instead of whole thing
* Compare against NULL explicitly
* Don't set fCStatus here, we're going to set it in the calling function instead
* > note that Unset() sets fCStatus to B_NO_INIT but that's ok
80 char limit style fix
More style fixes and don't set fCStatus
* remove superfluous parens
* compare ref to NULL explicitly
* > Also don't set fCStatus here since we will do that in calling function
Unset() sets fCStatus to B_NO_INIT but that's ok
Unwrap ternary style fix (consistency)
Rename error to result (again)


# a30a4a41 18-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to Storage Kit classes.

No functional changes intended.

* Some variable renaming for clarity and consistency.
* Pointer style fixes.
* Added private method documentation back to cpp files for some methods.


# 040a8141 05-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add node_ref::operator <

Moved from VirtualDirectoryManager. Defining the operator static doesn't
work with gcc 4 and it's useful to have globally available anyway.


# 2d8ec1d5 06-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add the obvious node_ref constructor


# 7f1880dc 29-Oct-2011 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Apply patch for ticket #8008:
* Remove BNode documentation from the source code and add it to Node.dox
* Rewrite some of the existing documents


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


# f1383bbf 10-Aug-2011 Axel Dörfler <axeld@pinc-software.de>

* Fixed build; should have been part of r42620.


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


# 32bf3ca5 23-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

Added GetStat() symbol when compiling the test environment on GCC4.


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


# 2c69b5b6 19-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Made the libbe_test environment basically working under Haiku - to actually
make it work, one would need to use versioning for all libbe symbols. This is
worth an 8k price per file that links against libbe.so, so I didn't want to
commit this as is. An alternative to this solution would be to write a
separate application that is responsible for the app_server's window. Comments
welcome.
* Removed BeOS compatbility of the libbe_test stuff.
* Renamed the libbe_test targets from *haiku* to *test*, ie. libbe_haiku.so is
now called libbe_test.so, haiku_registrar is now test_registrar, etc.
* This also removes BeOS compatibility from tracker/FSUtils.cpp (all BeOS
compatibility should be removed, but I don't want to make Alexandre more work
in his branch, and it's not urgent at all).
* Replaced the former "run" scripts for the test environment with a single
run script (see updated NOTES file).
* Removed the libbe_test target from some applications - this was only to help
developing them under BeOS, and is thus no longer necessary.


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


# 42c9b01a 25-May-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* {BEntry,BNode}::GetStat() were still passing the BeOS struct stat size to
the syscall. Anything beyond st_mtim was therefore not filled in. Fixes
the incorrectly shown creation times in Tracker.
* The BStatable::GetStat() solution was not sufficient yet. We still have to
provide the old GetStat() symbol for BNode and BEntry, since those could be
used by old applications/libraries. We also still have to implement the old
GetStat() slots in the derived classes, but don't need to implement it in
the base class (was purely virtual before and is private now).
* The old BStatable::_OhSoStatable1() slot function was not implemented
correctly. Calling the virtual function at the vtable slot obviously results
in an infinite recursion. The correct implementation would make use of the
Perform() method, but Be didn't provide one for BStatable, so we have to use
the old GetStat() method. Fixed #3960.


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


# cf7e57ef 06-Jun-2008 Stephan Aßmus <superstippi@gmx.de>

Small coding style fix.


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


# 3dd2f066 25-Apr-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

Shame on me. The node is actually unlocked in close_fd().



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


# 8ce1d517 25-Apr-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

From the BeBook:

Node Locking

Another feature provided by the BNode class is "node locking": Through BNode's
Lock() function you can restrict access to the node. The lock is removed when
Unlock() is called, or when the BNode object is deleted.

There is still something wrong with locking though. For example, it looks like
WriteAttr() fails on the node when we lock it (File Busy) but it should not.
The lock acquirer should be able to call WriteAttr() on it.



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


# 085296e8 12-Sep-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

R5's WriteAttrString() also writes the terminating null. So does ours now.


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


# 7b3d36e5 21-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

* BEntry::GetStat() and BNode::GetStat() used sizeof(struct stat) for the kernel
syscall, but they could not know if R5 code called them (in which case the stat
size has a different size). We now always only return the R5 stat structure here.
This fixes bug #420. We might want to find a different solution to this problem,
though.
* Be got SYMLINK_MAX wrong - it's not the maximum number of links (that's SYMLOOP_MAX),
but the maximum size of a symlink buffer. Added missing SYMLOOP_MAX and SYMLINK_MAX
constants to limits.h.
* Fixes MAXSYMLINKS to use SYMLOOP_MAX, instead of SYMLINKS_MAX (which doesn't exist
in POSIX specs, but we (intentionally) break source compatibility here).
* Reenabled the Haiku versions of stat(), fstat(), and lstat() when build for Haiku.
* Removed OpenBeOS namespace stuff from the files I touched.
* Removed superfluous StorageDefs.Private.h, whyever that ended up in a public header
is beyond me.
* Cleanup.


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


# 509798f9 30-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup.


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


# 3af4214a 01-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

_kern_open[_entry_ref]() now replaces the _kern_create[_entry_ref]() calls.
That allows BFile to actually create files (it didn't use that syscall at
all before).
Also fixed setting the permission bits of the newly created file depending on umask
(the __gUmask variable should probably be moved into a separate header).


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


# b06942c6 13-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

All internally used FDs are now set to O_CLOEXEC.


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


# 08d0162e 12-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Don't retry opening the node read-only, if opening read-write failed with B_ENTRY_NOT_FOUND.


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


# a368fecb 11-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

When opening the node O_RDWR failed, we try again O_RDONLY, but we did that only, if the returned error code was B_READ_ONLY_DEVICE or B_PERMISSION_DENIED. Some FS return other error codes though, so we are completely ignorant now and always retry on error. Maybe we shouldn't for obvious cases like B_ENTRY_NOT_FOUND.


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


# db10640d 28-Aug-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Got rid of the Storage Kit's kernel abstraction layer, which was
unfortunately quite slow and made some things more complicated than they
needed to be.
Implemented a few missing things (e.g. BSymLink and node locking).


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


# 17e6de7a 03-Aug-2003 shadow303 <shadow303@nowhere.fake>

gcc 3 fixes


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


# 1eed0e99 21-May-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added missing inclusion of <unistd.h>.


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


# 7c44680a 11-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Renamed the private virtual slots back to their original (R5) names. We would break binary compatibility otherwise, or at least had to do some additional work to maintain nevertheless.


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


# 2af60585 09-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added two open() versions to our kernel_interface, that re-try opening read-only, if desired. They are now used in BDirectory and BNode, which formerly failed on read-only devices.


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


# 480ed2e7 07-Oct-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed bug in ReadAttrString(): The resulting string was one character longer, when the string in the attribute was null terminated.


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


# 9a17c3cf 23-Sep-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Dealt with the *_LENGTH+1 issue: Removed all "+1"s in buffer allocations and adjusted checks etc.


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


# 09d84e61 12-Aug-2002 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

+ Changed StorageKit namespace to BPrivate::Storage
+ Changed Sniffer namespace to BPrivate::Storage::Sniffer


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


# 52a38012 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


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


# a30a4a41f948ebb03b95dab065a27a584ac0c97a 18-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to Storage Kit classes.

No functional changes intended.

* Some variable renaming for clarity and consistency.
* Pointer style fixes.
* Added private method documentation back to cpp files for some methods.


# 040a81419dda83d1014e9dc94936a4cb3f027303 05-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add node_ref::operator <

Moved from VirtualDirectoryManager. Defining the operator static doesn't
work with gcc 4 and it's useful to have globally available anyway.


# 2d8ec1d502634cf7d3fffc50bae54c5019a807fd 06-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add the obvious node_ref constructor


# 7f1880dc0ed378e10f46bf7dd6d697dcf9ffd9fe 29-Oct-2011 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Apply patch for ticket #8008:
* Remove BNode documentation from the source code and add it to Node.dox
* Rewrite some of the existing documents


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


# f1383bbf4d8d0eb598c3d504ab5e6a4f67d14624 10-Aug-2011 Axel Dörfler <axeld@pinc-software.de>

* Fixed build; should have been part of r42620.


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


# 32bf3ca5f87ff7fb8d6a27baac551a1904c1baec 23-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

Added GetStat() symbol when compiling the test environment on GCC4.


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


# 2c69b5b6c0e7b481a0c43366a1942a6055cbb864 19-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Made the libbe_test environment basically working under Haiku - to actually
make it work, one would need to use versioning for all libbe symbols. This is
worth an 8k price per file that links against libbe.so, so I didn't want to
commit this as is. An alternative to this solution would be to write a
separate application that is responsible for the app_server's window. Comments
welcome.
* Removed BeOS compatbility of the libbe_test stuff.
* Renamed the libbe_test targets from *haiku* to *test*, ie. libbe_haiku.so is
now called libbe_test.so, haiku_registrar is now test_registrar, etc.
* This also removes BeOS compatibility from tracker/FSUtils.cpp (all BeOS
compatibility should be removed, but I don't want to make Alexandre more work
in his branch, and it's not urgent at all).
* Replaced the former "run" scripts for the test environment with a single
run script (see updated NOTES file).
* Removed the libbe_test target from some applications - this was only to help
developing them under BeOS, and is thus no longer necessary.


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


# 42c9b01aa624559ecb44976c02d02f3a1b355ae9 25-May-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* {BEntry,BNode}::GetStat() were still passing the BeOS struct stat size to
the syscall. Anything beyond st_mtim was therefore not filled in. Fixes
the incorrectly shown creation times in Tracker.
* The BStatable::GetStat() solution was not sufficient yet. We still have to
provide the old GetStat() symbol for BNode and BEntry, since those could be
used by old applications/libraries. We also still have to implement the old
GetStat() slots in the derived classes, but don't need to implement it in
the base class (was purely virtual before and is private now).
* The old BStatable::_OhSoStatable1() slot function was not implemented
correctly. Calling the virtual function at the vtable slot obviously results
in an infinite recursion. The correct implementation would make use of the
Perform() method, but Be didn't provide one for BStatable, so we have to use
the old GetStat() method. Fixed #3960.


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


# cf7e57ef102a177b46f2f1d4c299f74e5d74f2c0 06-Jun-2008 Stephan Aßmus <superstippi@gmx.de>

Small coding style fix.


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


# 3dd2f0667e5badc80466f2d929639521810b8789 25-Apr-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

Shame on me. The node is actually unlocked in close_fd().



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


# 8ce1d51721b5d7a01ba89d6a25f1335fa3e0cb26 25-Apr-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

From the BeBook:

Node Locking

Another feature provided by the BNode class is "node locking": Through BNode's
Lock() function you can restrict access to the node. The lock is removed when
Unlock() is called, or when the BNode object is deleted.

There is still something wrong with locking though. For example, it looks like
WriteAttr() fails on the node when we lock it (File Busy) but it should not.
The lock acquirer should be able to call WriteAttr() on it.



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


# 085296e86c4cc0b575f88ffb636fa9c881df5e51 12-Sep-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

R5's WriteAttrString() also writes the terminating null. So does ours now.


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


# 7b3d36e5aa0992fc1a69816d2f90e2e6be56821e 21-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

* BEntry::GetStat() and BNode::GetStat() used sizeof(struct stat) for the kernel
syscall, but they could not know if R5 code called them (in which case the stat
size has a different size). We now always only return the R5 stat structure here.
This fixes bug #420. We might want to find a different solution to this problem,
though.
* Be got SYMLINK_MAX wrong - it's not the maximum number of links (that's SYMLOOP_MAX),
but the maximum size of a symlink buffer. Added missing SYMLOOP_MAX and SYMLINK_MAX
constants to limits.h.
* Fixes MAXSYMLINKS to use SYMLOOP_MAX, instead of SYMLINKS_MAX (which doesn't exist
in POSIX specs, but we (intentionally) break source compatibility here).
* Reenabled the Haiku versions of stat(), fstat(), and lstat() when build for Haiku.
* Removed OpenBeOS namespace stuff from the files I touched.
* Removed superfluous StorageDefs.Private.h, whyever that ended up in a public header
is beyond me.
* Cleanup.


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


# 509798f986beffe7c1e6a6f62a90bf07486574fa 30-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup.


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


# 3af4214aeb7eae0e7ebb5938fa1619800b15a958 01-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

_kern_open[_entry_ref]() now replaces the _kern_create[_entry_ref]() calls.
That allows BFile to actually create files (it didn't use that syscall at
all before).
Also fixed setting the permission bits of the newly created file depending on umask
(the __gUmask variable should probably be moved into a separate header).


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


# b06942c6049d167350529b36a6f7f559383a764f 13-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

All internally used FDs are now set to O_CLOEXEC.


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


# 08d0162ea24e1a5264794e0e36a1a6f9f010780c 12-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Don't retry opening the node read-only, if opening read-write failed with B_ENTRY_NOT_FOUND.


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


# a368fecb8d8e493724a12d9a943b59e71e74e5f1 11-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

When opening the node O_RDWR failed, we try again O_RDONLY, but we did that only, if the returned error code was B_READ_ONLY_DEVICE or B_PERMISSION_DENIED. Some FS return other error codes though, so we are completely ignorant now and always retry on error. Maybe we shouldn't for obvious cases like B_ENTRY_NOT_FOUND.


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


# db10640de90f7f9519ba2da9577b7c1af3c64f6b 28-Aug-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Got rid of the Storage Kit's kernel abstraction layer, which was
unfortunately quite slow and made some things more complicated than they
needed to be.
Implemented a few missing things (e.g. BSymLink and node locking).


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


# 17e6de7a37c5c61f45eb724de108daa70905cb8f 03-Aug-2003 shadow303 <shadow303@nowhere.fake>

gcc 3 fixes


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


# 1eed0e99e9940bc59ee16a6161cce6ba91ad2ada 21-May-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added missing inclusion of <unistd.h>.


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


# 7c44680a3623191910d7fb6617ff897583f2ef60 11-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Renamed the private virtual slots back to their original (R5) names. We would break binary compatibility otherwise, or at least had to do some additional work to maintain nevertheless.


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


# 2af6058585a93f47f4c2bfa98929fc9893174f41 09-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Added two open() versions to our kernel_interface, that re-try opening read-only, if desired. They are now used in BDirectory and BNode, which formerly failed on read-only devices.


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


# 480ed2e7f3285187497f21d022f1dc95e7407928 07-Oct-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed bug in ReadAttrString(): The resulting string was one character longer, when the string in the attribute was null terminated.


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


# 9a17c3cfac5f2463b41b3f233975a2904ef10135 23-Sep-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Dealt with the *_LENGTH+1 issue: Removed all "+1"s in buffer allocations and adjusted checks etc.


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


# 09d84e61b6c2629d253dce1e7d7e944943d3e40e 12-Aug-2002 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

+ Changed StorageKit namespace to BPrivate::Storage
+ Changed Sniffer namespace to BPrivate::Storage::Sniffer


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


# 52a380120846174213ccce9c4aab0dda17c72083 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


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