via the private ioctls defined in bfs_control.h.
Detects all kinds of errors, and can correct most of them. It doesn't fix
any errors in the b+trees (like the ones created by an earlier version
of the BPlusTree class ;-), and it also can't fix the "blocks are already set"
error, which occurs if more than one file claims a particular block (or
range of blocks) for itself.
The double indirect data range is not yet supported, so use with care, or
run the original chkbfs afterwards to fix any errors because of that.
Might not yet analyze 100% correct (shows way to many errors for my tastes...).
A "chkbfs" command will be made available shortly.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1994 a95241bf-73f2-0310-859d-f6bbb57e9c96
and atomic_test_and_set() for userland testing purposes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1987 a95241bf-73f2-0310-859d-f6bbb57e9c96
the bug where a block_run could get a zero length after merging it...
Updated a comment in Inode::Remove().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1986 a95241bf-73f2-0310-859d-f6bbb57e9c96
block_runs can be merged together.
Added a constant for the maximum length of a block_run.
Added a flag constant to the inode that prevents freeing up its space
after it has been removed - this is only useful for the "chkbfs" stuff.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1985 a95241bf-73f2-0310-859d-f6bbb57e9c96
to use the newly provided function for this.
module.c now also uses the initque() function, some minor cleanups.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1973 a95241bf-73f2-0310-859d-f6bbb57e9c96
Cache::Read() != B_OK failed if the underlying class used that function.
We can now boot R5 with VM turned on without any problems (what a stupid bug).
As a side effect, you can now also mount volumes on your BFS disk, which was
also broken because of this bug.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1930 a95241bf-73f2-0310-859d-f6bbb57e9c96
had some running live queries.
SimpleLock now allows nesting; added some missing atomic operations to
make its implementation as easy as possible.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1901 a95241bf-73f2-0310-859d-f6bbb57e9c96
Began to move the tests directory to bfs/ instead of befs/.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1886 a95241bf-73f2-0310-859d-f6bbb57e9c96
weren't moved to the kernel (as owner), so they would be deleted after
the team which almost randomly created them died.
Benaphores are now only used if USE_BENAPHORES is defined - I have renamed
the Benaphore class to Semaphore to take the changed behaviour into account.
Added a Status() method to the Locker class.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1885 a95241bf-73f2-0310-859d-f6bbb57e9c96
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
yet, but the jam problem is gone and some bugs fixed.
We are now using merged objects to bind different functionality together,
which simplified the kernel Jamfile a lot.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1841 a95241bf-73f2-0310-859d-f6bbb57e9c96
kernel_posix_xxx.o, where xxx stands for stdio/stdlib/unistd/...
sleep.c and usleep.c no longer reference sys_() calls directly, but
call the OS functions instead (snooze_until(), and system_time()).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1839 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed some minor a larger issues (one memory corruption due to the use of FD_ZERO()).
notify_select_event() is no longer binary compatible (hasn't been used on R5).
Added syscalls for select/poll in the syscall dispatcher.
Fixed some debug output in fd.c, adapted for the new notify_select_event()
call.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1831 a95241bf-73f2-0310-859d-f6bbb57e9c96
Broke binary compatibility for the notify_select_event(), since it obviously
hasn't been used on R5 at all.
The new API/implementation is much nicer to use.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1830 a95241bf-73f2-0310-859d-f6bbb57e9c96
to the build because I still need to look into those build issues...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1812 a95241bf-73f2-0310-859d-f6bbb57e9c96
Not yet added to the build because other stuff is missing, and there is
a problem with jam I have to sort out before I add the missing things.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1781 a95241bf-73f2-0310-859d-f6bbb57e9c96
Implemented realloc().
Adapted all other sources, some minor cleanups in some files as well.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1773 a95241bf-73f2-0310-859d-f6bbb57e9c96
You now need to include malloc.h (or stdlib.h) and use malloc(), free(),
and strdup().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1772 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed the StringItem.h header to be compatible with BeOS.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1758 a95241bf-73f2-0310-859d-f6bbb57e9c96
hash implementations in that file... we should really remove one of them.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1747 a95241bf-73f2-0310-859d-f6bbb57e9c96
Not yet tested.
Moved the CHECK_USER_ADDRESS() macro from vfs.c to kernel.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1746 a95241bf-73f2-0310-859d-f6bbb57e9c96
Changed module.c and int.c to use that one.
Some minor cleanups in module.c.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1744 a95241bf-73f2-0310-859d-f6bbb57e9c96
the VFS - BeOS don't have poll() at all, so we can freely choose them.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1743 a95241bf-73f2-0310-859d-f6bbb57e9c96
header kqueue.h - together with their implementation which was in module.c
Added a new CHECK_USER_ADDRESS() macro that can be used to check if a
user address points into the kernel.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1742 a95241bf-73f2-0310-859d-f6bbb57e9c96
also contains the pselect() prototype.
Added new header file sys/time.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1736 a95241bf-73f2-0310-859d-f6bbb57e9c96
%lld is now int64 as well.
Cleaned up a little bit (removed K&R style prototypes).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1671 a95241bf-73f2-0310-859d-f6bbb57e9c96
FreeBSD sources.
Added llabs() (and a newline at the end of the file).
Fixed qsort.c and removed the unneeded FreeBSD header - min() wasn't declared.
Added the string conversion stuff to the build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1665 a95241bf-73f2-0310-859d-f6bbb57e9c96
not available in BeOS, so there is no reason to add them).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1663 a95241bf-73f2-0310-859d-f6bbb57e9c96
Removed deprecated strtoq() functions (they are not even part of BeOS, so
why should we include this cruft?).
Added prototypes for llabs(), and lldiv() - added lldiv_t to div_t.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1661 a95241bf-73f2-0310-859d-f6bbb57e9c96
prototypes (and those commented out), to keep the whole project be compilable
and usable on BeOS.
Fixed a bug in fcntl.h (definition for O_DIRECT), added new O_MOUNT.
Added prototypes and "struct tm" to time.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1619 a95241bf-73f2-0310-859d-f6bbb57e9c96
and Free() methods which operate on the AllocationBlocks.
BlockAllocator::AllocateBlocks() couldn't correctly reserve space for allocation
groups with more than 2 blocks - AllocationGroup::Allocate() now can, which
is now used by AllocateBlocks() (but it's slightly less fast).
Began implementing functionality for a chkbfs-like command.
Some style changes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1603 a95241bf-73f2-0310-859d-f6bbb57e9c96
$ 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
Implemented index syscall functions in VFS.
Added fs_index.c to the build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1566 a95241bf-73f2-0310-859d-f6bbb57e9c96
Commented system_time() in time.c - it's already implemented in atomic.S (not
that it would belong there).
Fixed linking of rewind.c
Added syscalls for the index functions.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1565 a95241bf-73f2-0310-859d-f6bbb57e9c96
errno if an error occurs; they don't return the error status directly.
Also fixed a fd leak in fs_open_attr_dir().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1563 a95241bf-73f2-0310-859d-f6bbb57e9c96
Corrected the prototype for fs_rewind_index_dir() (don't copy and paste...)
Also checked in the syscall definitions for the signal stuff to save Angelo
some work.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1562 a95241bf-73f2-0310-859d-f6bbb57e9c96
Renamed sys_read_stat() to sys_read_path_stat() - sys_read_stat() is now
the fd operation (same for the corresponding write call).
Removed the sys_write_attr_stat() call because it is no longer needed.
Added stat(), fstat(), and other POSIX calls to the kernel - many are still
missing (mainly from stdio).
Added symbols (but no implementation) for unistd.h's process id functions.
Adapted libroot calls that used sys_read_stat() before to the new architecture.
module.c and bus_man.c now use stat() directly instead of the sys_read_path_stat()
call.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1555 a95241bf-73f2-0310-859d-f6bbb57e9c96
Renamed sys_read_stat() to sys_read_path_stat() - sys_read_stat() is now
the fd operation.
Removed the sys_write_attr_stat() call because it is no longer needed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1554 a95241bf-73f2-0310-859d-f6bbb57e9c96