History log of /haiku/src/add-ons/kernel/file_systems/userlandfs/server/Volume.cpp
Revision Date Author Comments
# a735bdeb 31-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Align all filesystem relevant places to use B_UNSUPPORTED for unsupported
instead of a mix of B_NOT_SUPPORTED and B_UNSUPPORTED. This allows checking for
a specific error code. Probably one of those should be phased out...


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


# 3cf43c26 25-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the fs_vnode_ops::create_dir() parameter for returning the ID of the
newly created dir. The VFS really doesn't need it and for some file systems
it might not be easy to get by. Several file systems (e.g. rootfs and fat)
were ignoring the parameter anyway.


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


# 4649fe05 17-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Haiku kernel interface emulation: Retrieve the capabilities for each vnode.
We do some caching using a hash table indexed by the operations vector.
* Pass the vnode capabilities to the kernel module.
* In the kernel tailor the operation vectors for volumes and vnodes passed to
the VFS according to the respective capabilities. This way those vectors look
pretty much like those from the client FS. This saves unnecessary calls when
hooks are not implemented and should also fix compatibility problems in cases
where not implementing a hook and returning an error don't mean the same to
the VFS.
* Inlined some of the kernel module Volume class getters.


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


# c76e8d36 15-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Implemented forwarding the do_iterative_fd_io() callbacks to userland.
* Pass the request offset and length with the DoIORequest. This allows us to
already get the first vecs for do_iterative_fd_io() in userland, saving a
trip back and forth.


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


# 7c1ffcb9 13-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* The nature of asynchronous I/O is to be asynchronous. So we can't store
an on-stack structure for the request in a hash table when forwarding the
io() hook. Create a new object (HaikuKernelIORequest) instead and store it
in a hash table in HaikuKernelFileSystem.
* Some work on the userland side of do_iterative_fd_io().
* Added some missing requests in UserlandFSUtil::is_{kernel,userland}_request().


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


# f1c6ce08 10-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Implemented the userland side for propagating the io() and cancel_io() hooks.
* Implemented io_request_is_write().


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


# 9accd619 01-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* FileSystem does now have a list of all volumes. This allows to get a volume
by ID.
* Added a three parameters version of UserlandFS::KernelEmu::publish_vnode(),
which is used by the BeOS new_vnode() emulation. It calls the new
Volume::GetVNodeType() to get the type of the node.

Theoretically BeOS FS interface style add-ons should work again, but ATM we
crash the kernel when trying to mount.


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


# f6583b4a 27-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Got rid of no longer needed LookupNoType(). The lookup hook doesn't doesn't
have a type return parameter anymore.


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


# cdebdeb0 25-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Some more work towards adjusting the UserlandFS to the current FS interface:
* Split the FSCapabilities bit mask into three bit masks for the FS, the
volume, and the vnodes, since we have three independent FS interface
structures, now. The latter is not supported in the kernel add-on, yet.
* Server:
- Temporarily removed some things from the build (the BeOS interface
and the cache implementations).
- Some WIP in HaikuKernelVolume and [haiku_]kernel_emu.{h,cpp}.
- Added HaikuKernelNode, which wraps fs_vnode for the client FS.
The server is still quite a bit away from being buildable again.


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


# 245aecda 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


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


# ed07b9c7 02-Apr-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

The last missing hooks -- get_vnode_name(), write_attr_stat() and
rewind_query() -- are passed to the userland. get_vnode_name() has an
emulation in userland, in case the client FS doesn't implement it.


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


# 617ed3e4 28-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# ca6faf49 27-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# 8474904e 27-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 5d3147f6 26-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# a735bdebb94ce14c72f56204f022038de7a49e2f 31-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Align all filesystem relevant places to use B_UNSUPPORTED for unsupported
instead of a mix of B_NOT_SUPPORTED and B_UNSUPPORTED. This allows checking for
a specific error code. Probably one of those should be phased out...


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


# 3cf43c26516b695e35b7433196a530f7541c4ca8 25-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the fs_vnode_ops::create_dir() parameter for returning the ID of the
newly created dir. The VFS really doesn't need it and for some file systems
it might not be easy to get by. Several file systems (e.g. rootfs and fat)
were ignoring the parameter anyway.


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


# 4649fe05ef03c9981231538121df35aab32f2bc0 17-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Haiku kernel interface emulation: Retrieve the capabilities for each vnode.
We do some caching using a hash table indexed by the operations vector.
* Pass the vnode capabilities to the kernel module.
* In the kernel tailor the operation vectors for volumes and vnodes passed to
the VFS according to the respective capabilities. This way those vectors look
pretty much like those from the client FS. This saves unnecessary calls when
hooks are not implemented and should also fix compatibility problems in cases
where not implementing a hook and returning an error don't mean the same to
the VFS.
* Inlined some of the kernel module Volume class getters.


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


# c76e8d36fb69fa88a01ff734f45523c36629af17 15-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Implemented forwarding the do_iterative_fd_io() callbacks to userland.
* Pass the request offset and length with the DoIORequest. This allows us to
already get the first vecs for do_iterative_fd_io() in userland, saving a
trip back and forth.


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


# 7c1ffcb9ec70c1bb997a4ecb9a9af82d5a657297 13-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* The nature of asynchronous I/O is to be asynchronous. So we can't store
an on-stack structure for the request in a hash table when forwarding the
io() hook. Create a new object (HaikuKernelIORequest) instead and store it
in a hash table in HaikuKernelFileSystem.
* Some work on the userland side of do_iterative_fd_io().
* Added some missing requests in UserlandFSUtil::is_{kernel,userland}_request().


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


# f1c6ce08f25483b1c3f0623e9f203b08222bf936 10-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Implemented the userland side for propagating the io() and cancel_io() hooks.
* Implemented io_request_is_write().


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


# 9accd619b893cbb1ca577e1230ec77e988460f13 01-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* FileSystem does now have a list of all volumes. This allows to get a volume
by ID.
* Added a three parameters version of UserlandFS::KernelEmu::publish_vnode(),
which is used by the BeOS new_vnode() emulation. It calls the new
Volume::GetVNodeType() to get the type of the node.

Theoretically BeOS FS interface style add-ons should work again, but ATM we
crash the kernel when trying to mount.


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


# f6583b4a179ce636b3caef4505e76baff1256e62 27-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Got rid of no longer needed LookupNoType(). The lookup hook doesn't doesn't
have a type return parameter anymore.


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


# cdebdeb0aa35c9eabf093024474c865ce9bd6840 25-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Some more work towards adjusting the UserlandFS to the current FS interface:
* Split the FSCapabilities bit mask into three bit masks for the FS, the
volume, and the vnodes, since we have three independent FS interface
structures, now. The latter is not supported in the kernel add-on, yet.
* Server:
- Temporarily removed some things from the build (the BeOS interface
and the cache implementations).
- Some WIP in HaikuKernelVolume and [haiku_]kernel_emu.{h,cpp}.
- Added HaikuKernelNode, which wraps fs_vnode for the client FS.
The server is still quite a bit away from being buildable again.


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


# 245aecda8ac43fc2c0c0bac6a7e4016efa9b71e1 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


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


# ed07b9c7e338367449b81e28a8d2114f07666c1c 02-Apr-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

The last missing hooks -- get_vnode_name(), write_attr_stat() and
rewind_query() -- are passed to the userland. get_vnode_name() has an
emulation in userland, in case the client FS doesn't implement it.


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


# 617ed3e4a9ea91cf5be9b9e55d465840c36b1639 28-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# ca6faf4958b94cfc53255e99e4868c110837da4e 27-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# 8474904ee0f43a32780687a6648c5b1a9b77b3c4 27-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 5d3147f66a54bd98707e1801e6f14cb29de72631 26-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

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