Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold 7a4de3f182 Added a Haiku file cache implementation to the UserlandFSServer.
Basically reused the kernel implementation, but needed to hack it quite
a bit and also add an emulation of the required VM interface.
Completely untested yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-23 00:09:55 +00:00
Ingo Weinhold 27810ccf5e Added the last useful features I dare imagine: A Lock() method and the
possibility to initialize the AutoLocker without locking the object even
if it is unlocked yet. Especially in loops Lock()/Unlock() come handy
when an otherwise constantly hold lock needs to be unlocked for a short
time.

I suppose we should move the kernel utils AutoLocker implementation
to headers/private/shared, and drop the less powerful ObjectLocker.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20405 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-23 00:03:59 +00:00
Ingo Weinhold 529bf4045b In a copy-on-write situation a page from a lower cache must always be
mapped fully read-only (for both kernel and userland). Previously a
kernel read access to a yet unmapped r/w accessible userland address
would cause the page from the lower cache to be mapped with write
permission for userland (on x86 also for the kernel) thus e.g.
allowing a fork()ed child process to write to the parent process'
memory.

Fixes bugs #113 and #928.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-21 19:48:38 +00:00
Ingo Weinhold 34ce586692 "Clean room" test for a "copy on write" problem leading to bugs #113
and #928. Under certain conditions a fork()ed child process can
write to the parent process' memory.
A fix follows...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-21 19:36:34 +00:00
Ingo Weinhold 44b5d72b5a Added new functions to the debugger API:
{set,clear}_debugger_{break,watch}point(), allowing to set/clear break
and watchpoints for the calling team. When a break/watchpoint is hit,
the team enters the debugger. Handy in situations when the program in
question can't really be started in a debugger (or it would be
complicated to do so). The functions work only as long as no debugger is
installed for the team.

We clear the arch specific team and thread debug infos now, when a new
debugger is installed, thus clearing break- and watchpoints.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-20 16:20:13 +00:00
Ingo Weinhold 467b8adffa For some reason a Terminal started by Tracker or Deskbar does not have a
valid stderr. Thus one of the FDs for the pipes created for the initial
handshake with the fork()ed child process exec()ing the shell would have
number 2 and would be closed when the child process set up the
stdin/out/err environment for the shell, leading to the child and the
parent being killed by a SIGPIPE when they tried to access the pipes.

This change replaces the pipes mechanism by one using send/receive_data(),
which is probably even faster. I also reduced the handshake_t::msg field
to 128 bytes and replaced the sprintf()s writing to it by snprintf()s.

Fixes bug #627. Although they looked related, bugs #113 and #928 still
persist.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-19 18:25:56 +00:00
Ingo Weinhold 15a62f7c61 gcc 4 fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20387 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-14 20:37:07 +00:00
Ingo Weinhold 2c97a8d164 Use -I instead of -isystem for system header directories when building
with gcc 4. Fixed resulting build errors (gcc is more lenient for
headers in -isystem directories).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20386 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-14 20:36:42 +00:00
Ingo Weinhold e4b4574f41 Reordered somewhat unhealthy looking if-construct (first
"currentPage->state == ..." then "currentPage != NULL").


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20377 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-12 12:23:45 +00:00
Ingo Weinhold 73a3220667 Incorporated hash and block cache changes of r20368 and r20374.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20375 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-12 08:32:47 +00:00
Ingo Weinhold 1f78f00899 We can build the ReiserFS add-on with Haiku interface for the userland,
too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:23:40 +00:00
Ingo Weinhold f0bc043b2a Ported the ReiserFS code to the Haiku FS interface. Removed the built-in
block cache.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20372 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:22:34 +00:00
Ingo Weinhold 43c46e9380 Copy'n'paste leftovers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:21:15 +00:00
Ingo Weinhold d0c61f232b More distinctive header guard.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:20:23 +00:00
Ingo Weinhold 824e907a2c Added Haiku block cache interface to the UserlandFS server. Basically
copied and adjusted the respective kernel code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 15:04:53 +00:00
Ingo Weinhold 9781d591cb Include <util/kernel_cpp.h> in DoublyLinkedList.h only when compiling
for the kernel. Added missing includes in userland code that uses the
header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 13:56:45 +00:00
Ingo Weinhold e1555e1fdf get_cached_block(): Remove the newly allocated block from the
hashtable in case of a read error (NewBlock() also adds the block,
but FreeBlock() only frees it).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20365 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 13:51:18 +00:00
Ingo Weinhold bf4604c363 Fixed incorrect loop conditions in [un]lock_memory(). If the given
start address wasn't aligned and numBytes was a multiple of the page
size, the last page was ignored. A subsequent get_memory_map() would
return NULL as physical address for that page, if it hadn't been mapped
before (that function looks generally suspicious, IMHO). E.g. reads from a
device into an unaligned buffer that hadn't been touched before would
hit that problem. Fixes bug #1075. Might also fix other reported
problems (like #1056), since this bug could have cause all kinds of weird
behavior and crashes. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-09 21:40:56 +00:00
Ingo Weinhold 517df2f7f3 Added a list of tools directly or indirectly required to build Haiku.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-09 14:07:27 +00:00
Ingo Weinhold fd87740ca0 Removed mentioning of non-BeOS platforms in the "Configuring on BeOS"
section.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-08 19:28:06 +00:00
Ingo Weinhold cdf5f77bab HaikuSubInclude in action.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20353 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 16:02:16 +00:00
Ingo Weinhold 3f2a43554a * Moved the DeferredSubInclude rules into MiscRules.
* Added new rule HaikuSubInclude for more comfortable subdirectory inclusion.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 16:01:19 +00:00
Ingo Weinhold 446ce41f36 Build RamFS for the Haiku kernel. Seems to work fine. Also fixed some
warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 08:09:27 +00:00
Ingo Weinhold 3fd2e5ccb4 r20337 broke the bfs_shell build (at least on Linux). Scary hack to fix
it which shouldn't break the R5 build again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20350 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 08:02:32 +00:00
Ingo Weinhold 4bf052db56 Removed dummy strtod().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 07:19:27 +00:00
Ingo Weinhold 1822f5ecbc Added strtod() and localeconv() to the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 07:18:51 +00:00
Ingo Weinhold aa6ebf59e0 Reorganized so that both the BeOS and Haiku FS interface of RamFS can be
built for UserlandFS. The latter appears to be working fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20347 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:46:12 +00:00
Ingo Weinhold c7a7242307 *sigh* svn really messed it up. I supposed one should make sure to run
update on the directory to be copied before doing it, even if it is up
to date.

Anyway: Ported RamFS to Haiku's FS interface. Change set apparently merged
with older changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20346 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:40:25 +00:00
Ingo Weinhold 224e7c4269 Mmh, apparently I have to check the copied directory itself in first.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20345 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:22:18 +00:00
Ingo Weinhold 4b997aa15a Ugh! Tested the value of the symlink() symbol instead of the symLink
parameter. Spotted by gcc4. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20344 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:12:57 +00:00
Ingo Weinhold 7b4b242d27 Incorrectly set uid instead of gid.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:10:27 +00:00
Ingo Weinhold 1716d266c5 The read_attr_stat()/write_attr_stat() capabilities were not correctly
set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20342 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:08:48 +00:00
Ingo Weinhold 5b89b67d95 Added missing module initialization/uninitialization.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-06 07:52:24 +00:00
Ingo Weinhold 4ed322c66e * Added support for interfacing with Haiku style FS modules (yet
untested).
* Added library with the relevant part of the Haiku kernel interface.
  The cache interface is missing, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20340 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-06 02:39:34 +00:00
Ingo Weinhold 2f92537221 One unremove_vnode() prototype shall suffice.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-06 01:22:47 +00:00
Ingo Weinhold 4e0e80ed6c We analyze a client FS's capabilities -- i.e. which hooks it provides or
can be emulated -- and pass this info to the kernel add-on. Thus we can
avoid passing requests to the userland that can't be serviced anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20331 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-05 05:16:08 +00:00
Ingo Weinhold cf4ccd6575 Renamed the FS interface hook read_link() to read_symlink().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-05 03:52:57 +00:00
Ingo Weinhold 12d359b85a * Removed write_link from the FS module interface. Adjusted all FS
add-ons accordingly and removed the syscall.
* Removed send_notification().
* Reimplemented notify_listener(). It used the unimplemented
  send_notification(). Now it has a chance to work. Note that
  notify_listener() is obsolete. I would already have removed it, if
  there weren't lots of FS implementations still using it (Hint!).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20329 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-05 00:46:57 +00:00
Ingo Weinhold 5a5aacca23 Added a level of indirection in the FileSystem management
(FileSystemInitializer). This will allow for subclassing FileSystem
later.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20328 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 23:11:02 +00:00
Ingo Weinhold fd7339329f Not needed anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20327 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 21:48:55 +00:00
Ingo Weinhold aa46234e72 Made ReiserFS code gcc 4 friendly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 09:18:55 +00:00
Ingo Weinhold 1ac141b1f8 Made RamFS code gcc4 friendly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 09:02:12 +00:00
Ingo Weinhold 6aeea78c6e Made the UserlandFS code gcc4 friendly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 08:26:45 +00:00
Ingo Weinhold 48d60fa69c Introduced new build system features: The variable HAIKU_DONT_INCLUDE_SRC to
turn off the inclusion of src/Jamfile, and the rule DeferredSubInclude to
include a subdirectory in UserBuildConfig. Together they allow a developer
working on a subproject to reduce jam's parsing time when only building the
subproject. Relevant mostly on BeOS; on Linux jam is pretty fast anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 05:09:59 +00:00
Ingo Weinhold eb9b19800b Fixed gcc 4(.1.2) build problems.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 05:00:40 +00:00
Ingo Weinhold 5ca2f7aa8c gcc 4.1.2 conveniently saves the version number in a separate file.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 04:47:55 +00:00
Ingo Weinhold 30589be58b Added C++ guard. I don't know, why we define the <wctype.h> protos both
there and in <wchar.h>. Any reason for not removing them in <wctype.h>? Or
maybe even nicer reverse the inclusion direction, i.e. remove the
duplicate protos in <wchar.h> and include <wctype.h> instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20317 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 02:31:43 +00:00
Ingo Weinhold 2660a88261 We don't need ufs_mount anymore. One can simply use mount:
mount -t userlandfs -p "<client FS> <client FS params>" ...

The parameters may change later in order to become a proper driver
settings string.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-03 10:26:35 +00:00
Ingo Weinhold 348be5b50b * Introduced the new static lock sVnodeCoveredByMutex to guard the
vnode::covered_by fields. Together with sMountOpLock it allows write
  access, either lock alone suffices for read access. Before
  sMountOpLock had to be acquired for read (and write) access, which
  meant that while mounting/unmounting a FS path resolution would have
  to wait. In case of the UserlandFS this would even cause a deadlock
  while mounting if the client tried to resolve the path of the device
  to be mounted (e.g. by opening it).
* Added a clarifying comment about read access to the
  fs_mount::covers_vnode/root_vnode field and removed locking in
  resolve_volume_root_to_mount_point() which was not necessary for
  explained reasons.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-03 02:42:36 +00:00
Ingo Weinhold bb7ddc43d3 Fixed two query bugs:
* For B_EQUALS queries the first match would be skipped.
* Exact entry name matches were broken, since the used NameIndex::Find()
  expected null-terminated keys with the \0 included in the key length
  while it was fed only the raw string length.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 11:18:14 +00:00
Ingo Weinhold 2f742879c8 * Changed get_vnode_name() to take a dirent* parameter instead of the
name (saves copying the name, if that has to be done anyway) and added a
  wrapper version with the old interface.
* dir_vnode_to_path() was broken for file systems that didn't support
  the get_vnode_name() hook. It resolved the mount point too early, so
  that it was searching the mount point and not the FS root dir for the
  node. It uses the get_vnode_name() function now (before resolving the
  mount point).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 09:34:33 +00:00
Ingo Weinhold cc0bac7f51 We fake read_stat() on the root node and read_fs_info() when the
connection to the server is lost. The former is required by our mount
command (it stat()s the mount point for some reason unknown to me). The
latter is just to be a good citizen.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20300 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 07:09:18 +00:00
Ingo Weinhold 5a31d77f2c read_attr() was broken. We passed a pointer to the node instead of the
cookie.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20299 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 01:45:58 +00:00
Ingo Weinhold 97dd0fe3c8 * Adjusted according to the is_vnode_removed() -> get_vnode_removed()
change.
* The new notification functions are used instead of send_notification()
  and notify_listener() now. Mapped them in the BeOS kernel emulation
  accordingly. RamFS node monitoring seems to work now. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20298 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:41:09 +00:00
Ingo Weinhold 9481e62bdb is_vnode_removed() is now known as get_vnode_removed() and returns its
answer through a reference parameter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20297 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:34:20 +00:00
Ingo Weinhold c8b7e8185a Fixed debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:33:05 +00:00
Ingo Weinhold a5f128e512 There's the supposed "out of memory" problem. Haiku is stricter than
BeOS and rejects create_area() requests with B_ANY_KERNEL_ADDRESS
address specification.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:32:26 +00:00
Ingo Weinhold 042eb16896 * More debug output in the kernel module.
* Made publish_vnode() available in userland. For old style FS add-ons
  publish_vnode() is used when they request a new_vnode(). The semantics
  of new_vnode() changed considerably in Haiku, but publish_vnode()
  seems to do pretty much what the old new_vnode() did.
* The UserlandFS hosted RamFS begins to work under Haiku. It runs pretty
  soon out of memory though (under vmware with 256 MB) and node
  monitoring is broken ATM.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20264 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 04:56:08 +00:00
Ingo Weinhold 32164a180c Set reasonable permissions for the root directory. Haiku seems to be a
bit pickier than BeOS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20263 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 04:46:16 +00:00
Ingo Weinhold 6d3667845f Be nicer to FSs and fill in the known part of the fs_info *after* the FS
had its go. BeOS does the same.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20262 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 02:55:41 +00:00
Ingo Weinhold d8e8d39b71 Variable are data not text. I wonder why that ever worked under BeOS.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20261 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 02:06:31 +00:00
Ingo Weinhold 0c2f529390 Committed accidentally and forgot to fix it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 01:43:05 +00:00
Ingo Weinhold b15ce38615 Fixed debug build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 01:42:14 +00:00
Ingo Weinhold 617ed3e4a9 Implemented the new attribute open/close/... FS hooks. The mapping to the
old interface is completely done in userland ATM.

It becomes more and more obvious that we probably need to provide
the kernel add-on with a bit more information about what the client FS
interface supports in the first place, so we can save unnecessary trips to
the userland. Opening/closing attributes for a FS using the old style
interface could be handled completely in the kernel add-on, for instance
(even if we lose a bit of accuracy wrt to open modes etc.).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 01:16:13 +00:00
Ingo Weinhold 9ce869f45f Welcome back, is_vnode_removed(), old friend!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:26:44 +00:00
Ingo Weinhold 223bba10f3 Resurrected is_vnode_removed().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:24:28 +00:00
Ingo Weinhold 8cda49ebb8 We can apparently build the old style reiserfs and ramfs add-ons using
Haiku's userlandfs. I wouldn't expect them to work very well yet, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20255 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:12:39 +00:00
Ingo Weinhold c10705cbda We do now provide the BeOS style FS add-ons with the kernel interface they
need via library libuserlandfs_beos_kernel.so. Fine-tuned the legacy headers
so they can by used by the the kernel interface emulation code as well as by
the add-ons. This is actually a bit hacky, since we build everything in the
Haiku build environment and thus mix these old headers and Haiku's.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20254 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:07:40 +00:00
Ingo Weinhold 9b54c9d1e3 Removed cache.h, lock.h, and fsproto.h. The copies in the userlandfs public
headers dir are used instead. Added missing <new> inclusion.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 21:50:31 +00:00
Ingo Weinhold ca6faf4958 * Adjusted BeOSKernelFileSystem and BeOSKernelVolume to Haiku's FS interface.
* Moved stuff need for the BeOS interface only into the beos_* namespace.
* Shuffled a few things around to reduce the block cache implementation
  dependencies. compat.h and sysdep.c are gone accordingly.
* The whole UserlandFSServer builds now and could (at least theorectically)
  drive a FS add-on implementing the old interface. The required emulation of
  the BeOS kernel is not yet provided, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20247 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 04:54:13 +00:00
Ingo Weinhold 8474904ee0 Adjusted the FileSystem, Volume, and UserlandRequestHandler to the new FS
interface. The classes actually interfacing with the client FS add-on still
need to be adjusted.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20246 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-27 23:27:27 +00:00
Ingo Weinhold 5d3147f66a Class renaming:
UserFileSystem -> FileSystem
  UserVolume -> Volume
  KernelUserFileSystem -> BeOSKernelFileSystem
  KernelUserVolume -> BeOSKernelVolume

The BeOSKernel* classes are indeed intended to handle FS implementations
that use the (old) BeOS FS interface. We'll see how well that will work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-26 16:26:02 +00:00
Ingo Weinhold 1546cbf149 Moved FileSystem class into the new Dispatcher subnamespace, so we can drop
the "User" part of the way more often used UserFileSystem and the other
classes that had it accordingly for consistency.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20237 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-26 16:00:45 +00:00
Ingo Weinhold b12d25d15d First walk through the userlandfs kernel add-on to port it to the Haiku
FS interface. Adjusted old hooks, but didn't add the new ones yet. The
module builds now at least.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20235 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-26 02:54:05 +00:00
Ingo Weinhold b881d6401c B_VECTOR_ICON_TYPE is already defined for target libbe_test.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20234 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-26 02:48:58 +00:00
Ingo Weinhold f7d29d339b Don't include the grist in libraries' sonames.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20233 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-26 02:47:12 +00:00
Ingo Weinhold c2f0ee7a7b Don't send B_ENTRY_MOVED messages twice, if fromDirectory == toDirectory.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20232 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-26 00:57:45 +00:00
Ingo Weinhold 61381bf71d The kind of comment that saves you half an hour of brooding if you, for some
reason, don't see the obvious. Well, or doesn't if absent...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20230 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-25 20:07:14 +00:00
Ingo Weinhold 1fbe3ccd4e * Reformatted to honor 80 chars/line limit.
* Renamed a few parameters of the FS module hooks:
  - *file in the attribute functions to *vnode
  - v to vnode
  - I could barely restrain myself from renaming the "_*" parameters. I
    understand this marks return parameters, but I'd prefer a nicer prefix
    or suffix (that doesn't makes you think this is a private/internal
    identifier) like "out", "ret", "return", "result", or something similar.

I'd also like to propose renaming {read,write}_link() to
{read,write}_symlink(). Er, and do we need write_link() at all?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20226 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-24 23:05:18 +00:00
Ingo Weinhold 1d0429efd9 Added --ignore-attributes option to cp.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20225 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-24 17:21:46 +00:00
Ingo Weinhold f7100fce9b Fixed BDirectory::Contains() test comments and checks for existing entry
uninitialized/badly initialized BDirectory cases.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-24 16:34:34 +00:00
Ingo Weinhold 0b9da247dc Intermediate check-in. I've decided I rather want to use Pe instead of
Kate for this job. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20222 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-24 15:01:34 +00:00
Ingo Weinhold d5e355eed3 Ignore everything that starts with "generated", so people with several
output directories, like... uh... me, can rejoice. ;-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-24 00:35:27 +00:00
Ingo Weinhold 83812f6752 Copied userlandfs code from the test tree to the haiku source tree,
where it will be ported to Haiku.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20216 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-24 00:30:19 +00:00
Ingo Weinhold 24f10d18b1 Added missing B_ATOM_TYPE AND B_ATOMREF_TYPE.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20212 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-23 23:16:31 +00:00
Ingo Weinhold eef478cd20 Solved a name clash for the poor souls using Windows.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20211 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-23 20:17:48 +00:00
Ingo Weinhold b9a1530f6d Some renaming.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20207 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-23 02:19:41 +00:00
Ingo Weinhold e0f723a9e1 Obsolete file.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20206 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-23 02:11:10 +00:00
Ingo Weinhold 36ca5d166c Squashed a few minor TODOs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20205 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-23 02:10:51 +00:00
Ingo Weinhold e696418178 * Split the Node references and referrers concepts. One can now have a
reference without being a referring entry.
* Reworked entry renaming. We do now remove the original entry first and
  then create a target entry. Renaming directories didn't work before since
  there would temporarily have been two links to a directory, which is not
  allowed. Replacing an entry was also broken: The original entry was not
  removed. Due to reversing the entry creation/deletion order we also do no
  longer suffer from the Tracker bug, that entries would disappear from
  queries when being renamed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20204 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-23 01:01:26 +00:00
Ingo Weinhold 0d427dec46 * Missing locking initialization in Volume::Mount().
* Added missing locking in the query hooks.
* Added live query support similarly as done in BFS:
  - Volume manages a doubly-linked list of live queries.
  - Volume::UpdateLiveQueries() invoked from several places where it makes
    sense (standard indices, Attribute::WriteAt(), and
    BVolume::NodeAttributeRemoved()) notifies the live Query objects.
  - Adjusted Query to be able to deal with hard links. Unfortunately Tracker
    is a bit broken with respect to hard links, particularly in the query
    windows. E.g. only one entry referring to a node is shown, and the renaming
    method RamFS uses (link new entry, then unlink old one) causes renamed
    entries to fall out of queries, even if they should still be in.
    (Want a bug report for this, Axel? :-P)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20203 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-22 23:30:39 +00:00
Ingo Weinhold 49bf073e13 Clarified reading order for non-BeOS platforms.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-22 17:23:06 +00:00
Ingo Weinhold 9756b9b4f0 A jam invocation without given target (or the "all" target) in the output
directory, the build system root directory, or the "src" directory is
now using the "haiku-image" target instead. The variable
HAIKU_ORIGINAL_JAM_TARGETS is set to the original JAM_TARGETS value, so
that a UserBuildConfig can base its decisions on it.
The feature is only available with Haiku's jam version.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20194 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-22 00:59:28 +00:00
Ingo Weinhold eedc3d0be0 Since configuring an unsuitable cross-compiler has become a FAQ lately,
we do now check whether the target the compiler has been configured for
looks compatible.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20189 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-21 14:08:08 +00:00
Ingo Weinhold 72d71bc8dc Aligned Query.h/cpp with the BFS (Haiku) versions r20186. Updated Stack.h
to <util/Stack.h>.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20187 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-20 21:30:27 +00:00
Ingo Weinhold e485fc0347 If a mount request failed (e.g. due to failed authentication) the respective
not-yet-mounted ClientVolume was not removed, which could cause query requests
to crash the server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20184 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-20 17:28:40 +00:00
Ingo Weinhold 100e6cd1ab Good to have an answer: In case of success Directory::CreateFile() causes
new_vnode() to be invoked.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20175 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-20 01:53:29 +00:00
Ingo Weinhold 92864b3702 Consolidated common UserlandFS and RamFS headers and support classes a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20174 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-20 01:25:04 +00:00
Ingo Weinhold cab58350ac Finally added the UserlandFS. This is the BeOS R5 version (might need minor
modifications for BONE/Dan0). As test file systems are included:
* A Reiser FS 3.6 read-only implementation (should be a virtually unmodified
  version released as 1.0.1 on BeBits).
* A not quite finished RAM FS.
* A BeOS-specific networking FS. It works well as far as I've tested it, but
  is utterly insecure at the moment and missing nice GUI preflets. It's also
  amazingly slow which, I hope, is mainly caused by the UserlandFS layer and
  BeOS R5 net server. We'll see as soon as it can be compiled for the Haiku
  kernel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20171 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-19 22:11:25 +00:00
Ingo Weinhold 38979f27b0 * All "GUI servers" (app server, input server, and registrar) will now be
debugged automatically in a consoled session, when they crash. Note,
  that after a recoverable error (like a debugger() call) one can
  "detach" the debugged team in gdb, "quit", and continue as if
  nothing happened. 8-O
* The input server will no longer be killed when starting the debugger
  in a consoled session. Not sure why it was done; it simply works as it
  is now.
* Replaced all printf()s and fprintf()s by debug_printf() or TRACE(()).
  The debug server prints little enough anyway. In fact only when something
  crashes or an unexpected error occurs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20145 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-16 17:03:34 +00:00