#
ec598fe4 |
| 28-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added FS interface hooks io() and cancel_io(). The former is supposed to provide asynchrounous (or only synchronous, if asynchronous is not supported) I/O request support. It will eventually re
* Added FS interface hooks io() and cancel_io(). The former is supposed to provide asynchrounous (or only synchronous, if asynchronous is not supported) I/O request support. It will eventually replace {read,write}_pages(). None of the FS implementations implement them yet. * Implemented some support functions for request-based I/O. File system implementations can use do_fd_io() which passes an I/O request to the layer responsible for a given FD, and do_iterative_fd_io(), which translates a request for a file to subrequests for the underlying device and passes them on. Both fall back to synchrounous processing when the io() hook is not supported. Furthermore added vfs_synchronous_io() which should be handy for the devfs to perform io_requests synchronously for devices that don't support the io() hook.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26655 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
e6bd90c5 |
| 23-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* bfs_fsync() was the only place which could cause the fs_vnode_ops::write_pages() to be called with fsReenter = true. Since this is no longer the case, the argument has become superfluous. For
* bfs_fsync() was the only place which could cause the fs_vnode_ops::write_pages() to be called with fsReenter = true. Since this is no longer the case, the argument has become superfluous. For read_pages() it always was. Removed the argument from the functions and all functions that propagated it. * Some whitespace at the end of lines was removed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26579 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
60f2ef17 |
| 13-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added "partition_id partition" field to fs_volume, so that file systems can get the partition they reside on easily. * Updated TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26401 a9
* Added "partition_id partition" field to fs_volume, so that file systems can get the partition they reside on easily. * Updated TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26401 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
1da9f5ce |
| 10-May-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added BDiskSystem::ShortName() and everything needed to get it there. * Added BDiskDeviceRoster::GetDiskSystem() method, that can get a disk system by short/pretty/module name - since they should
* Added BDiskSystem::ShortName() and everything needed to get it there. * Added BDiskDeviceRoster::GetDiskSystem() method, that can get a disk system by short/pretty/module name - since they should all be unique, I put them in a single namespace, please complain if you don't like that :-) * Cleaned up DiskSystem.h and DiskDeviceRoster.h according to the updated header guidelines. * Renamed ntfs pretty name from "ntfs File System" to "Windows NT File System".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25414 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
24280972 |
| 30-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed superfluous uint32 ref parameter from select() FS hook.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25268 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7ffafac8 |
| 05-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Reorganized the FS interface a little: - Moved most file_system_module_info hooks into separate structures. Those that operate on mounted volumes to fs_volume_ops, those operating on a vn
* Reorganized the FS interface a little: - Moved most file_system_module_info hooks into separate structures. Those that operate on mounted volumes to fs_volume_ops, those operating on a vnode to fs_vnode_ops. - Got rid of the fs_volume, fs_cookie, fs_vnode typedefs. We use void* again. - Instead of a void* volume and node cookie hooks are passed a fs_volume and fs_vnode structure pointer, which contain the cookie and an ops pointer (fs_volume a few more things). - The VFS {new,publish,get,...}_vnode() functions take a fs_volume* instead of the volume ID. So does vfs_get_fs_node_from_path(). - Added type and flags arguments to publish_vnode() and the get_vnode() hook and removed the type argument from lookup() hook. Added vnode::type using formerly unused bits to store the node type. Simplified a few things in the VFS due to the now always available node type. - Added fs_volume_ops::{create,delete}_sub_vnode() and fs_vnode_ops::get_super_vnode() hooks. They are used to support file system layers, e.g. allowing to extend an FS not supporting BeOS attribute with attribute support. Needs some more work in the VFS. - Added fs_vnode_ops::create_special_node() hook for creating special nodes (e.g. FIFOs). * Adjusted the built-in file systems and BFS according to the interface changes. Removed all other FSs from the image for the time being. We'll see whether further API changes are necessary before porting them. * Adjusted the bfs_shell accordingly. * Implemented create_special_node() in rootfs to support special nodes. * Added support for FIFOs: - Added syscall _kern_create_fifo() (used by mkfifo()), which creates a special node (type S_IFIFO) in the respective file system. - When a special node is published the VFS creates a respective sub node. Currently only FIFOs are supported. - Added a little support for FIFO subnodes by using functionality from the pipefs. - Added mkfifo to the image. It can create FIFOs in the rootfs, but the FIFOs aren't really usable ATM, since they still work like pipes, i.e. readers and writers need to have them open at the same time. * Some smaller changes in the VFS: - Made the *_CALL macros nicer to use (vargs). - Refactored FS entry lookup into new function lookup_dir_entry(). - create_vnode() no longer just calls the FS create() hook. First it looks up the entry and uses open_vnode(), if it already exists. This is necessary for two reasons: 1) The FS might not support create() while still allowing to open() entries. 2) When the FS has other layers on to of it (or the respective node) it might not be responsible for opening the node.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24816 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
a121b8c8 |
| 24-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added a new flag for write stat: B_STAT_SIZE_INSECURE that allows a file system to not fill newly created space with zeros. BFile::SetSize() now uses this, while [f]truncate() does not. This
* Added a new flag for write stat: B_STAT_SIZE_INSECURE that allows a file system to not fill newly created space with zeros. BFile::SetSize() now uses this, while [f]truncate() does not. This is only a temporary work-around until BFS supports sparse files. * Apps that want to reserve space to fill up later should use BFile::SetSize() for now, as this will be a lot faster than [f]truncate(). * cache_io() and the functions below now use a special mode when you pass in a NULL buffer: for read access, the cache is only populated (useful for prefetching), for write access, the file is filled with zeros. * Implemented BFS's Inode::FillGapWithZeros() using this method now. * Removed extraneous white space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24555 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
5e2ef462 |
| 24-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Got rid of the duality of FS_WRITE_STAT_* vs. B_STAT_* flags (removed the former ones). * Removed extraneous white space. * net_server settings are now also updated when the size of the file c
* Got rid of the duality of FS_WRITE_STAT_* vs. B_STAT_* flags (removed the former ones). * Removed extraneous white space. * net_server settings are now also updated when the size of the file changed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24552 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
3d268eda |
| 10-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* Extracted file_map API out of the file cache - it's now an optional service that can be used by file systems. * Changed the way the file cache works: instead of reading/writing to the underlyin
* Extracted file_map API out of the file cache - it's now an optional service that can be used by file systems. * Changed the way the file cache works: instead of reading/writing to the underlying device directly, it can now be used for any data source, ie. also network file systems. * As a result, the former pages_io() moved to the VFS layer, and can now be called by a file system via {read|write}_file_io_vec_pages() (naming suggestions are always welcomed :-)). It now gets an FD, and uses that to communicate with the device (via its fs_{read|write}_pages() hooks). * The file_cache_{read|write}() functions must now be called without holding an I/O relevant file system lock. That allows the file cache to prepare the pages without colliding with the page writer, IOW the "mayBlock" flag can go into the attic again (yay!). * This also results in a much better performance when the system does I/O and is low on memory, as the page writer can now finally write back some pages, and that even without maxing out the CPU :) * The API changes put slightly more burden on the fs_{read|write}_pages() hooks, but in combination with the file_map it's still pretty straight forward. It just will have to dispatch the call to the underlying device directly, usually it will just call its fs_{read|write}_pages() hooks via the above mentioned calls. * Ported BFS and FAT to the new API, the latter has not been tested, though. * Also ported the API changes to the fs_shell. I also completely removed its file cache level page handling - the downside is that device access is no longer cached (ie. depends on the host OS now), the upside is that the code is greatly simplified.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22886 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
bf95c9ae |
| 07-Oct-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* The shadow_changed() FS and partitioning system hooks take an additional partition_data* child parameter now. * _user_get_partitionable_spaces() doesn't need to copy the buffer into the kernel,
* The shadow_changed() FS and partitioning system hooks take an additional partition_data* child parameter now. * _user_get_partitionable_spaces() doesn't need to copy the buffer into the kernel, since it is no input parameter. It also copies back the actual partitionable spaces count on error, now -- B_BUFFER_OVERFLOW is returned when the buffer was too small, but then the count must be returned too. * Fixed several instances of syscall implementations that unloaded a disk system, although they didn't load it in the first place. This screwed up the load count with undesirable consequences. * _user_create_child_partition() would set the size to the supplied offset. * Fixed broken loop in KPhysicalPartition::CreateShadowPartition(). * KPartition::RemoveChild() notified the listeners about the wrong event. * Intel partitioning module: - The *_get_partitionable_spaces() correctly return B_BUFFER_OVERFLOW now, if the supplied buffer is too small. - Implemented a part of pm_shadow_changed(), which creates and updates the PartitionMap, so that the validate_*() hooks have a chance to work at all.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22475 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
db5c68ca |
| 04-Oct-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added the partition size as parameter to the file and partitioning system initialize() hooks. It's often the only info about the partition one needs and thus locking the partition just to get i
* Added the partition size as parameter to the file and partitioning system initialize() hooks. It's often the only info about the partition one needs and thus locking the partition just to get it is no longer necessary. * intel partitioning system: - Removed passing around block sizes. We require 512 byte sectors anyway. In fact using the parent partition's block size was even wrong. - Simplified writing the partition map sector. - Simplified and corrected the partition map initialization. - We don't fail identifying a partition anymore, if the partition map contains no partitions. We would never identify a freshly initialized partition map before. - Made pm_identify() more intelligent: It determines the priority to return depending on whether the partition is the device itself and whether we have recognized child partitions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22447 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
3e9513aa |
| 04-Oct-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* fs_{write|read}_pages() now has an additional argument "mayBlock". * the page writer don't allow to block, while all other writers do. This fixes bug #1509. The reason the page writer needs this
* fs_{write|read}_pages() now has an additional argument "mayBlock". * the page writer don't allow to block, while all other writers do. This fixes bug #1509. The reason the page writer needs this is because it marks several pages from different caches as busy. * Fixed a warning about ASSERT being defined already in BFS, since util/DoublyLinkedList.h now includes debug.h.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22434 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
76a8ec23 |
| 22-Aug-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added disk system flags for whether a partition name and partition content name are supported. * Added file_system_module_info::flags (analogously to partition_module_info::flags) which indicat
* Added disk system flags for whether a partition name and partition content name are supported. * Added file_system_module_info::flags (analogously to partition_module_info::flags) which indicate which disk device features the FS supports. * Replaced the file_system_module_info/partition_module_info::supports_*() hooks by a get_supported_operations() hook and for partitioning systems additionally a get_supported_child_operations() hook. * Updated file and partitioning systems accordingly. * Updated fs_shell accordingly. * Updated the DDM accordingly. The syscall interface remains unchanged, though. * _user_supports_initializing_partition() also checks whether the parent partitioning system is content now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22043 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
9e12e9a7 |
| 02-Aug-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added mapping of dup() in the FS shell. * Adjusted the FS initialize() hook to have FD and partition_id parameters like the other hooks instead of the partition path. * Adjusted initialization in
* Added mapping of dup() in the FS shell. * Adjusted the FS initialize() hook to have FD and partition_id parameters like the other hooks instead of the partition path. * Adjusted initialization in BFS accordingly. * Implemented the FS initialization method in KFileSystem.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21788 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
7a1b4ef3 |
| 05-Jul-2007 |
Axel Dörfler <axeld@pinc-software.de> |
Obviously forgot to commit these; they were part of the mount_id/vnode_id to dev_t/ino_t conversion.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21568 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2f925372 |
| 06-Mar-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
One unremove_vnode() prototype shall suffice.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20339 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cf4ccd65 |
| 05-Mar-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
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
|
#
12d359b8 |
| 05-Mar-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* 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 unimple
* 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
show more ...
|
#
9481e62b |
| 02-Mar-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
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-f6bbb5
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
show more ...
|
#
223bba10 |
| 28-Feb-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Resurrected is_vnode_removed().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20256 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1fbe3ccd |
| 24-Feb-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* 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 re
* 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
show more ...
|
#
97e06971 |
| 12-Apr-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Added a "reenter" parameter to the {read|write}_pages() functions to give file systems a chance to know if they have locked already. This fixes a locking problem in BFS where one thread tried to acqu
Added a "reenter" parameter to the {read|write}_pages() functions to give file systems a chance to know if they have locked already. This fixes a locking problem in BFS where one thread tried to acquire two read locks (where someone else trying to acquire a write lock would have caused a dead lock).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17108 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
47f39c93 |
| 23-May-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Merged the disk device manager module interface for file systems with the VFS's interface, so that a file system only has to implement one interface. As a side effect, the automatic file system detec
Merged the disk device manager module interface for file systems with the VFS's interface, so that a file system only has to implement one interface. As a side effect, the automatic file system detection may now work (not yet tested, though).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12786 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
219dacab |
| 06-Apr-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Changed our read link syscall and FS interface call to make it easily possible to be POSIX compliant. Also changed readlink() to be POSIX compliant with those changes. "ls -l" does now resolve links
Changed our read link syscall and FS interface call to make it easily possible to be POSIX compliant. Also changed readlink() to be POSIX compliant with those changes. "ls -l" does now resolve links properly again (the new coreutils version outlined the problems).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12263 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
cbc6d404 |
| 17-Mar-2005 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added missing select()/deselect() Hooks to the file system interface and made sure they are called by the VFS, if existent.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11884 a95241bf-73f2-0
Added missing select()/deselect() Hooks to the file system interface and made sure they are called by the VFS, if existent.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11884 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|