usage clearer. Also added a comment that explains why it's okay that
blocksNeeded and blocksRequested can be different.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3579 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added file system global locking around creating, deleting, and renaming
inodes - that's not nice, but since we have only sequential journal access,
it won't hurt concurrency much. The locks are needed to prevent certain
things from happening like two threads could theoretically create the same
file twice (one of them would have failed, but relatively late in the process).
Anyway, a better locking scheme will be implemented at a later date, but maybe
not for R1.
Small cleanup.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3562 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed the op-description send_notification() gives - notify_listener() now
only prints out the op value, since it will call send_notification() anyway.
The tracker doesn't try to query files on B_ATTR_CHANGED or when node == 0,
or name == NULL.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3560 a95241bf-73f2-0310-859d-f6bbb57e9c96
Implemented the beginnings of a Tracker like mode in the fs_shell - started
and stopped using the new "tracker" command; it will get all notifications
the file system sends.
Right now it's very simple, it just opens the file, does a stat(), and closes
the file again, and guess what, I could reproduce our favourite problem with
it!! So it will be finally fixed in the next few days.
Some cleanups.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3559 a95241bf-73f2-0310-859d-f6bbb57e9c96
and it should have read B_NOT_SUPPORTED_ON_SOCKET.
We could reintroduce it later (along with other missing network errors).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3552 a95241bf-73f2-0310-859d-f6bbb57e9c96
if the buffer is too small for the settings string.
Added/changed some comments.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3548 a95241bf-73f2-0310-859d-f6bbb57e9c96
with this by default, like the whole project, too.
Removed the B_FILE_NAME_LENGTH definition, since our headers are now correct.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3546 a95241bf-73f2-0310-859d-f6bbb57e9c96
be accepted between the parameter name and its first value - but it will
be added to any other values for compatibility reasons.
put_string() now correctly quotes strings if needed - the new put_chars()
function puts out a string unchanged (both only used internally anyway).
Added some comments.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3543 a95241bf-73f2-0310-859d-f6bbb57e9c96
Replaced the "hostname" app with the "tls_test" in the standard build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3520 a95241bf-73f2-0310-859d-f6bbb57e9c96
~/config/settings/kernel/drivers first, and then (re)parses some built-in
settings strings.
Use "-v" to enable verbose output.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3517 a95241bf-73f2-0310-859d-f6bbb57e9c96
Improved the output of get_driver_settings_string().
Small cleanup.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3516 a95241bf-73f2-0310-859d-f6bbb57e9c96
be available to userland applications as well.
Furthermore, the API & grammar has been extended. There is now a '=' allowed
between the key and its values. Also, '\n' can now be replaced with ';'. These
changes allow flat driver_settings strings.
It doesn't work perfectly right now, but it's a start. A test application
will be added soon, the kernel file will be removed soon as well, and the
build updated.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3515 a95241bf-73f2-0310-859d-f6bbb57e9c96
Implemented all needed functionality in BMediaTheme to use this default
theme - it's currently disabled, though (or should be).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3491 a95241bf-73f2-0310-859d-f6bbb57e9c96
implementations (and against its standard behaviour), it does now
handle a NULL string parameter gracefully.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3485 a95241bf-73f2-0310-859d-f6bbb57e9c96
the fs register correctly - not that it should have much effect since it's
rarely used anyway (no reason to might be wrong, though) :)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3483 a95241bf-73f2-0310-859d-f6bbb57e9c96
changed, sorry.
Fixed many bugs in the old implementation, this one is now also endian-aware,
is faster on many things, works with stampTV, ...
Cleaned up a lot, most of it now complies with our style guide. Added a bunch
of helper functions that makes the code much better (to read), and easier to
maintain.
It's not yet completed though - will do that soon.
Also still missing is any documentation about those classes - I will also
work on this.
The changes have to downsides, though:
- I broke compatibility with the R5 flattened format. It shouldn't be a big
issue, since it was never thought to be put on disk - I will look into
that, though.
- the previous implementation had a strange policy when the Unflatten()
methods had reason to fail - it tried to read as much as possible instead
of just failing and leaving an invalid object behind. The new implementation
will just fail - the object you called Unflatten() from might not contain
useful information after this, though.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3470 a95241bf-73f2-0310-859d-f6bbb57e9c96
but should probably rewritten - I think it's already too complex now to solve
that whole task.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3402 a95241bf-73f2-0310-859d-f6bbb57e9c96
the old attribute value wasn't evaluated at all.
Also, Index::Update() got a type code of zero, instead of the real value
in situations where this didn't make any sense.
Minor cleanup in kernel_interface.cpp.
New method Volume::CheckForLiveQuery() that checks if there is a live query
depending on the specified attribute - not yet implemented, but already used;
always returns "true" right now, which doesn't cause any harm but reducing
the speed lightly.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3394 a95241bf-73f2-0310-859d-f6bbb57e9c96
a name - that's mostly done to:
1) force better fitting lock names
2) make the API consistent (the empty ReadWriteLock constructor doesn't
initialize the lock anymore).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3366 a95241bf-73f2-0310-859d-f6bbb57e9c96
being constructed: bfs_read_node() created an Inode object independent from
the one set in new_vnode().
As a work-around (the new VFS layer will introduce some better methods here)
we are now using the bfs_inode.etc field as a pointer to our object - just
like BFS has thought to use this field. If bfs_read_vnode() has to wait for
the inode (because it is being constructed), it will use the "etc" pointer
and don't create it's own Inode object.
Almost all changes made change the API to take this case into account:
- new Inode constructor to be able to be created from a CachedBlock
- CachedBlock now has a Keep() method which suppresses the release_block()
call when the object is destructed.
- a CachedBlock can now be constructed from the contents of another one (by
calling the source's Keep() method).
- Inode::InitCheck() no longer checks the integrity of the bfs_inode - this
is now done by bfs_inode::InitCheck() which is optionally called by the
former (default).
- moved the inline CachedBlock methods out of the class definition (was
too crowded to be readable).
- new Inode::Initialize() which is called by all Inode constructors
- an Inode object now sets a better name for its read/write lock.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3364 a95241bf-73f2-0310-859d-f6bbb57e9c96
object after creation. This enables the Inode constructor to set a better
name for the lock.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3363 a95241bf-73f2-0310-859d-f6bbb57e9c96
log entry - this is only necessary if the buffer is not the one of the
CachedBlock object.
Journal::TransactionDone() now properly aborts transactions if possible,
instead of just writing them to disk (does only work if the log entry
was not used by other transactions already).
Added a comment about how to speed up writing the log entries a bit more
(though it's not so easy to do, and might not be much faster).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3362 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed a wrong printf argument (block number is %Ld) in release_block().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3361 a95241bf-73f2-0310-859d-f6bbb57e9c96
there is a slow drive. Note, if the system is heavily used and the thread
waiting for the inode to become unbusy is a real time thread, that time
might be not enough - don't have a better solution at hand though (other
than waiting even longer).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3346 a95241bf-73f2-0310-859d-f6bbb57e9c96
thanks to Bruno for pointing me in the right direction (that has probably cost
him several hours of his life ;-))!
Yes, it was that complicated to fix it...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3345 a95241bf-73f2-0310-859d-f6bbb57e9c96
The fs_shell is now able to start up to 10 concurrent live queries. Use
"stopquery" to stop them all or just one of them, "startquery" to initiate
one, and "lsquery" to display them all.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3334 a95241bf-73f2-0310-859d-f6bbb57e9c96
jam itself will also be checked then, which cries out loud for a better way to
do this. But hey, it works :-)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3333 a95241bf-73f2-0310-859d-f6bbb57e9c96
of the block bitmap could be computed wrong - this could cause all sorts
of errors like: overwriting data, creating the "new_vnode with different
cookie" problem, etc.
Should really be the last bug in that piece of code ;-P
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3331 a95241bf-73f2-0310-859d-f6bbb57e9c96
non-indexed attributes now finally work as they should.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3330 a95241bf-73f2-0310-859d-f6bbb57e9c96
whatever reason).
Index::Update() is now allowed to be called for those indices - in this case
it will just update all live queries.
Added some comments.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3329 a95241bf-73f2-0310-859d-f6bbb57e9c96
it has a different data set).
Improved the kernel's PANIC() function (now accepts varargs).
sys_open_query() now has a flags field (that can be set to B_LIVE_QUERY).
The fs_shell now supports one live query; might be enhanced later to support
more than just one (concurrently).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3318 a95241bf-73f2-0310-859d-f6bbb57e9c96
objects automatically.
Also added a new OBOS_BOOT_LIB variable - might be changed again in the
future, though.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3254 a95241bf-73f2-0310-859d-f6bbb57e9c96
since they are implemented in the libroot's os/arch directory.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3235 a95241bf-73f2-0310-859d-f6bbb57e9c96
against reinclusion - possibly because GCC's stdarg.h act differently
when certain symbols are defined.
Anyway, that fixes the issue for now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3207 a95241bf-73f2-0310-859d-f6bbb57e9c96
just returns the contents of the time base register, and the TLS implementation
is only working correctly for single threaded applications. Enough for testing,
at least.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3202 a95241bf-73f2-0310-859d-f6bbb57e9c96
The PPC version can now be built - but of course, it doesn't work yet.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3167 a95241bf-73f2-0310-859d-f6bbb57e9c96