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
a bit sketchy here, but will work for now until I figure out the
proper way to do it.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3359 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Accounted for addition of "udf_" to beginning of on-disk structs.
- Accounted for Block<typename> to MemoryChunk change
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3356 a95241bf-73f2-0310-859d-f6bbb57e9c96
on-disk data structures.
- More endian-neutrality conversions
- More dump() functions
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3354 a95241bf-73f2-0310-859d-f6bbb57e9c96
until we get our kernel C++ utils library up and running.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3352 a95241bf-73f2-0310-859d-f6bbb57e9c96
Slightly more typesafe static array type than built-in arrays,
with array length information stored implicitly (i.e. consuming no
physical space in the actual struct) via the arrayLength template
parameter.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3351 a95241bf-73f2-0310-859d-f6bbb57e9c96
parameter in lieu of using reinterpret_cast, which turns out to
be cleaner all in all.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3350 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
bug revealed by those tests. Gotta love those unit tests!
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3327 a95241bf-73f2-0310-859d-f6bbb57e9c96
Add read_buffer() and write_buffer() to access/modify net_buffer data chunks.
Add a split_buffer() function, that will split at a specified offset. To be implemented.
Remove append_buffer(), prepend_buffer() and insert_buffer(), replace by all-purpose
add_to_buffer().
Rename remove_buffer() into remove_from_buffer(), to opposite add_to_buffer()
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3322 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