#
425ac1b6 |
|
20-Jun-2023 |
Alexander von Gluck IV <kallisti5@unixzen.com> |
refactor: Swap %Ld for %lld in all format usages * %Ld is an undocumented alias for %lld in glibc. * muslc doesn't implement it for this reason. * While we will likely never drop %Ld support, lets clean house and set a better example. Change-Id: Id46dad3104abae483e80cc5c05d1464d3ecd8030 Reviewed-on: https://review.haiku-os.org/c/haiku/+/6636 Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk> Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com> Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
|
#
50330091 |
|
29-Jun-2023 |
Augustin Cavalier <waddlesplash@gmail.com> |
bfs: Disable asynchronous IO routine when KDEBUG_RW_LOCK_DEBUG is enabled. See inline comment: it relies on behavior that the assertions cannot track.
|
#
35b40030 |
|
27-Jan-2023 |
Augustin Cavalier <waddlesplash@gmail.com> |
file_systems/fs_ops_support: Add open_mode_to_access. This is duplicated across multiple filesystems, and could probably be used in more still. Adjusted only BFS, EXT2, and NTFS in this commit, as they are the ones which make use of fs_ops_support.h already and thus need to be modified to avoid duplicate-definition errors. Also tweak next_dirent to support being built under fs_shell. (Possibly we should define ASSERT there, though?)
|
#
e285b307 |
|
27-Sep-2022 |
Augustin Cavalier <waddlesplash@gmail.com> |
Introduce a utility function for moving to the next dirent in read_dir. This takes care of making sure the dirent buffer is properly aligned, which it needs to be on some platforms (SPARC, ARM, etc.) Change-Id: I9a6352b1e654c090a200770d51f96511ee024a99
|
#
242fec23 |
|
08-Sep-2022 |
waddlesplash <waddlesplash@gmail.com> |
Revert "bfs: fix alignment of struct dirent" This reverts commit 7fe1087ed4cb54f5e2e5ba3dd3b4b73c7ebc2214. Reason for revert: could cause underflow Change-Id: Ib2263f3ab17ae377b0565d020410bae616385cfe Reviewed-on: https://review.haiku-os.org/c/haiku/+/5577 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
7fe1087e |
|
06-Sep-2022 |
David Karoly <karolyd577@gmail.com> |
bfs: fix alignment of struct dirent This is needed on ARMv7 as inode number is stored using STRD instruction which can result in alignment fault even when SCTLR.A bit is disabled. see ARMARM section A3.2.1, Unaligned data access Change-Id: Ib17bf3f78e84ad7987d8158426bc9b27ded28a8e Reviewed-on: https://review.haiku-os.org/c/haiku/+/5623 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
#
711e2dc0 |
|
01-Dec-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
Adjust all struct dirent creations (again), this time to use offsetof(). The dirent struct is not packed, so offsetof(dirent, d_name) != sizeof(dirent). Thus in order not to waste the alignment bytes (which are significant, on x86_64 at least, sizeof(dirent)==32, but offsetof(...)=26.) This is also the most portable way to handle things, and should work just fine in cross-platform code that has a non-zero-sized d_name.
|
#
9d242fb9 |
|
18-Nov-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
file_systems & Tracker: Do not assume sizeof(dirent) contains 1 byte for the name. At present, it does, but that is an oddity we have preserved from BeOS that the next commit is going to remove. (This commit thus wastes 1 byte without the following one.) Most changes are pretty straightforward: only a +1 is needed, and a few removed from sizing calculations. Some filesystems like UDF originally passed back the length with the \0 included, so they have been adjusted further. UFS2 had some other sizing problems which are also corrected in this commit.
|
#
36aafa56 |
|
04-Dec-2020 |
X512 <danger_mail@list.ru> |
fix build after CObjectDeleter interface change Change-Id: I76e217abcd13c22c4d68170e07333cdde4d7a891 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3461 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
3d43a905 |
|
30-Aug-2020 |
John Scipione <jscipione@gmail.com> |
bfs: Enable logging on DEBUG build Fix DEBUG build errors by using B_PRI macros in BlockAllocator.cpp, CheckVisitor.cpp, Inode.cpp, Journal.cpp, and kernel_interface.cpp Add optional type parameter from BlockAllocator::IsValidBlockRun() and actually PRINT it, type parameter is already optional on BlockAllocator::CheckBlockRun(). Remove a couple of casts as we are printing the expected type, int32. Cast mode_t to (unsigned int) and use %u because 32-bit Haiku didn't like B_PRIu32. Verified to compile on both regular and DEBUG builds on both 32-bit and 64-bit. Change-Id: I8bb39afd400768b7f69d36384974f0b91b3ef48c Reviewed-on: https://review.haiku-os.org/c/haiku/+/3184 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com> Reviewed-by: John Scipione <jscipione@gmail.com>
|
#
93845aec |
|
11-Jun-2020 |
Axel Dörfler <axeld@pinc-software.de> |
block_cache: Change signature of *_etc() functions * This allows file systems to retrieve the actual error code on a failure, and report it to the user. * All affected file systems have been adjusted to the API change. This is a binary incompatible change. Change-Id: Id73392aaf9c6cb7d643ff9adcb8bf80f3037874c Reviewed-on: https://review.haiku-os.org/c/haiku/+/2913 Reviewed-by: Axel Dörfler <axeld@pinc-software.de> Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
f9b218aa |
|
26-May-2020 |
Jérôme Duval <jerome.duval@gmail.com> |
file_systems: fs_read_link() doesn't use a user buffer introduced in hrev26728 and hrev54107. Change-Id: I3e98d54e829bcce559c43a8ee1abe4d889c0a571 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2819 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
e1b7c1c7 |
|
19-Apr-2020 |
Kyle Ambroff-Kao <kyle@ambroffkao.com> |
storage/SymLink: Fix Be API regression in ReadLink After this patch, "UnitTester BSymLink" passes. BSymLink::ReadLink() in BeOS would always return the length of the link unless an error occurred. Before this patch, Haiku instead seemed to emulate posix readlink() behavior, returning the number of bytes copied into the output buffer. BeOS also did not guarantee that the string written into the output buffer is NULL terminated if the output buffer cannot contain the entire link contents, but the Haiku implementation does since it is is a basic safety issue. This patch fixes this and updates the Haiku API docs to describe the behavior explicitly. Fixing this required changing behavior in bfs_read_link, which required changes in many more places. docs/user/storage/SymLink.dox: src/kits/storage/SymLink.cpp: * Don't return B_BUFFER_OVERFLOW if the provided buffer is not large enough to hold the link contents. * Update documentation to clearly describe behavior. src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp: * Change bfs_read_link() to always return the link length. This is called by common_read_link in the VFS, which is called by _kern_read_link(). src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp: src/add-ons/kernel/file_systems/exfat/kernel_interface.cpp: src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp: src/add-ons/kernel/file_systems/iso9660/kernel_interface.cpp: src/add-ons/kernel/file_systems/netfs/client/netfs.cpp: src/add-ons/kernel/file_systems/nfs/nfs_add_on.c: src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp: src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp: src/add-ons/kernel/file_systems/reiserfs/Iterators.h: src/add-ons/kernel/file_systems/reiserfs/Volume.cpp: src/add-ons/kernel/file_systems/reiserfs/Volume.h: * Update the implementation of read_link for these filesystems. Some of them were incorrect, and some had just copied the posix behavior of bfs from before this patch. * Use user_memcpy in ext2_read_link() * Use user_memcpy in nfs fs_read_link() * Use user_memcpy in reiserfs StreamReader::_ReadIndirectItem and StreamReader::_ReadDirectItem * Remove unused method Volume::ReadObject in reiserfs. src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingLeafNode.cpp: src/add-ons/kernel/file_systems/packagefs/package_links/PackageLinkSymlink.cpp: * Update UnpackingLeafNode::ReadSymlink and PackageSymLink::ReadSymLink() to set the bufferSize out parameter to the symlink length. Both of these are called by packagefs_read_symlink. * Use user_memcpy src/add-ons/kernel/file_systems/netfs/client/netfs.cpp: * netfs seems mostly unimplemented. Added a FIXME note for future implementers so that they know to implement the correct behavior. src/system/libroot/posix/unistd/link.c: * readlinkat() was just wrapping _kern_read_link() because before this patch it had expected posix behavior. But now it does not, so we need to return the number of bytes written to the output buffer. src/build/libroot/fs.cpp: * Update _kern_read_link() in the compatibility code to emulate the Haiku behavior on the host system. This is done by using an intermediate buffer that is guaranteed to fit the link contents and returning its length. The intermediate buffer is copied into the output buffer until there is no more room. src/tests/kits/storage/SymLinkTest.cpp: * This patch also resolves some test failures similar to those resolved in ee8cf35f0 which fixed tests for BNode. The tests were failing because Haiku's error checking is just better. BeOS allowed constructing a BSymLink with BSymLink(BDirectory*, const char*) with the entry name of "". The same is true of the equivilant SetTo() method. The BSymLink object will appear valid until you attempt to use it by, for example, calling the ReadLink method, which will return B_BAD_VALUE. Haiku does a more appropriate thing and returns B_ENTRY_NOT_FOUND, for this constructor and the equivilant SetTo(BDirectory*, const char*) method. This patch fixes these test assertions to match Haiku behavior. docs/develop/file_systems/overview.txt: * Add notes for future filesystem driver implementers to call this mistake when implementing fs_vnode_ops::read_symlink. docs/user/drivers/fs_interface.dox: * Fix documentation for fs_vnode_ops::read_symlink Change-Id: I8bcb8b2a0c9333059c84ace15844c32d4efeed9d Reviewed-on: https://review.haiku-os.org/c/haiku/+/2502 Reviewed-by: waddlesplash <waddlesplash@gmail.com> Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
|
#
82f4ed7f |
|
31-Dec-2019 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
bfs: add stub for ResizeVisitor. This allows to have all the tools (resizefs, fs_shell, etc) merged, and split out the remaining BFS resize changes in a way that makes some sense. We can easily merge all the basic infrastructure (ioctls, etc) without any of the actual resizing code (I'll leave that to professionals).
|
#
0b3f78e7 |
|
13-Jul-2012 |
ahenriksson <sausageboy@gmail.com> |
fs_shell: 'resizefs' command Change-Id: Ie4c18c76cd1a69945739817ecd99409b7611dd7a Reviewed-on: https://review.haiku-os.org/c/haiku/+/939 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
|
#
354311b5 |
|
30-Aug-2019 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
filesystems: bump priority of BFS over others If multipole filesystems think they can handle a volume, it makes sense to assume the native one is to be used. Makes my partitions with a BFS superblock and a leftover ext2 superblock on them mountable again without manually specifying the filesystem type. Fixes #15045. Change-Id: Icb694472aa3de0a79e5f7d3c54976038e1e2590a Reviewed-on: https://review.haiku-os.org/c/haiku/+/1801 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
aa775038 |
|
05-Jul-2012 |
ahenriksson <sausageboy@gmail.com> |
bfs: split checkfs code into FileSystemVisitor and CheckVisitor Another FileSystemVisitor implementation will be used for resizing Change-Id: I2d5f47dcbefb4c76834487b194a99c6f5ae7de50 Reviewed-on: https://review.haiku-os.org/c/923 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
|
#
5d558f27 |
|
26-Oct-2018 |
François Revol <revol@free.fr> |
BFS: Use separate name & pretty name for big-endian Change-Id: I7e3a99e3cff35ae5f8cd84fa7243579bf93de904 Reviewed-on: https://review.haiku-os.org/644 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
44c76b26 |
|
09-Jan-2017 |
Axel Dörfler <axeld@pinc-software.de> |
bfs: Made updating the boot block more secure. * It now also checks the length/offset indepdently from each other, so that they cannot benefit from integer overflow. * This fixes bug #12943.
|
#
6f7fc220 |
|
07-Mar-2016 |
Axel Dörfler <axeld@pinc-software.de> |
NodeMonitor: Added B_WATCH_CHILDREN flag. * Added a directory argument for notify_{stat/attribute}_changed(). * This allows to watch only a directory, and get the notifications for all of its files, not just add/remove entry notifications.
|
#
44b69ccb |
|
17-Aug-2015 |
Michael Lotz <mmlr@mlotz.ch> |
bfs: Use negative caching on directory lookup failures.
|
#
de9c0613 |
|
03-Jul-2014 |
Axel Dörfler <axeld@pinc-software.de> |
bfs: Use the QueryParserUtils instead of its own copy. * Ingo copied the methods into a shared location, and then obviously "forgot" to let BFS use them. As a side note for Ingo: the complete error GCC reported was "std::fssh_size_t" not defined with the macro wrapper as code location. The actual problem was a "using std::size_t" in some C++ header that accidentally got included after the wrapper. * The shared Query code is not yet used. That'll be done another time. * Renamed BFS_SHELL define to FS_SHELL, such that QueryParserUtils can be used in any file system shell, not just the bfs_shell.
|
#
547cd462 |
|
02-Nov-2013 |
Axel Dörfler <axeld@pinc-software.de> |
trim: Added is_called_via_syscall() function. * And use it in get_trim_data_from_user(), formerly known as copy_*(). * This fixes differentiating between user and kernel buffers.
|
#
99086aa3 |
|
14-Aug-2013 |
Axel Dörfler <axeld@pinc-software.de> |
trim: Target SCSI UNMAP command instead of WRITE SAME. * The UNMAP command is theoretically much faster, as it can get many block ranges instead of just a single range. * Furthermore, the ATA TRIM command resembles it much better. * Therefore, fs_trim_data now gets an array of ranges, and we use SCSI UNMAP to trim. * Updated BFS code to collect array ranges to fully support the new fs_trim_data possibilities.
|
#
0a0ba4b5 |
|
04-Aug-2013 |
Axel Dörfler <axeld@pinc-software.de> |
Added B_TRIM_DEVICE support to BFS. * It currently ignores the offset/size, though, and always trims everything. * Now only SCSI support is missing.
|
#
a01dd963 |
|
28-Apr-2013 |
Michael Lotz <mmlr@mlotz.ch> |
Return more than a single dirent at a time in bfs_read_dir(). Return as many dirents as fit into the provided buffer. The readdir() implementation in libroot tries to get many dirents and caches them to reduce the amount of syscalls and the associated overhead. This reduces the syscall count dramatically for use cases where a lot of directories are enumerated. A "git status" on a Haiku repository for example goes from over 50k read dir syscalls down to just under 7k. The performance gain is only around a moderate 5% in that use case though.
|
#
caa1e8b7 |
|
31-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Fix CID 712419, 712420, 712421, 712422: Unintentional sign extension to 64 bits.
|
#
3cd66dda |
|
31-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Fix CID 712419, 712420, 712421, 712422: Unintentional sign extension to 64 bits.
|
#
eb5f3639 |
|
12-Feb-2012 |
Jerome Duval <jerome.duval@gmail.com> |
Fixes some occurrences of 'variable set but not used', disables Werror for problematic items.
|
#
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
|
#
90ade5e2 |
|
12-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added file_system_module_info::uninitialize() analogously to partition_module_info::uninitialize(). * Implemented the hook for BFS. * Implemented KFileSystem::Uninitialize(). Fixes failure to initialize a BFS initialized device with an intel partition map. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42142 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f53ec236 |
|
02-Mar-2011 |
Jérôme Duval <korli@users.berlios.de> |
changed ioctl hook return code when the opcode isn't supported. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40784 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
48ec4fbb |
|
09-Nov-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Rohit Yadav that fixes #6750, thanks a lot! * This changes Inode::CheckPermissions(), and bfs_write_stat() based on Ingo's solution in his file corruption test file system. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39378 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d63f4274 |
|
18-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
added a file system call preallocate() as described in #6285, currently unused git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39006 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
950f37b2 |
|
13-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* renamed bfs_inode::ToUsecs() to bfs_inode::ToNsecs, as it really converts to nanoseconds. * added a comment explaining the nanoseconds conversion git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38965 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
75148e01 |
|
14-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Janito that fixes broken reverting when a rename operation failed on last chance. Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38103 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
386be45a |
|
24-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fixed 64 bit warnings. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36928 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9d570af7 |
|
24-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Changed the type of the "op" parameter of the fs_vnode_ops::ioctl() hook and the _kern_ioctl() syscall from ulong to uint32. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36927 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a1a8f33 |
|
10-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Janito that solves a TODO and utilizes the actual device block size to align the file map. * This closes ticket #5707, thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36144 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d501707d |
|
03-Mar-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed the cookie field of the check_control structure; that really was a stupid idea. Instead, the already existing fCheckCookie member is used. * bfs_ioctl() now accesses all userland buffers safely, this should help with #3264, and move the crash where it belongs. * Changes not yet tested; they only affect checkfs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35743 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b2397539 |
|
05-Jan-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* BFS now correctly reports the B_FS_HAS_QUERY flag (ie. if you disable the indices it will no longer be set). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34909 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4ea6fb8b |
|
27-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the query code again to send B_ENTRY_REMOVED/B_ENTRY_CREATED notifications if an inode in a query result was moved/renamed - this time all the information is correct, though. * While I did not introduce B_ENTRY_MOVED for queries yet, this should make adding it very simple (left as an excercise for the reader ;-)) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34317 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f2505b15 |
|
26-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Implemented O_DIRECTORY in BFS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34280 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8859eeab |
|
24-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Replaced "%Ld" and "%lld" in printf()s by the new B_PRI* macros to avoid warnings when building with a 64 bit compiler. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34216 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b6670723 |
|
11-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Only remove the inode from the Volume::RemovedNodes() list when it has gone through the VFS. * This fixes bug #4942. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34007 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f40c5e32 |
|
05-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* common_rename() now checks the name for validity before passing it on to the file systems, so those checks don't have to be duplicated there, anymore. * Minor cleanup, mostly automatic whitespace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33895 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b944eec |
|
29-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Improved the status_change time check to actually filter out invalid times, before, st_ctim was never updated; since you cannot change st_ctim via an API, '0' cannot ever be set, either. * Inode::WriteAttribute(), and Attribute::Write() now return whether they created an attribute or not, and thus B_ATTR_CREATED is now correctly set. * Moved status_change update from bfs_write_attr() into Inode::WriteAttribute() where it can be handled more efficiently. * Likewise, Inode::RemoveAttribute() now updates the status_change time as well, I simply forgot this before. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33832 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b43e064e |
|
29-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Attribute changes now also change the status change time. * While Ingo already convinced me to use the modified time for this instead (see People files, for example), I did not do so for two reasons: 1) The file modification date is important to the user; more or less hidden attribute changes shouldn't have an effect on this. 2) Efficiency: the last_modified field is indexed whereas status_change is not. Speed would suffer noticeably else. * We might want to think about a new "stat::st_attrtim" field, though, instead. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33825 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aeb099b3 |
|
19-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added a very simple way to fragment your disk. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33674 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
425cb3d7 |
|
09-Sep-2009 |
Oliver Tappe <zooey@hirschkaefer.de> |
* revert r32999 and adjusted each filesystem to return B_NOT_A_DIRECTORY in its open_dir() implementation instead (as suggested by Ingo). -alphabranch (it's only a cleanup) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33025 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a60fd72 |
|
06-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced the Inode::GetTree() method with a simple getter - the tree is always created for directories since quite some time now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
134e1b04 |
|
06-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Somehow I forgot to update the parent directory's time stamps on file creation, removal, and name changes... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32157 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
533cba7e |
|
28-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
bonefish + axeld: * Reverted r31809 as it introduced a race condition; if the I/O request had been notified, it could already been deleted at that point. * Instead, we need to notify the request in each file system/driver that uses it. Added new notify_io_request() function that does that exactly. * Added a TODO comment to the userlandfs where the request notification needs a bit more thought. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31903 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b77d5a6c |
|
28-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Almost all Transaction::Done() return values are now honoured. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31862 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a3a8bfa |
|
28-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Journal::_WriteTransactionToLog()'s return value was ignored previously, leading BFS to report success on actually failed transactions. Those transactions were even kept open, leading to a panic when starting the next transaction. * Transaction::Done() now returns a status - currently, this is only handled correctly where this is likely to happen without a disk fault, ie. if the transaction was too large to be written back safely. * Improved "bfs_journal" command output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31850 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e4944941 |
|
15-Jun-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Cleanup of how the time is converted between bfs_inode and the outside world: there is now a couple of conversion functions, and I changed the type from bigtime_t to int64, as it's not what a bigtime_t would usually contain, but some shift magic in order to make duplicate index entries less likely. * We now correctly fill in the timespec in struct stat as good as possible; the 12 of the 16 possible bits are used for the nano second value. The lower 8 bits are used to avoid the duplicate index entries. Only if the nano second time is 0, the lower 12 bits are used to achieve that. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31057 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
33203f67 |
|
25-May-2009 |
Oliver Tappe <zooey@hirschkaefer.de> |
* added support for ctime to BFS by grabbing two of the pad-fields * added TODO about a sanity check that should perhaps be dropped I checked this change with both a haiku-BFS partition and one from R5 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30852 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a786c139 |
|
08-May-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed the work-around that allowed to open directories read/write. See ticket #3875. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30675 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
24b822d8 |
|
17-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* No longer hold the write lock when calling Inode::FillGapWithZeros(), as this potentially deadlocks as described in bug #3768. The system is still completely unresponsive, but gets back to a working state after some time now. * Since the rw_lock is public, Transaction and InodeReadLocker no longer need to be friends with Inode. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30221 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
992fba36 |
|
16-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* There is now a list of removed vnodes in Volume - while asking the VFS for this seemed to be a good idea, there is one race condition that cannot be solved otherwise (the vnode must be added/removed to that list while holding the transaction lock, and we cannot guarantee that in the VFS). * We are using an unused area of the in-memory bfs_inode to store the list links (bfs_inode::pad - this will also work on 64 bit platforms). * Inode no longer adds a singly linked list link - the transaction list now shares the doubly linked list with the removed vnodes list. * Added an in-memory flag INODE_IN_TRANSACTION to avoid searching an inode to be added in the list. * Removing an attribute directory did not hold its write lock. * If removing an attribute failed for some reason, the INODE_DELETED flag was not removed (the transaction would not have failed because of that). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
973032b8 |
|
29-Mar-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added TODO for Axel or whoever is interested. :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29781 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
|
#
aa4ba93e |
|
08-Mar-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed src/system/kernel/device_manager/io_requests.{h,cpp} to IORequest.{h,cpp}. * Introduced public <io_requests.h> header. Currently it only declares the single function BFS uses. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29446 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
49004dc7 |
|
19-Feb-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Remove the additional fs_vnode_ops arugment from get_vnode() again as it's not needed at all when used as intended. Thanks Ingo for the explanation on how this is intended to work. Adjusted the overlay fs accordingly and updated/reverted the changes to the other filesystems. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29250 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
00405f22 |
|
09-Feb-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Add an additional argument to get_vnode() that gets the fs_vnode_ops of the node. That is needed for a layered filesystem to be able to construct a full fs_vnode out of a volume/inode pair. * Adapt places where get_vnode is used. Sadly this is a C API and we can't just use a default NULL for that argument. * Introduce a flag B_VNODE_WANTS_OVERLAY_SUB_NODE that can be returned in the flags field of a fs get_vnode call. A filesystem can use this flag to indicate that it doesn't support the full set of fs features (attributes, write support) and it'd like to have unsupported calls emulated by an overlay sub node. * Add a perliminary overlay filesystem that emulates file attributes using files on a filesystem where attributes aren't supported. It does currently only support reading attributes/attribute directories though. All other calls are just passed through to the super filesystem. * Adjust places where a HAS_FS_CALL() is taken as a guarantee that the operation is supported. For the overlay filesystem we may later return a B_UNSUPPORTED, so make sure that in that case proper fallback options are taken. * Make the iso9660 filesystem request overlay sub nodes. This can be fine tuned later to only trigger where there are features on a CD that need emulation at all. If you happened to know the attribute file format and location you could build an iso with read-only attribute support now. Note that this won't be enough to get a bootable iso-only image as the query and index support is yet missing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29177 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b6b002b8 |
|
23-Jan-2009 |
Jérôme Duval <korli@users.berlios.de> |
when renaming, check first with the newDirectory instead of starting at its parent. this should fix #3355 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29001 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e677f5aa |
|
10-Jan-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed two possible crashing bugs in the file system check code: the checker was attached to the inode instead of the file descriptor, causing it to call BlockAllocator::StopChecking() whenever anyone closed the device's root node during the check. The other bug was that it tried to fix errors even if the device was read-only. * Added TODO that ioctl() accesses userland buffers unsafely. * Removed no longer valid or superfluous comments. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28869 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
64e0d084 |
|
02-Jan-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Inodes are no longer trimmed from the checking thread. This should fix bug #3190. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28845 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
243680e8 |
|
26-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Forgot to cast before the shift; this fixes the problem seen by Bruno. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28736 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b614227b |
|
26-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* In bfs_write_stat() B_STAT_UID, B_STAT_GID, and B_STAT_MODE now also trigger an update of st_mtime. This is a work-around for the unmaintained st_ctime, and this also fixes bug #3143. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28734 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2bb83490 |
|
17-Oct-2008 |
Michael Lotz <mmlr@mlotz.ch> |
Fix two bugs related to the use of the entry cache for parent entries in BFS: * The parent entry ("..") of a directory was not removed from the cache when its directory was removed. * When moving a directory to a new parent, it's cached parent entry wasn't updated. Those would lead to stale cache entries for directory parents. If a certain inode would be reused to create a new directory after removing another, this would lead to an invalid inode being returned when looking up the parent of the new directory. This was easily reproducible by unzipping some directory structure, deleting it and unzipping it again. You would end up with many "inode already deleted" messages. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28214 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
218f8c86 |
|
17-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Give a more detailed error message in case someone just tried to access a deleted inode (which might always happen when accessing an inode by ID), for example by using the BDirectory(node_ref&) constructor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28213 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
057f999d |
|
13-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added a flag B_DISK_SYSTEM_SUPPORTS_WRITING to determine whether or not a file system can write to files before mounting. * Set the flag for all file systems that actually can write. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28055 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cfa4660b |
|
13-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the way the BFS_IOCTL_UPDATE_BOOT_BLOCK ioctl works; it's a bit more flexible to use now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28053 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9fc81c53 |
|
11-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Use a block size of 512 - since there is no standard, we're just following the masses (whatever stupidity created this misery). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27978 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b2ec044c |
|
30-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added stat::st_blocks field as required by POSIX. This also closes ticket #2261. * Made at least BFS report it more or less correctly (the attributes are ignored, though). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27791 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0914d6da |
|
26-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27750 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dea4ee19 |
|
14-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the error return by bfs_link() to B_NOT_SUPPORTED. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27501 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
57b9debf |
|
13-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Some index updating functions did not take into account that not all nodes are put into all indices. For example, symlinks aren't part of the size index. This fixes bug #2704. * Also, Inode::NeedsTrimming() now ignores symlinks that have no data stream, it's const now, too. * Added helper methods Inode::In{Name|Size|LastModified}Index(), and use it where appropriate. * Clarified Inode::Create() description with regards to name vs. parent. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27471 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b41928bf |
|
07-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Use the new entry cache. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
46124337 |
|
30-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added parameter "size_t align" to file_map_translate(). If > 1, the vector at the end of the file will be aligned to the given value. * BFS uses an alignment of 512 bytes (should be block size of the underlying device or BFS block size, whatever is less), which should be fine, since file data are only stored in BFS blocks. This totally avoids any partial operations at the I/O scheduler level, thus saving disk operations. Not that I could measure any performance difference. Theoretically it should help a lot though, particularly when dealing with lots of small files, since we avoid using bounce buffers, which are (a) limited in number and (b) require copying of the data. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27246 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9d4ec2ee |
|
18-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
The return value of the identify_partition() hook is not error code compatible. Small floats have to be returned. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27040 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f57b05f |
|
13-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Temporarily use the private I/O request API to decide whether or not the request is a write request. * This closes bug #2579, thanks BGA for the investigation! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26958 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bbc9703c |
|
10-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
As suggested by Rene and Andreas: Use '%lld' instead of the non-standard '%Ld'. This solves build problems in Solaris. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26923 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3656dc0d |
|
09-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed debug tracing that obviously slipped in in a former commit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26908 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c7dc5745 |
|
04-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* We must call file_cache_disable() with O_NOCACHE also in bfs_create(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26796 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
88a25656 |
|
03-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added support for O_NOCACHE/O_DIRECT. * bfs_open() was leaking the already allocated cookie in several error conditions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26780 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
02c8f6c8 |
|
02-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Coding style cleanups, no functional changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26728 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2accd07b |
|
01-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced Chain with the new SinglyLinkedList. * Renamed openModeToAccess() to open_mode_to_access(). * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26718 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2e3477e3 |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the inode write locking to be held as long as the transaction is running - this fixes several cases where someone could see outdated data when a transaction had to be reverted (the time between unlocking the inode and actually reverting the blocks). For that, Inodes can now be put into a singly linked list. * Added a TODO in Inode::WriteAt() which explains why it cannot use the above method: seems that our VFS/VM locking model isn't really that good. * Fixed a possible deadlock in Attribute::_Truncate() where the inode write lock was held before starting the transaction. * Added an InodeReadLocker convenience class, that should be used instead of ReadLocker - Inode::Lock() only still exists because of the needs of bfs_io(). * Moved the bfs_io() callback hooks out of the exported module API region, and removed their bfs_ prefix. * Added a Volume::IsInitializing() method that should be used rather than checking if Volume::ID() is >= 0. * Removed the MultiInodeLocker again, as it's pretty much superfluous now. * Moved openModeToAccess() to the Utility.h header. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26715 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
274e684a |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_rename() did not write lock the moved inode, but only its former and new parent directories. This would only be necessary in case it's a directory, but we do it always now. * This fixes bug #2556. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26694 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f12cc54 |
|
30-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* It is now supported that I/O operations and requests are only handled partially (e.g. due to hitting the end of file). The respective classes have grown new methods and attributes to deal with that. The "finished" callbacks have got additional parameters to indicate whether the transfer was only partial and how much has been transferred. Other callbacks and functions have a size_t* in/out parameter instead of a simple size_t, now. * vfs_{read,write}_pages() do now use the I/O request framework instead of the underlying FS's {read,write}_pages() hooks (those should be unused now). Furthermore they've got an additional "flags" parameter, which is passed to IORequest::Init(), i.e. it allows to specify that the given vecs refer to physical addresses. * The file cache's read_into_cache() reads directly into physical pages, now. * Fixed bug in DoIO::IO(): The offset was not adjusted, so that all pages were incorrectly transferred from/to the same location. * Fixed broken subrequest scheduling loop head in do_iterative_fd_io_iterate(). * Adjusted the test driver and implemented its io() hook. Using this driver I/O requests are passed all the way from the VFS/VM to the driver and through the I/O scheduler. It even seems to work. :-) * Added missing const to the iovec* parameter of the IORequest::Init() methods. * Disabled some debug output by default. Added new optional debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26692 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b99521f2 |
|
30-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
First round of locking fixes: * Moved locking the data stream out of the BPlusTree methods; this fixes at least two locations where another thread could have seen outdated/incorrect data. * Removed some superfluous code in bfs_rename(): we don't have to revert to the previous situation, the transaction does this for us automatically. * Added a simple MultiWriteLocker, even though it's not really necessary anymore (since we always hold the transaction lock first when we lock more than one inode at a time). * Inode::Create() called InodeAllocator::Keep() a bit too early, the file cache and map wasn't created and assigned yet. * InodeAllocator now keeps the inode write locked. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26689 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e9c954c3 |
|
29-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Use file_map_translate() instead of bfs_get_file_map(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26678 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
344150c1 |
|
28-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Implemented the io() hook. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26671 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ec598fe4 |
|
27-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 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
|
#
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 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
|
#
fe08828a |
|
23-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* The identify_cookie was allocated unchecked, spotted by Stippi. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26576 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
082bae1a |
|
23-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_fsync() no longer grabs the Inode's read lock - instead, Inode::Sync() will take care of the locking. * Use new(std::nothrow) over new, and malloc (only in kernel_interface.cpp); the kernel_cpp.h header isn't really necessary anymore, so there is no reason BFS should continue to use it. * Removed superfluous NULL checks. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26574 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9083840f |
|
20-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
bonefish + mmlr + axeld: * Fixed a bug that could easily corrupt your disks (yeah, one of those again): bfs_get_file_map() truncated the last vec incorrectly and would potentially return a too large file size -- which was later happily overwritten with file data, but could have belonged to anything but that file (like inodes, B+trees, etc.). * Renamed previous round_up() function to key_align(). * Added round_up() template function, and used it where appropriate. * The latter actually fixed two bugs where the and mask was computed in 32 bit where it should have been in 64 bit. * Inode::FindBlockRun() should have checked the max indirect size instead of the direct size - this didn't cause any problems, though. * White space cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26531 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c121d2c |
|
14-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed the bug described by Salvatore: since we let BFS open directories with read/write access, we shouldn't let it truncate the directory B+tree... * Also fixed allowing truncation in read-only mode. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1bde8b03 |
|
08-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced BFS's ReadWriteLock implementation with the kernel's rw_lock. * The BlockAllocator now uses the new mutex_transfer_lock() function instead of clobbering the mutex directly. * Removed Lock.h - it's no longer needed. * Minor white space cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26317 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
03fa417b |
|
07-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed the home-brewn locking classes in BFS besides the read/write lock (for now). * Inode::fSmallDataLock is now a recursive_lock, Journal::fLock is now a recursive_lock, too, Journal::fEntriesLock is now a mutex, as is BPlusTree::fIteratorLock. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26298 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0c48c437 |
|
01-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed the bfs_write() error code for directories as suggested by Jerome. * Removed a few superfluous checks. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26191 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fdf3fa9f |
|
30-Jun-2008 |
Jérôme Duval <korli@users.berlios.de> |
read() expects B_IS_A_DIRECTORY on directories that can't be read. This fixes grep misbehavior with directories. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26186 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bcd30708 |
|
28-Jun-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed a deadlock found by Salvatore; the volume lock is now only used to protect the bfs_read_fs_stat() and bfs_write_fs_stat() functions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26154 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ef098c90 |
|
28-Jun-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed volume lock from bfs_get_vnode() - it's not necessary on Haiku. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26152 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 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
|
#
fd4a010b |
|
24-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
rename() is supposed to fail when the target exists and is not a directory only if the source is a directory. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25144 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d11e733f |
|
24-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Allow passing sub vnode ops and publish flags to Inode::Create(). * Implemented create_special_node() hook. * Fixed Inode::IsContainer()/IsDirectory(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25140 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3daf03d3 |
|
08-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
I broke the index dir access when changing the FS interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24868 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 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
|
#
0e4edbea |
|
04-Apr-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added checks to (hopefully) all write/create functions to bail out early if the volume is read-only. This should help with #2028. * Removed unused bfs_[de]select() functions. * Removed most paranoia checks - now that we control both sides of code, this would just hide eventual problems in the VFS code. * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24809 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
48931654 |
|
25-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Inode::OldSize() is the size of the file before the last index update - this might be a bit older, so we cannot use it for the previous size in the call to Inode::FillGapWithZeros() in bfs_write_stat(). * This fixes the perl problem Ingo ran into after r24555. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24580 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 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
|
#
1b32947d |
|
17-Mar-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Aligned the semantics of the read_symlink() FS module hook with the readlink() function. It is no longer required to null-terminate the string, shall not fail, if the buffer is too small, and shall return the length of the string actually written into the buffer. * Adjusted rootfs, devfs, and bfs accordingly. Also adjusted their read_stat() hooks to return the correct symlink length in st_size. * Our readlink() does now comply to the standard (and BeOS). Additionally if the buffer is big enough it is nice to non-conforming apps and null-terminates it. * BSymLink::ReadLink() explicitly null-terminates the string now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24425 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6cc58858 |
|
15-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Improved error reporting when mounting a volume failed, especially when the log couldn't be replayed. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24400 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c6f752c0 |
|
06-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
Corrected patch to fix warnings when compiled with GCC 4, thanks Vasilis! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24279 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
351b7a2d |
|
25-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added B_WATCH_INTERIM_STAT, and B_STAT_INTERIM_UPDATE definitions to NodeMonitor.h. * The latter will be set in "statFields" for interim updates when you have asked to get them via the former. * BFS now uses the B_STAT_INTERIM_UPDATE flag for sending updates to actively written files. * This makes us more compatible with BeOS again; if you only asked for B_WATCH_STAT, you will now only receive a notification if the file in question has been closed. * Tracker now uses B_WATCH_INTERIM_STAT to always get all updates (ie. downloading a file will update its size and modification time in Tracker periodically during the download). * Wether "needsTrimming" was true or not has no influence on wether or not the size index needs to be updated in BFS - only the actual file size is stored there, not the on-disk size. * Added a TODO comment in Inode::WriteAt() that it would actually need to update the size index when changing the file size, not when the file has been closed (but that's probably too slow). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24114 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4f045f9c |
|
14-Feb-2008 |
Michael Lotz <mmlr@mlotz.ch> |
Turns out the only thing we didn't do in bfs_free_cookie was - actually free the cookie. One memory leak less... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23960 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d7477802 |
|
12-Jan-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Made the additions of the KDL debugger commands independant from the DEBUG macro; they are now added only if BFS_DEBUGGER_COMMANDS is defined (which is now done by default in the Jamfile). * Added "bfs" KDL command which dumps volume information and the super block. * Made use of the new tracing API to trace block and inode actions (and the new AbstractTraceEntry class I forgot to mention in the last commit). Is compiled in only when BFS_TRACING is enabled (defaults to off in the standard builds). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23464 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
21885de2 |
|
08-Dec-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* BFS now always writes back the whole block when it writes the super block. * Therefore, I've added an I/O control that let's it update the boot block part of this block, so that makebootable can use it on a mounted volume (this will probably be moved into a disk system API later). * Added user_memcpy() to the fs_shell. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23082 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4afaeabb |
|
02-Dec-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_free_cookie() accidently reverted a transaction after having updated the inode's internal last modified and size copies, causing in inconsistent data. This fixes #1643. * The block being replayed are now dumped to the debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23050 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a31d30e |
|
13-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The file map needs to know the actual file size to be able to know if it has the complete extent info or not. * file_map_translate() now cuts down the request to the file bounds. * Adjusted BFS and FAT to the API changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22913 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
364759e0 |
|
11-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The "bytes" as passed to {read|write}_file_io_vec_pages() was never initialized, causing those functions to read|write a random amount. * This fixes bug #1614 - amazing how well the system worked with those randomly sized requests... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22901 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f0d93820 |
|
11-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The previous locking order "inode write" -> "journal" was not only not honoured (in the Inode attribute code), it also couldn't be honoured there. Therefore, the locking order is now reversed, that is "journal" comes first, then the Inode write lock. This should also help with the lock ups that appeared after r22886. * Got rid of INODE_NO_TRANSACTION; it doesn't make any sense to use. * When Inode::WriteAttribute() changed the type, the type field was actually never written back within the current transaction. * If the attribute data fit into the inode again, the attribute's write lock was never released. * Since r22886, Inode::ReadAt() does its own locking, so we must no longer lock the inode before calling it. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22897 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 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
|
#
57225f03 |
|
10-Nov-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved helper function to check initialization parameters to separate source file. Added function to check the volume name. * Removed bfs_validate_initialize(). This functionality is to be implemented in a userland add-on. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22871 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 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
|
#
33e38cda |
|
04-Oct-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Implemented bfs_validate_initialize(). It should probably do more checks (e.g. if the partition is big enough), though. * bfs_initialize(): - Report job progress. - Rescan the partition after it has been initialized, so that all partition_data fields are properly initialized. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22442 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
06cd40f3 |
|
04-Oct-2007 |
Axel Dörfler <axeld@pinc-software.de> |
Forgot to replace the error code with the new "mayBlock" logic, thanks Ingo! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22437 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3e9513aa |
|
03-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 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
|
#
ab88b095 |
|
29-Sep-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_{read|write}_pages() now only try to lock - this fixes a possible deadlock whenever someone without a lock (like the page_writer()) is calling this function. * Added a new ReadWriteLock::TryLock() method. * Renamed bfs_read_vnode() and bfs_release_vnode() to bfs_get_vnode() and bfs_put_vnode() just like those functions are called in fs_interface.h. * Fixed a warning in BPlusTree::_SplitNode(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22372 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 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
|
#
9e12e9a7 |
|
01-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 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
|
#
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
|
#
68fd0cb9 |
|
24-May-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Driver settings support is now available in the FS shell. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21234 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
065e3184 |
|
22-May-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* Inode::Create() now has a "_created" parameter that will be set to true in case a node has been created - this is now used in bfs_create() to suppress the new entry notification in case the file already existed. * Implemented parameter parsing in bfs_initialize() - does not work in the new bfs_shell though, as it currently misses driver_settings functionality. * Attribute::Create() and Attribute::Open() will now honour O_TRUNC correctly. * Note: Inode::WriteAttribute() still follows R5 semantics for small_data attributes in this regard and must be fixed (I've opened ticket #1242 for this). * Some cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21204 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9d6c014f |
|
29-Apr-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added very basic volume initialization support. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20899 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c391f84b |
|
26-Apr-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Prepared the BFS sources to be used with the new FS shell: - Moved all inclusions of system headers into a new system_dependencies.h header, which conditionally either includes these or the FS shell headers. - Fixed compiler warnings related to printf-like functions (int32 is int, not long on non-BeOS platforms). * Build a new bfs_shell. Compiles and links, but does nothing ATM. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20860 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4bf052db |
|
07-Mar-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed dummy strtod(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20349 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
12d359b8 |
|
04-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 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
|
#
230a0989 |
|
06-Feb-2007 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_free_cookie() now always write locks the inode - before it only hold a read lock which wasn't enough when tampering with the inode's data, and it also acquired that lock too late. Thanks to Stefano for pointing this out. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20079 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fc317af2 |
|
23-Jan-2007 |
Axel Dörfler <axeld@pinc-software.de> |
Writing to attributes was deadlock prone; the BFS volume lock was acquired with the BFS Journal lock held. Since our get_vnode() is no longer unsafe (unlike Be's version of it), we can get rid of the UNSAFE_GET_VNODE stuff, which also solves this bug. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19916 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1411be77 |
|
25-Oct-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed a crashing bug when creating a long symlink - there was no file cache created in this case but used later on. * The length of a long symlink was one too short, and was thus always losing the last character. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19124 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
297f8934 |
|
25-Oct-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* write_stat() should not add/update the last modification time of directories. Reported by Robert Szeleney. * Fixed an endian problem in write_stat() in the R5 version of BFS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19121 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
03a29852 |
|
30-Aug-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* When releasing a vnode, it tried to trim down the allocation even if the file system was mounted read-only. * bfs_rename() did not check the access privileges of the directories involved. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18718 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 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
|
#
a4237b2a |
|
10-Apr-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_fsync() now locks the inode as it must do. * added a IsLocked() method to ReadLocked. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17057 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b61fdf78 |
|
28-Feb-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* The inode block wasn't written back when it was opened with O_TRUNC/B_ERASE_FILE which could cause inconsistency of on-disk structures. * Fixed copy&paste bug introduced by Ingo when he did the GCC 4 work-around: when shrinking the direct range, the new size was written to the indirect range. * Some cleanup, renamed private Inode methods to have a leading '_' symbol. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16557 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6106f57e |
|
26-Feb-2006 |
Stephan Aßmus <superstippi@gmx.de> |
* Didn't allow to write back attributes outside the inode block (they don't have a user accessable stream, but they do have a file cache). * removed superfluous dump_inode() version; the "bfsinfo" debugger command is now a bit more useful as well. * Inode::fAttributes was not initialized when it wasn't used. (coded by axeld) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16508 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
15612acb |
|
25-Aug-2005 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_read_vnode() no longer tries to load a block when there can't be an inode (since it knows that it doesn't place any inodes before the end of the log area). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14068 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
65af8c83 |
|
12-Aug-2005 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_get_file_map() no longer returns the preallocation area as part of the file data - it checks if the current run goes beyond the file size and cuts it off after the block containing that last few bytes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13943 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
433cc8c2 |
|
01-Aug-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Added missing safety check when reading in a node. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13864 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1c12a6a3 |
|
08-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Inode::ShrinkStream() now evaluates the return values from some functions - dunno if that's a good idea (it may still be a good idea to succeed for shrinking the stream, even if not everything worked), but it looks better :-) Improved debug output in case TrimPreallocation() fails. Journal::FlushLogAndBlocks() no longer ends the current transaction if called from within an ongoing transaction. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13019 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2dbdc141 |
|
30-May-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Transactions can now be nested (bfs_release_vnode() actually did that before, but that was not working correctly): only the owning transaction (the one that came first) can now end a transaction. To do: if the owning transaction fails, it should actually not abort the transaction in case there were sub transactions, but does so right now (should do no harm, eventually file data is not freed as it should). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12913 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bae7c12d |
|
25-May-2005 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_read_link() did not report the correct link size (it did not take the terminating null byte into account) - thanks to Korli for reporting this. Inode::Create() will no longer publish symlink vnodes; instead, bfs_create_symlink() will publish the link when it is complete (ie. the actual link data had been written). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12822 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 detection may now work (not yet tested, though). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12786 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
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 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
|
#
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-0310-859d-f6bbb57e9c96
|
#
fa4244bf |
|
13-Mar-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Simplifications due to the solved get_vnode()/new_vnode() mess; bfs_read_vnode() can now just do what it's supposed to do, even the bfs_inode::etc pointer is no longer used. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11722 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f0c7cb8c |
|
02-Feb-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Ported over to the new notification API. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11224 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a4480535 |
|
19-Jan-2005 |
Axel Dörfler <axeld@pinc-software.de> |
No longer tries to update indices from deleted files. Added new method Inode::IsDeleted(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10879 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
381c5247 |
|
10-Jan-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed compilation in debug mode. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10630 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
071ac293 |
|
12-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented bfs_get_vnode_name(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10410 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c02ff3b7 |
|
12-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Reenabled query support for the Haiku kernel. Implemented bfs_rewind_query(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10405 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d48f7182 |
|
07-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Enabled full attribute support under the Haiku kernel. It's not as clean as it could, but it works for now. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10377 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e15a7ad3 |
|
03-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a big allocation leak: preallocation was done for all streams, but only regular files were stripped back when bfs_close() was called. Now, we don't preallocate any blocks for attributes, attribute directories, and symbolic links (which do have a stream when longer than 144 bytes). Also, bfs_release_vnode() now trims back all streams that need to be trimmed - this catches standard directories, which could also slip through before. Removed the remaining blocks of INODE_NO_CACHE support as this is not needed for Haiku. Added method Inode::NeedsTrimming() that determines if its data stream can be trimmed (indices are never trimmed to reduce fragmentation). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10356 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ef948c3c |
|
27-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Yeah, sure, don't compile stuff before checking it in. bfs_open_dir() now checks for read access. bfs_lookup() now checks for execute access and not read access anymore (as reported by Ingo as well). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10273 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
41cf3876 |
|
27-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_create() now only checks for write access in the parent directory if a file really has to be created, thanks to Ingo for reporting this. Inode::Create() now checks for write access to the inode when O_TRUNC is set. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10272 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c6a62c6 |
|
22-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Now implements bfs_write_pages(). Changed some debug stuff. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10195 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fb02804a |
|
19-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Big update while moving over completely to the Haiku kernel: - Ported over BFS to the new cache API - Inode no longer inherits from CachedBlock, and therefore, no longer keeps the whole inode block in memory. It now has a copy of the bfs_inode structure in memory instead. This has a number of advantages but also some disadvantages, so it might be reverted later, even if it's unlikely. - Added a NodeGetter class that can be used whenever the real block needs to be accessed (ie. for attributes) - Changed *transaction to &transaction where possible - Removed support for KEEP_WRONG_DIRENT_RECLEN - Removed support for uncached file access since that's no longer needed - Fixed some endian issues in bfs_write_stat() - Removed the install BFS rules, since they don't make any sense anymore (unless you are running Haiku ;-)) Note, logged streams are not supported anymore right now. Also, the transaction code is pretty simple and slow - it will be improved later on. Attribute code is pretty much untested in the new environment. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10053 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fac367f2 |
|
15-Nov-2004 |
Jérôme Duval <korli@users.berlios.de> |
fix to conform to the API git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9966 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
755901d8 |
|
29-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_read_stat() now correctly reports the size of a link for symbolic links that are short enough to be placed in the short symlink region. bfs_read_link() now makes sure that the link read is always null terminated. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9650 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ec3d3e05 |
|
25-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented the Disk Device Manager Scanning API. It's currently exported as a separate module, but might be merged with the standard FS API. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9504 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9c137c0a |
|
05-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Enabled the bfs_set_flags() call. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
40f2ce7d |
|
14-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Activated the index functions and ported it to the the new VFS API. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8965 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0f369756 |
|
06-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The fs_readlink() function must work a bit differently in the new VFS API (ie. it needs to add the terminating null byte). It now also properly fails if the link is too long for the provided buffer. This allows us to resolve links on BFS volumes using Haiku again :) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8882 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a4e05e61 |
|
06-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Added a "cookie" parameter to the fs_read|write|has_page[s](). Implemented bfs_get_file_map(). Now uses the brand new file cache for the file data streams. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8877 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d5a48f5d |
|
04-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The VM fs interface has changed to better match the one of the device interface. Added an fs call for the file cache. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8852 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
15190e07 |
|
10-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The current kernel version needs these functions to be there (it will crash if not). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7894 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
83d95695 |
|
08-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Missing name index update with a late failed rename operation fixed (the same as in kernel_interface_r5.cpp). {add|remove}_debugger_commands() are now called in B_MODULE_[UN]INIT, no longer in bfs_[un]mount(). Removed empty cache implementation as it's in the kernel itself for now. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7836 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1bfc2c69 |
|
07-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
First try at a working BFS for the new kernel - does compile but not much more. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7827 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
feec20d6 |
|
07-May-2004 |
Axel Dörfler <axeld@pinc-software.de> |
It's now <util/kernel_cpp.h> rather than <kernel_cpp.h>. Forgot to commit that... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7442 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6f7e72c0 |
|
05-May-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the logic from bfs_close() to bfs_free_cookie() - apparently, doing anything in bfs_close() does not really makes sense. Thanks to Ingo for pointing this out. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7429 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e4758ac3 |
|
03-May-2004 |
Bruno G. Albuquerque <bga@bug-br.org.br> |
Added BFS_REPLACEMENT define that will enable compiling OpenBFS as as full BFS replacement (will report itself as "bfs" instead of "obfs". Is there a way to change the add-on name based on the same define? git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7403 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5b25332a |
|
01-Feb-2004 |
Axel Dörfler <axeld@pinc-software.de> |
This should fix the recently introduced locking problems: - locking policy is now: 1) the volume lock, 2) the inode lock, 3) start the transaction (the journal lock) - you don't need all locks, but you have to follow this order when you need more than one of them. - in many cases, this makes our inode read/write lock useless. I am really looking forward to the OpenBeOS VFS layer where we can remove many of these locks again. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6464 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b39a7a0e |
|
29-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed the "inode is not becoming unbusy" problem. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
01338285 |
|
29-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Some minor style changes. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6417 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a49b150f |
|
27-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Removed the fOwningThread functionality from the Journal class; it now just uses a RecursiveLock instead. Changed Journal::CurrentTransaction() so that it returns the current transaction only if it's valid for the thread asking for it. That doesn't fix the bug, but changed its timing a bit. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6356 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aac1dff9 |
|
25-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Updated the comment in bfs_initialize() - which we don't need for R5 (as it's never called). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6314 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aef00d7b |
|
25-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Cleaned up the debug mess mmu_man has created (thanks anyway!). Fixed a bug where the debug commands would be added in bfs_mount(), but not removed (since bfs_unmount() is only called if bfs_mount() doesn't fail). Switched to kernel_cpp.h/cpp. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6290 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
91e6897c |
|
24-Jan-2004 |
François Revol <revol@free.fr> |
Added obfsinode kernel debugger command. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6262 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6503b7c3 |
|
05-Nov-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Added missing statics; static functions doesn't need to be extern "C". git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5256 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cb94280c |
|
16-Sep-2003 |
Axel Dörfler <axeld@pinc-software.de> |
The file system is now almost endian-aware. Used lazy unreadable conversion: ==, !=, == 0, != 0 are endian-safe and don't need byte swapping. If the platform endian differs from the one selected at compile time, it will mount all volumes read-only for now. Uncomment BFS_BIG_ENDIAN_ONLY in the Jamfile to build the big endian version under x86. No matter on what platform, the compilation defaults to build BFS as little endian file system (see bfs_endian.h for details). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4715 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f96b2bc0 |
|
16-Sep-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Only send notifications if writing was successful. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4712 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a9d9dfa |
|
18-Jun-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Added new RecursiveLock and RecursiveLocker classes. Added file system global locking around creating, deleting, and renaming inodes - that's not nice, but since we have only sequential journal access, it won't hurt concurrency much. The locks are needed to prevent certain things from happening like two threads could theoretically create the same file twice (one of them would have failed, but relatively late in the process). Anyway, a better locking scheme will be implemented at a later date, but maybe not for R1. Small cleanup. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3562 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a5e9fec |
|
15-Jun-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Updated some comments. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3522 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8ea8d0c2 |
|
31-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed queries a bit more (maybe even completely...). In several situations, the old attribute value wasn't evaluated at all. Also, Index::Update() got a type code of zero, instead of the real value in situations where this didn't make any sense. Minor cleanup in kernel_interface.cpp. New method Volume::CheckForLiveQuery() that checks if there is a live query depending on the specified attribute - not yet implemented, but already used; always returns "true" right now, which doesn't cause any harm but reducing the speed lightly. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3394 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f2024b11 |
|
28-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed debug output in bfs_setflags(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3379 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a9aa5ee1 |
|
27-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented bfs_setflags(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae587160 |
|
27-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed another bad bug caused by calling get_vnode() on a node currently 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
|
#
a476bfc5 |
|
26-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Now waits for a whole second on the inode to become unbusy - just in case 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
|
#
98b972c9 |
|
25-Feb-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed all warnings that appeared with DEBUG=1 set. Also fixed missing return codes in BufferPool::ReleaseBuffer() and Journal::WriteLogEntry(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2845 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2fee336b |
|
29-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Removed the load_driver_symbols() call, since it doesn't seem to have any effect anyway. Now passes the flags parameter on to the Query. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2597 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3b7911f1 |
|
10-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
We now check in bfs_rename() if the new name is the same as the old name in the same directory - in this case, we will return B_OK (as nothing has to be done to fulfill the request), instead of B_BAD_VALUE which would be thrown later in the process. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2400 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
af9ba303 |
|
29-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_walk() now prints the file name if it couldn't locate a file with debug output turned on. bfs_open_dir() now accepts again all containers, because bfs_open_index_dir() is using it, too (too bad when you forgot about your own code). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2122 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
98138634 |
|
25-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added the private ioctl calls to get the 64-bit create and modified time. Most probably these are used by the kernel to identify changes in a shared library or something like this. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2088 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
97d569f0 |
|
25-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Now uses strlcpy() rather than strcpy() where appropriate. The inode is now locked in bfs_close() (when the indices are updated). Moved the special cases for INODE_NO_CACHE and INODE_CHKBFS_RUNNING into bfs_free_cookie() - should probably do that with the index update as well. Updated some comments. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2084 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f512ce42 |
|
21-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added a new inode flag INODE_CHKBFS_RUNNING to detect aborted chkbfs processes. bfs_read_vnode() will now wait for half a second at maximum until it returns the B_BUSY error (so that live queries will like it better). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2058 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5254026b |
|
21-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Removed the logic for freeing the inode's space from bfs_remove_vnode(); now instead calls Inode::Free(). If INODE_DONT_FREE_SPACE was set, bfs_remove_vnode() forgot to delete the inode before returning B_OK. bfs_read_vnode() will now return the exact error Inode::InitCheck() returned. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2056 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b24d7c8b |
|
19-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Many style changes. The only functional change is that bfs_rename() now checks for '/' in the target name (the VFS should do those things, but you never know as long you haven't written it yourself :). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2028 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
27fe0a4b |
|
17-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Adds support for INODE_DONT_FREE_SPACE, and all private BFS ioctls defined in bfs_control.h. Some minor cleanups. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1993 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e94373bf |
|
13-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added some comments, made bfs_create() a bit nicer (no functional change, though). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1929 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fb39a31c |
|
09-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a dead-lock that could happen if an attribute was changed and you 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
|
#
bbdc29a0 |
|
28-Oct-2002 |
Bruno G. Albuquerque <bga@bug-br.org.br> |
bfs_walk() should check for read permissions for iterating through directories, not execute permission. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1733 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7ab95d9d |
|
21-Oct-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Made it easier to switch from R5 compilation to the test "obfs" compilation. $ 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
|
#
2b5451f1 |
|
16-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added private non-implemented copy constructor and assignment operators for many classes for the sake of completeness. Added a Transaction::IsStarted() method to not let it look like as if the transaction is started more than once. Changes made after suggestions from Mike Nordell, again :-) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1067 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6829a19b |
|
16-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Now bfs_write() also don't trigger any notifications during write access on uncached files (might be needed for the VM file). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1062 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a00ac4bc |
|
16-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_write() called Volume::WriteCachedBlocksIfNecessary() also on uncached files which might cause troubles with the VM file. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1061 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ccc09203 |
|
10-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added power management functions to support Dano (needed to boot Dano using our file system): - added bfs_wake_vnode(), and bfs_suspend_vnode() - bumped B_CUR_FS_API_VERSION to 3 as needed for Dano It should now be able to boot Dano with our BFS, although I haven't tested it. The information was gained using some degree of reverse engineering... It won't be part of the BFS implementation for OpenBeOS (that won't run on R5 anymore) :-) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1010 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a130fd55 |
|
08-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Inode::SetFileSize() now doesn't allow changing the file size of uncached files anymore (only Inode::WriteAt() denied it before). Introduced a BFS_NAME define to be able to switch easier between "obfs", and "bfs". bfs_write_stat() didn't return the error code if Inode::SetFileSize() failed; instead, it always reported success. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@995 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ba04be1d |
|
19-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed the dirent.d_reclen calculation - define KEEP_WRONG_DIRENT_RECLEN to enable the old and compatible behaviour (on BeOS R5, all available file systems seem to do that wrong). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@826 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae38c6e9 |
|
12-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a bug that could lead to the wrong last_modified time in an inode; bfs_close() updated the last_modified time & index, but it didn't write the inode back to disk. Furthermore, bfs_write() should have already updated the last_modified time, not bfs_close. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@725 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e238bce6 |
|
12-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
BufferPool::ReleaseBuffers() didn't set fFirstFree correctly. Setting uncached access to a file no longer returns an error (if it succeeds). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@716 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6a2e0710 |
|
11-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed compilation (stupid me :-). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@709 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
40f7fd6c |
|
07-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented the basics to allow uncached file access under BeOS. This is needed for the VM swap file and if you want to mount disk images located on the BFS volume. There is now a BufferPool class that manages a pool of buffers, so that Inode::ReadAt()/Inode::WriteAt() can access a file without having to use the cache or malloc()/free(). The real uncached file access is not yet implemented, though. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@643 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c42ee134 |
|
07-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Initial revision git-svn-id: file:///srv/svn/repos/haiku/trunk/current@639 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
44b69ccbdb65be0ee0f6ececa9279397f8908d84 |
|
17-Aug-2015 |
Michael Lotz <mmlr@mlotz.ch> |
bfs: Use negative caching on directory lookup failures.
|
#
de9c0613398645390b8d450089051b2888e2e15b |
|
03-Jul-2014 |
Axel Dörfler <axeld@pinc-software.de> |
bfs: Use the QueryParserUtils instead of its own copy. * Ingo copied the methods into a shared location, and then obviously "forgot" to let BFS use them. As a side note for Ingo: the complete error GCC reported was "std::fssh_size_t" not defined with the macro wrapper as code location. The actual problem was a "using std::size_t" in some C++ header that accidentally got included after the wrapper. * The shared Query code is not yet used. That'll be done another time. * Renamed BFS_SHELL define to FS_SHELL, such that QueryParserUtils can be used in any file system shell, not just the bfs_shell.
|
#
547cd462f843df15db02ed0dd7a35528221b66bc |
|
02-Nov-2013 |
Axel Dörfler <axeld@pinc-software.de> |
trim: Added is_called_via_syscall() function. * And use it in get_trim_data_from_user(), formerly known as copy_*(). * This fixes differentiating between user and kernel buffers.
|
#
99086aa32333be5792b0f059ccbbe3c90be05ea6 |
|
14-Aug-2013 |
Axel Dörfler <axeld@pinc-software.de> |
trim: Target SCSI UNMAP command instead of WRITE SAME. * The UNMAP command is theoretically much faster, as it can get many block ranges instead of just a single range. * Furthermore, the ATA TRIM command resembles it much better. * Therefore, fs_trim_data now gets an array of ranges, and we use SCSI UNMAP to trim. * Updated BFS code to collect array ranges to fully support the new fs_trim_data possibilities.
|
#
0a0ba4b5f09da93410943578b6c5aa1f3aa60cb0 |
|
04-Aug-2013 |
Axel Dörfler <axeld@pinc-software.de> |
Added B_TRIM_DEVICE support to BFS. * It currently ignores the offset/size, though, and always trims everything. * Now only SCSI support is missing.
|
#
a01dd963464e7a1dd3e4f7fa1db77307f701b123 |
|
28-Apr-2013 |
Michael Lotz <mmlr@mlotz.ch> |
Return more than a single dirent at a time in bfs_read_dir(). Return as many dirents as fit into the provided buffer. The readdir() implementation in libroot tries to get many dirents and caches them to reduce the amount of syscalls and the associated overhead. This reduces the syscall count dramatically for use cases where a lot of directories are enumerated. A "git status" on a Haiku repository for example goes from over 50k read dir syscalls down to just under 7k. The performance gain is only around a moderate 5% in that use case though.
|
#
caa1e8b74245bd1602bd9d6ae642e34beb583a00 |
|
31-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Fix CID 712419, 712420, 712421, 712422: Unintentional sign extension to 64 bits.
|
#
3cd66dda5e623130a5ef7560da6851d421fd591e |
|
31-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Fix CID 712419, 712420, 712421, 712422: Unintentional sign extension to 64 bits.
|
#
eb5f36397841abfc740031fde56ca5e4dee9fdd3 |
|
12-Feb-2012 |
Jerome Duval <jerome.duval@gmail.com> |
Fixes some occurrences of 'variable set but not used', disables Werror for problematic items.
|
#
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
|
#
90ade5e2987f2b3fa617d09630c1398bf238d955 |
|
12-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added file_system_module_info::uninitialize() analogously to partition_module_info::uninitialize(). * Implemented the hook for BFS. * Implemented KFileSystem::Uninitialize(). Fixes failure to initialize a BFS initialized device with an intel partition map. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42142 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f53ec236e22695929663822b4050b3cfe9a10c09 |
|
02-Mar-2011 |
Jérôme Duval <korli@users.berlios.de> |
changed ioctl hook return code when the opcode isn't supported. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40784 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
48ec4fbb40a9ac5327e0351486946403d0b533b8 |
|
09-Nov-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Rohit Yadav that fixes #6750, thanks a lot! * This changes Inode::CheckPermissions(), and bfs_write_stat() based on Ingo's solution in his file corruption test file system. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39378 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d63f4274b665d32065f24a7a01a025578c8a43c9 |
|
18-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
added a file system call preallocate() as described in #6285, currently unused git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39006 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
950f37b2069f10d297d7192726f70be915a49e80 |
|
13-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* renamed bfs_inode::ToUsecs() to bfs_inode::ToNsecs, as it really converts to nanoseconds. * added a comment explaining the nanoseconds conversion git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38965 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
75148e0193474578fcd6771f0c45d5f24de12f8a |
|
14-Aug-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Janito that fixes broken reverting when a rename operation failed on last chance. Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38103 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
386be45abcfda37fcb4f30a664150430dac19aac |
|
24-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fixed 64 bit warnings. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36928 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9d570af7c878ba30043b23e6dce5f3ae5578aa7c |
|
24-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Changed the type of the "op" parameter of the fs_vnode_ops::ioctl() hook and the _kern_ioctl() syscall from ulong to uint32. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36927 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a1a8f33d14eaedeb0847d5cf4f07d5b948cc2d2 |
|
10-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Janito that solves a TODO and utilizes the actual device block size to align the file map. * This closes ticket #5707, thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36144 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d501707d8abd1f3648bed3a4f975e3a984a5e6f1 |
|
03-Mar-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed the cookie field of the check_control structure; that really was a stupid idea. Instead, the already existing fCheckCookie member is used. * bfs_ioctl() now accesses all userland buffers safely, this should help with #3264, and move the crash where it belongs. * Changes not yet tested; they only affect checkfs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35743 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b2397539da89844a78dff31d53970c82d56d7395 |
|
05-Jan-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* BFS now correctly reports the B_FS_HAS_QUERY flag (ie. if you disable the indices it will no longer be set). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34909 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4ea6fb8bd4961cdd6177dcfa90a14ec09c94c3e4 |
|
27-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the query code again to send B_ENTRY_REMOVED/B_ENTRY_CREATED notifications if an inode in a query result was moved/renamed - this time all the information is correct, though. * While I did not introduce B_ENTRY_MOVED for queries yet, this should make adding it very simple (left as an excercise for the reader ;-)) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34317 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f2505b15830415f341ae4d6d18815d481f41b921 |
|
26-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Implemented O_DIRECTORY in BFS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34280 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8859eeab5349da39ee9972ee0943919740754b77 |
|
24-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Replaced "%Ld" and "%lld" in printf()s by the new B_PRI* macros to avoid warnings when building with a 64 bit compiler. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34216 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b6670723e10c2065fd7c156a93b3046d4c1994fd |
|
11-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Only remove the inode from the Volume::RemovedNodes() list when it has gone through the VFS. * This fixes bug #4942. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34007 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f40c5e32115c22bd1b76ee1abe607040c09681a9 |
|
05-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* common_rename() now checks the name for validity before passing it on to the file systems, so those checks don't have to be duplicated there, anymore. * Minor cleanup, mostly automatic whitespace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33895 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b944eec20dd1b26dd3b7878acc90b3acda1151d |
|
29-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Improved the status_change time check to actually filter out invalid times, before, st_ctim was never updated; since you cannot change st_ctim via an API, '0' cannot ever be set, either. * Inode::WriteAttribute(), and Attribute::Write() now return whether they created an attribute or not, and thus B_ATTR_CREATED is now correctly set. * Moved status_change update from bfs_write_attr() into Inode::WriteAttribute() where it can be handled more efficiently. * Likewise, Inode::RemoveAttribute() now updates the status_change time as well, I simply forgot this before. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33832 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b43e064ecc0bdfa425f9fde9652dd4bf147a410b |
|
29-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Attribute changes now also change the status change time. * While Ingo already convinced me to use the modified time for this instead (see People files, for example), I did not do so for two reasons: 1) The file modification date is important to the user; more or less hidden attribute changes shouldn't have an effect on this. 2) Efficiency: the last_modified field is indexed whereas status_change is not. Speed would suffer noticeably else. * We might want to think about a new "stat::st_attrtim" field, though, instead. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33825 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aeb099b317eda4eb3c4b3318222e0a7d3ed2867f |
|
19-Oct-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added a very simple way to fragment your disk. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33674 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
425cb3d71644c19d925f97846964a32475b09b95 |
|
09-Sep-2009 |
Oliver Tappe <zooey@hirschkaefer.de> |
* revert r32999 and adjusted each filesystem to return B_NOT_A_DIRECTORY in its open_dir() implementation instead (as suggested by Ingo). -alphabranch (it's only a cleanup) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33025 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1a60fd72cf588ed0d25028da354261b4d8409c08 |
|
06-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced the Inode::GetTree() method with a simple getter - the tree is always created for directories since quite some time now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
134e1b04d4256ec2958a6e2454318c46aea0acd3 |
|
06-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Somehow I forgot to update the parent directory's time stamps on file creation, removal, and name changes... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32157 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
533cba7eff7465e14de98036c8a2a0aeeba2bdf9 |
|
28-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
bonefish + axeld: * Reverted r31809 as it introduced a race condition; if the I/O request had been notified, it could already been deleted at that point. * Instead, we need to notify the request in each file system/driver that uses it. Added new notify_io_request() function that does that exactly. * Added a TODO comment to the userlandfs where the request notification needs a bit more thought. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31903 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b77d5a6cbf1c7dbc56e4a5b8ba2ff98fe10590e2 |
|
28-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Almost all Transaction::Done() return values are now honoured. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31862 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a3a8bfa9a0be87bead347e50959f9a67534bc55 |
|
28-Jul-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Journal::_WriteTransactionToLog()'s return value was ignored previously, leading BFS to report success on actually failed transactions. Those transactions were even kept open, leading to a panic when starting the next transaction. * Transaction::Done() now returns a status - currently, this is only handled correctly where this is likely to happen without a disk fault, ie. if the transaction was too large to be written back safely. * Improved "bfs_journal" command output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31850 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e49449412249a5175d2e69da8a3830121379b46c |
|
15-Jun-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Cleanup of how the time is converted between bfs_inode and the outside world: there is now a couple of conversion functions, and I changed the type from bigtime_t to int64, as it's not what a bigtime_t would usually contain, but some shift magic in order to make duplicate index entries less likely. * We now correctly fill in the timespec in struct stat as good as possible; the 12 of the 16 possible bits are used for the nano second value. The lower 8 bits are used to avoid the duplicate index entries. Only if the nano second time is 0, the lower 12 bits are used to achieve that. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31057 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
33203f677e24af9885c58e4407faa4cd44f130df |
|
25-May-2009 |
Oliver Tappe <zooey@hirschkaefer.de> |
* added support for ctime to BFS by grabbing two of the pad-fields * added TODO about a sanity check that should perhaps be dropped I checked this change with both a haiku-BFS partition and one from R5 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30852 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a786c139ef3ebe2ac00e4de9231b1e666260a2b0 |
|
08-May-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed the work-around that allowed to open directories read/write. See ticket #3875. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30675 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
24b822d843be9b891e7e9ebba99741b65e89647d |
|
17-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* No longer hold the write lock when calling Inode::FillGapWithZeros(), as this potentially deadlocks as described in bug #3768. The system is still completely unresponsive, but gets back to a working state after some time now. * Since the rw_lock is public, Transaction and InodeReadLocker no longer need to be friends with Inode. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30221 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
992fba36eef8b17808a06d483f2fdad90173b01d |
|
16-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* There is now a list of removed vnodes in Volume - while asking the VFS for this seemed to be a good idea, there is one race condition that cannot be solved otherwise (the vnode must be added/removed to that list while holding the transaction lock, and we cannot guarantee that in the VFS). * We are using an unused area of the in-memory bfs_inode to store the list links (bfs_inode::pad - this will also work on 64 bit platforms). * Inode no longer adds a singly linked list link - the transaction list now shares the doubly linked list with the removed vnodes list. * Added an in-memory flag INODE_IN_TRANSACTION to avoid searching an inode to be added in the list. * Removing an attribute directory did not hold its write lock. * If removing an attribute failed for some reason, the INODE_DELETED flag was not removed (the transaction would not have failed because of that). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
973032b8d79f6cd6f7ba68b6dd318e25b669db0e |
|
29-Mar-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added TODO for Axel or whoever is interested. :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29781 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
|
#
aa4ba93e25c1c63730ba69e04d3d96c3253924fd |
|
08-Mar-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Renamed src/system/kernel/device_manager/io_requests.{h,cpp} to IORequest.{h,cpp}. * Introduced public <io_requests.h> header. Currently it only declares the single function BFS uses. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29446 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
49004dc730f842ea3c162b56dee63696c51d17c7 |
|
19-Feb-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Remove the additional fs_vnode_ops arugment from get_vnode() again as it's not needed at all when used as intended. Thanks Ingo for the explanation on how this is intended to work. Adjusted the overlay fs accordingly and updated/reverted the changes to the other filesystems. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29250 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
00405f2286fd370a0bd264d0bbac0cfa120e7646 |
|
09-Feb-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Add an additional argument to get_vnode() that gets the fs_vnode_ops of the node. That is needed for a layered filesystem to be able to construct a full fs_vnode out of a volume/inode pair. * Adapt places where get_vnode is used. Sadly this is a C API and we can't just use a default NULL for that argument. * Introduce a flag B_VNODE_WANTS_OVERLAY_SUB_NODE that can be returned in the flags field of a fs get_vnode call. A filesystem can use this flag to indicate that it doesn't support the full set of fs features (attributes, write support) and it'd like to have unsupported calls emulated by an overlay sub node. * Add a perliminary overlay filesystem that emulates file attributes using files on a filesystem where attributes aren't supported. It does currently only support reading attributes/attribute directories though. All other calls are just passed through to the super filesystem. * Adjust places where a HAS_FS_CALL() is taken as a guarantee that the operation is supported. For the overlay filesystem we may later return a B_UNSUPPORTED, so make sure that in that case proper fallback options are taken. * Make the iso9660 filesystem request overlay sub nodes. This can be fine tuned later to only trigger where there are features on a CD that need emulation at all. If you happened to know the attribute file format and location you could build an iso with read-only attribute support now. Note that this won't be enough to get a bootable iso-only image as the query and index support is yet missing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29177 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b6b002b81ecc76f0aafa8388e003a97634e8139b |
|
23-Jan-2009 |
Jérôme Duval <korli@users.berlios.de> |
when renaming, check first with the newDirectory instead of starting at its parent. this should fix #3355 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29001 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e677f5aa675fce95e7558cf58fee40afd6df554d |
|
10-Jan-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed two possible crashing bugs in the file system check code: the checker was attached to the inode instead of the file descriptor, causing it to call BlockAllocator::StopChecking() whenever anyone closed the device's root node during the check. The other bug was that it tried to fix errors even if the device was read-only. * Added TODO that ioctl() accesses userland buffers unsafely. * Removed no longer valid or superfluous comments. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28869 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
64e0d0841b2276f67a953dd09e900743b7cb5a2b |
|
02-Jan-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Inodes are no longer trimmed from the checking thread. This should fix bug #3190. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28845 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
243680e81945d4a4845f7e4b79608b3e3dd4159a |
|
26-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Forgot to cast before the shift; this fixes the problem seen by Bruno. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28736 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b614227bfdce1528385195b25028c35322dbbb76 |
|
26-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* In bfs_write_stat() B_STAT_UID, B_STAT_GID, and B_STAT_MODE now also trigger an update of st_mtime. This is a work-around for the unmaintained st_ctime, and this also fixes bug #3143. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28734 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2bb834901cbb71569579fe4a0b48d5b85ad1e54e |
|
17-Oct-2008 |
Michael Lotz <mmlr@mlotz.ch> |
Fix two bugs related to the use of the entry cache for parent entries in BFS: * The parent entry ("..") of a directory was not removed from the cache when its directory was removed. * When moving a directory to a new parent, it's cached parent entry wasn't updated. Those would lead to stale cache entries for directory parents. If a certain inode would be reused to create a new directory after removing another, this would lead to an invalid inode being returned when looking up the parent of the new directory. This was easily reproducible by unzipping some directory structure, deleting it and unzipping it again. You would end up with many "inode already deleted" messages. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28214 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
218f8c8632338544bca52685c8a8b78f7ee42b6a |
|
17-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Give a more detailed error message in case someone just tried to access a deleted inode (which might always happen when accessing an inode by ID), for example by using the BDirectory(node_ref&) constructor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28213 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
057f999da63f5d006591b41a284c0cd50ccbb042 |
|
13-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added a flag B_DISK_SYSTEM_SUPPORTS_WRITING to determine whether or not a file system can write to files before mounting. * Set the flag for all file systems that actually can write. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28055 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cfa4660b4781a22a25f43bb71561450fc30ecf4e |
|
13-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the way the BFS_IOCTL_UPDATE_BOOT_BLOCK ioctl works; it's a bit more flexible to use now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28053 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9fc81c5394e80ee0be60037cd8c98b526420b44c |
|
11-Oct-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Use a block size of 512 - since there is no standard, we're just following the masses (whatever stupidity created this misery). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27978 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b2ec044cb8a930fe55b3a3d899f2e854d955f1d5 |
|
30-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added stat::st_blocks field as required by POSIX. This also closes ticket #2261. * Made at least BFS report it more or less correctly (the attributes are ignored, though). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27791 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0914d6da5a40eaae11d8eae3cb240c7089366b1f |
|
26-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27750 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dea4ee198060670d577fa73e36d8b6784ddc74a1 |
|
14-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the error return by bfs_link() to B_NOT_SUPPORTED. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27501 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
57b9debf766c370dff725412c27ab09701f1d05f |
|
13-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Some index updating functions did not take into account that not all nodes are put into all indices. For example, symlinks aren't part of the size index. This fixes bug #2704. * Also, Inode::NeedsTrimming() now ignores symlinks that have no data stream, it's const now, too. * Added helper methods Inode::In{Name|Size|LastModified}Index(), and use it where appropriate. * Clarified Inode::Create() description with regards to name vs. parent. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27471 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b41928bf4820cf567754a9d7a86cb6dfc8f555ef |
|
07-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Use the new entry cache. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4612433715fc0477740693682ec4a642c1a4c6e1 |
|
30-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added parameter "size_t align" to file_map_translate(). If > 1, the vector at the end of the file will be aligned to the given value. * BFS uses an alignment of 512 bytes (should be block size of the underlying device or BFS block size, whatever is less), which should be fine, since file data are only stored in BFS blocks. This totally avoids any partial operations at the I/O scheduler level, thus saving disk operations. Not that I could measure any performance difference. Theoretically it should help a lot though, particularly when dealing with lots of small files, since we avoid using bounce buffers, which are (a) limited in number and (b) require copying of the data. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27246 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9d4ec2ee7fae1029ecb2eb9b94e1e5a7feb8096e |
|
18-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
The return value of the identify_partition() hook is not error code compatible. Small floats have to be returned. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27040 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f57b05f1dc4c8f355a72d9315ec0dba6e065a41 |
|
13-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Temporarily use the private I/O request API to decide whether or not the request is a write request. * This closes bug #2579, thanks BGA for the investigation! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26958 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bbc9703cc32db565b85a30ba2d6bd8996769a045 |
|
10-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
As suggested by Rene and Andreas: Use '%lld' instead of the non-standard '%Ld'. This solves build problems in Solaris. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26923 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3656dc0d61577b521720cefecca511aed97c0d50 |
|
09-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed debug tracing that obviously slipped in in a former commit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26908 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c7dc57457d4b12769f8b5671aec64247f56abefe |
|
04-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* We must call file_cache_disable() with O_NOCACHE also in bfs_create(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26796 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
88a2565650749a2ee9436f0e5f2a2077d21bf03e |
|
03-Aug-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added support for O_NOCACHE/O_DIRECT. * bfs_open() was leaking the already allocated cookie in several error conditions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26780 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
02c8f6c89d13b94c5507012eaadddc79982c976f |
|
02-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Coding style cleanups, no functional changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26728 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2accd07be4d2731332674ebf8d801260b5388130 |
|
01-Aug-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced Chain with the new SinglyLinkedList. * Renamed openModeToAccess() to open_mode_to_access(). * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26718 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2e3477e3d851cc46fa682712c3f73dbb82d64fd9 |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed the inode write locking to be held as long as the transaction is running - this fixes several cases where someone could see outdated data when a transaction had to be reverted (the time between unlocking the inode and actually reverting the blocks). For that, Inodes can now be put into a singly linked list. * Added a TODO in Inode::WriteAt() which explains why it cannot use the above method: seems that our VFS/VM locking model isn't really that good. * Fixed a possible deadlock in Attribute::_Truncate() where the inode write lock was held before starting the transaction. * Added an InodeReadLocker convenience class, that should be used instead of ReadLocker - Inode::Lock() only still exists because of the needs of bfs_io(). * Moved the bfs_io() callback hooks out of the exported module API region, and removed their bfs_ prefix. * Added a Volume::IsInitializing() method that should be used rather than checking if Volume::ID() is >= 0. * Removed the MultiInodeLocker again, as it's pretty much superfluous now. * Moved openModeToAccess() to the Utility.h header. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26715 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
274e684a8e5c7b8bf60551ca760ecfb34680b7e4 |
|
31-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_rename() did not write lock the moved inode, but only its former and new parent directories. This would only be necessary in case it's a directory, but we do it always now. * This fixes bug #2556. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26694 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f12cc54a729622cd04940ee9400958413d99b21 |
|
30-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* It is now supported that I/O operations and requests are only handled partially (e.g. due to hitting the end of file). The respective classes have grown new methods and attributes to deal with that. The "finished" callbacks have got additional parameters to indicate whether the transfer was only partial and how much has been transferred. Other callbacks and functions have a size_t* in/out parameter instead of a simple size_t, now. * vfs_{read,write}_pages() do now use the I/O request framework instead of the underlying FS's {read,write}_pages() hooks (those should be unused now). Furthermore they've got an additional "flags" parameter, which is passed to IORequest::Init(), i.e. it allows to specify that the given vecs refer to physical addresses. * The file cache's read_into_cache() reads directly into physical pages, now. * Fixed bug in DoIO::IO(): The offset was not adjusted, so that all pages were incorrectly transferred from/to the same location. * Fixed broken subrequest scheduling loop head in do_iterative_fd_io_iterate(). * Adjusted the test driver and implemented its io() hook. Using this driver I/O requests are passed all the way from the VFS/VM to the driver and through the I/O scheduler. It even seems to work. :-) * Added missing const to the iovec* parameter of the IORequest::Init() methods. * Disabled some debug output by default. Added new optional debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26692 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b99521f213e60f88b3d7700f395fb0c4bf99f63a |
|
30-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
First round of locking fixes: * Moved locking the data stream out of the BPlusTree methods; this fixes at least two locations where another thread could have seen outdated/incorrect data. * Removed some superfluous code in bfs_rename(): we don't have to revert to the previous situation, the transaction does this for us automatically. * Added a simple MultiWriteLocker, even though it's not really necessary anymore (since we always hold the transaction lock first when we lock more than one inode at a time). * Inode::Create() called InodeAllocator::Keep() a bit too early, the file cache and map wasn't created and assigned yet. * InodeAllocator now keeps the inode write locked. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26689 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e9c954c387d674831c04b40863cb9ca92082c08a |
|
29-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Use file_map_translate() instead of bfs_get_file_map(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26678 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
344150c171daf8f752f5c560aea301a68293c487 |
|
28-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Implemented the io() hook. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26671 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ec598fe493579e3d522453cb407ca3c6b57d715a |
|
27-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 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
|
#
e6bd90c58dbae64f3b464edcff90dcb06e63a716 |
|
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 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
|
#
fe08828a3cc59838a91f70b469043419437e705e |
|
23-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* The identify_cookie was allocated unchecked, spotted by Stippi. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26576 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
082bae1aa58dd0021d69aaa2dc05de7b33b75854 |
|
23-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_fsync() no longer grabs the Inode's read lock - instead, Inode::Sync() will take care of the locking. * Use new(std::nothrow) over new, and malloc (only in kernel_interface.cpp); the kernel_cpp.h header isn't really necessary anymore, so there is no reason BFS should continue to use it. * Removed superfluous NULL checks. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26574 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9083840f3462752eeba06158182a11a1e86c7aac |
|
20-Jul-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
bonefish + mmlr + axeld: * Fixed a bug that could easily corrupt your disks (yeah, one of those again): bfs_get_file_map() truncated the last vec incorrectly and would potentially return a too large file size -- which was later happily overwritten with file data, but could have belonged to anything but that file (like inodes, B+trees, etc.). * Renamed previous round_up() function to key_align(). * Added round_up() template function, and used it where appropriate. * The latter actually fixed two bugs where the and mask was computed in 32 bit where it should have been in 64 bit. * Inode::FindBlockRun() should have checked the max indirect size instead of the direct size - this didn't cause any problems, though. * White space cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26531 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c121d2ca1bf7777b61b78a56cc9f053d01aa0bc |
|
14-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed the bug described by Salvatore: since we let BFS open directories with read/write access, we shouldn't let it truncate the directory B+tree... * Also fixed allowing truncation in read-only mode. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1bde8b03e7789d10cdc063a8a4b23ce3cba6f2e1 |
|
08-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Replaced BFS's ReadWriteLock implementation with the kernel's rw_lock. * The BlockAllocator now uses the new mutex_transfer_lock() function instead of clobbering the mutex directly. * Removed Lock.h - it's no longer needed. * Minor white space cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26317 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
03fa417b706f63305263982a61eb1002e6ff9d96 |
|
07-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed the home-brewn locking classes in BFS besides the read/write lock (for now). * Inode::fSmallDataLock is now a recursive_lock, Journal::fLock is now a recursive_lock, too, Journal::fEntriesLock is now a mutex, as is BPlusTree::fIteratorLock. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26298 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0c48c43777589ae350081733ce20eb3d8cc4beea |
|
01-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed the bfs_write() error code for directories as suggested by Jerome. * Removed a few superfluous checks. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26191 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fdf3fa9fe13ad76512bea8d28e5ccb09e23d5d5b |
|
30-Jun-2008 |
Jérôme Duval <korli@users.berlios.de> |
read() expects B_IS_A_DIRECTORY on directories that can't be read. This fixes grep misbehavior with directories. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26186 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bcd307089b56ff8b0df050a4747a1405ff26ad80 |
|
28-Jun-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed a deadlock found by Salvatore; the volume lock is now only used to protect the bfs_read_fs_stat() and bfs_write_fs_stat() functions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26154 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ef098c9099eb6fbd035db1b28706b10ede24cea5 |
|
28-Jun-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed volume lock from bfs_get_vnode() - it's not necessary on Haiku. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26152 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1da9f5cea5ea4d32c539a01cd94a7b605e941beb |
|
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 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
|
#
fd4a010b054bb45d5d1feac80ccb5f7b5058a480 |
|
24-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
rename() is supposed to fail when the target exists and is not a directory only if the source is a directory. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25144 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d11e733fee81b682160c03a5d1cacb77b3a2faff |
|
24-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Allow passing sub vnode ops and publish flags to Inode::Create(). * Implemented create_special_node() hook. * Fixed Inode::IsContainer()/IsDirectory(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25140 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3daf03d3abcdec867fcc4682dd3106b2ba3c9f72 |
|
08-Apr-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
I broke the index dir access when changing the FS interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24868 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7ffafac8d76aa50ea68667e61038022220a90256 |
|
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 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
|
#
0e4edbeafa2c780bf873c1cdc8839cf0fb461300 |
|
04-Apr-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added checks to (hopefully) all write/create functions to bail out early if the volume is read-only. This should help with #2028. * Removed unused bfs_[de]select() functions. * Removed most paranoia checks - now that we control both sides of code, this would just hide eventual problems in the VFS code. * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24809 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
48931654004f0561f45c55f430e64150fa87cc79 |
|
25-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Inode::OldSize() is the size of the file before the last index update - this might be a bit older, so we cannot use it for the previous size in the call to Inode::FillGapWithZeros() in bfs_write_stat(). * This fixes the perl problem Ingo ran into after r24555. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24580 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a121b8c83ceba34954e7c187e84c206539207b3c |
|
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 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
|
#
1b32947d3f6c19dc1716a27d50361dcf59c27882 |
|
17-Mar-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Aligned the semantics of the read_symlink() FS module hook with the readlink() function. It is no longer required to null-terminate the string, shall not fail, if the buffer is too small, and shall return the length of the string actually written into the buffer. * Adjusted rootfs, devfs, and bfs accordingly. Also adjusted their read_stat() hooks to return the correct symlink length in st_size. * Our readlink() does now comply to the standard (and BeOS). Additionally if the buffer is big enough it is nice to non-conforming apps and null-terminates it. * BSymLink::ReadLink() explicitly null-terminates the string now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24425 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6cc5885822b9b22095b35f02c6856ac73ce21e88 |
|
15-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Improved error reporting when mounting a volume failed, especially when the log couldn't be replayed. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24400 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c6f752c0c5f38752dedaee4f781bdf23de395bdb |
|
06-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
Corrected patch to fix warnings when compiled with GCC 4, thanks Vasilis! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24279 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
351b7a2d2499a7c9929452009158a92ba9d66091 |
|
25-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added B_WATCH_INTERIM_STAT, and B_STAT_INTERIM_UPDATE definitions to NodeMonitor.h. * The latter will be set in "statFields" for interim updates when you have asked to get them via the former. * BFS now uses the B_STAT_INTERIM_UPDATE flag for sending updates to actively written files. * This makes us more compatible with BeOS again; if you only asked for B_WATCH_STAT, you will now only receive a notification if the file in question has been closed. * Tracker now uses B_WATCH_INTERIM_STAT to always get all updates (ie. downloading a file will update its size and modification time in Tracker periodically during the download). * Wether "needsTrimming" was true or not has no influence on wether or not the size index needs to be updated in BFS - only the actual file size is stored there, not the on-disk size. * Added a TODO comment in Inode::WriteAt() that it would actually need to update the size index when changing the file size, not when the file has been closed (but that's probably too slow). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24114 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4f045f9cba93358a7f890bc727e780796caf64fd |
|
14-Feb-2008 |
Michael Lotz <mmlr@mlotz.ch> |
Turns out the only thing we didn't do in bfs_free_cookie was - actually free the cookie. One memory leak less... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23960 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d7477802b8a5451ce525646fd2d4b13ef449c455 |
|
12-Jan-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Made the additions of the KDL debugger commands independant from the DEBUG macro; they are now added only if BFS_DEBUGGER_COMMANDS is defined (which is now done by default in the Jamfile). * Added "bfs" KDL command which dumps volume information and the super block. * Made use of the new tracing API to trace block and inode actions (and the new AbstractTraceEntry class I forgot to mention in the last commit). Is compiled in only when BFS_TRACING is enabled (defaults to off in the standard builds). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23464 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
21885de266a154a66d4027ba78b8c9ed8f12ac3b |
|
08-Dec-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* BFS now always writes back the whole block when it writes the super block. * Therefore, I've added an I/O control that let's it update the boot block part of this block, so that makebootable can use it on a mounted volume (this will probably be moved into a disk system API later). * Added user_memcpy() to the fs_shell. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23082 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4afaeabbd858d959a57593f0ad52e4c481709495 |
|
02-Dec-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_free_cookie() accidently reverted a transaction after having updated the inode's internal last modified and size copies, causing in inconsistent data. This fixes #1643. * The block being replayed are now dumped to the debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23050 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a31d30e84d78b7d06b9efa6c1dd96c292262e4a |
|
13-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The file map needs to know the actual file size to be able to know if it has the complete extent info or not. * file_map_translate() now cuts down the request to the file bounds. * Adjusted BFS and FAT to the API changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22913 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
364759e0d2beec229c1cbf54a6e73feb1079112a |
|
11-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The "bytes" as passed to {read|write}_file_io_vec_pages() was never initialized, causing those functions to read|write a random amount. * This fixes bug #1614 - amazing how well the system worked with those randomly sized requests... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22901 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f0d93820475083e456ce56c978bcb2b2cc80edd4 |
|
11-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The previous locking order "inode write" -> "journal" was not only not honoured (in the Inode attribute code), it also couldn't be honoured there. Therefore, the locking order is now reversed, that is "journal" comes first, then the Inode write lock. This should also help with the lock ups that appeared after r22886. * Got rid of INODE_NO_TRANSACTION; it doesn't make any sense to use. * When Inode::WriteAttribute() changed the type, the type field was actually never written back within the current transaction. * If the attribute data fit into the inode again, the attribute's write lock was never released. * Since r22886, Inode::ReadAt() does its own locking, so we must no longer lock the inode before calling it. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22897 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3d268eda3d0ca504c865533347decf27b54025b6 |
|
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 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
|
#
57225f0367dd88447cb87714cae045e76b9ec9c0 |
|
10-Nov-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved helper function to check initialization parameters to separate source file. Added function to check the volume name. * Removed bfs_validate_initialize(). This functionality is to be implemented in a userland add-on. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22871 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
db5c68ca46ce6f291fa5c047035418f6ccc89817 |
|
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 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
|
#
33e38cdad20cdf23dda9891adb94bf9b4ff7ca41 |
|
04-Oct-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Implemented bfs_validate_initialize(). It should probably do more checks (e.g. if the partition is big enough), though. * bfs_initialize(): - Report job progress. - Rescan the partition after it has been initialized, so that all partition_data fields are properly initialized. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22442 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
06cd40f399be8a650c8544187af8eb5930dc9ac7 |
|
04-Oct-2007 |
Axel Dörfler <axeld@pinc-software.de> |
Forgot to replace the error code with the new "mayBlock" logic, thanks Ingo! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22437 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3e9513aa4a8bf5f2fb2b86a767ffe46f6e626acc |
|
03-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 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
|
#
ab88b095f209c11a9d1d97fdbc7aa45f69639040 |
|
29-Sep-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_{read|write}_pages() now only try to lock - this fixes a possible deadlock whenever someone without a lock (like the page_writer()) is calling this function. * Added a new ReadWriteLock::TryLock() method. * Renamed bfs_read_vnode() and bfs_release_vnode() to bfs_get_vnode() and bfs_put_vnode() just like those functions are called in fs_interface.h. * Fixed a warning in BPlusTree::_SplitNode(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22372 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
76a8ec23db391176bac91f33c5f1fc6e8e41866c |
|
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 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
|
#
9e12e9a72e7fde25482302f2d9a6a680fd2c0e6a |
|
01-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 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
|
#
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
|
#
68fd0cb9642045681c43fac9c69096d3d1947f6a |
|
24-May-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Driver settings support is now available in the FS shell. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21234 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
065e31842971a008888c578c2c1f1a35c75de40e |
|
22-May-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* Inode::Create() now has a "_created" parameter that will be set to true in case a node has been created - this is now used in bfs_create() to suppress the new entry notification in case the file already existed. * Implemented parameter parsing in bfs_initialize() - does not work in the new bfs_shell though, as it currently misses driver_settings functionality. * Attribute::Create() and Attribute::Open() will now honour O_TRUNC correctly. * Note: Inode::WriteAttribute() still follows R5 semantics for small_data attributes in this regard and must be fixed (I've opened ticket #1242 for this). * Some cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21204 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9d6c014f662e29cc6f21aafce95609fb996ef1b9 |
|
29-Apr-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added very basic volume initialization support. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20899 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c391f84b2c732398288276bc8354ac4060dc5a4d |
|
26-Apr-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Prepared the BFS sources to be used with the new FS shell: - Moved all inclusions of system headers into a new system_dependencies.h header, which conditionally either includes these or the FS shell headers. - Fixed compiler warnings related to printf-like functions (int32 is int, not long on non-BeOS platforms). * Build a new bfs_shell. Compiles and links, but does nothing ATM. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20860 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4bf052db56bcd889690abd2afaca5f8bc70ed10f |
|
07-Mar-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed dummy strtod(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20349 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
12d359b85a22246a568569b09b6587534e98aacc |
|
04-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 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
|
#
230a0989fdcea9e7519990db11f4d15cbdfd39cc |
|
06-Feb-2007 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_free_cookie() now always write locks the inode - before it only hold a read lock which wasn't enough when tampering with the inode's data, and it also acquired that lock too late. Thanks to Stefano for pointing this out. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20079 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fc317af25e51b2c96c416b3d1fc01e3f0b168595 |
|
23-Jan-2007 |
Axel Dörfler <axeld@pinc-software.de> |
Writing to attributes was deadlock prone; the BFS volume lock was acquired with the BFS Journal lock held. Since our get_vnode() is no longer unsafe (unlike Be's version of it), we can get rid of the UNSAFE_GET_VNODE stuff, which also solves this bug. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19916 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1411be7744ceed9ae92e5ef360b09f4e8f99db79 |
|
25-Oct-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed a crashing bug when creating a long symlink - there was no file cache created in this case but used later on. * The length of a long symlink was one too short, and was thus always losing the last character. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19124 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
297f89345fa915545dcb669dcccd185ebd7b913e |
|
25-Oct-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* write_stat() should not add/update the last modification time of directories. Reported by Robert Szeleney. * Fixed an endian problem in write_stat() in the R5 version of BFS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19121 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
03a2985277308cd876dec79d8850edbb95f941b4 |
|
30-Aug-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* When releasing a vnode, it tried to trim down the allocation even if the file system was mounted read-only. * bfs_rename() did not check the access privileges of the directories involved. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18718 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
97e069713b80839b9dd5441b9f4d37d891b452d8 |
|
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 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
|
#
a4237b2a8e182d5d48b77294ce4b1f736ae85475 |
|
10-Apr-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* bfs_fsync() now locks the inode as it must do. * added a IsLocked() method to ReadLocked. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17057 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b61fdf78c6e0da8638a91542ef457ee9ca8e6ca8 |
|
28-Feb-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* The inode block wasn't written back when it was opened with O_TRUNC/B_ERASE_FILE which could cause inconsistency of on-disk structures. * Fixed copy&paste bug introduced by Ingo when he did the GCC 4 work-around: when shrinking the direct range, the new size was written to the indirect range. * Some cleanup, renamed private Inode methods to have a leading '_' symbol. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16557 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6106f57e218cbdc72d0de30b71ddd9973bbbc9d6 |
|
26-Feb-2006 |
Stephan Aßmus <superstippi@gmx.de> |
* Didn't allow to write back attributes outside the inode block (they don't have a user accessable stream, but they do have a file cache). * removed superfluous dump_inode() version; the "bfsinfo" debugger command is now a bit more useful as well. * Inode::fAttributes was not initialized when it wasn't used. (coded by axeld) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16508 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
15612acb76aa1384dfe5749a9808f1e431f13f2b |
|
25-Aug-2005 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_read_vnode() no longer tries to load a block when there can't be an inode (since it knows that it doesn't place any inodes before the end of the log area). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14068 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
65af8c83274b18217281fcd0435e96dd8b484339 |
|
12-Aug-2005 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_get_file_map() no longer returns the preallocation area as part of the file data - it checks if the current run goes beyond the file size and cuts it off after the block containing that last few bytes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13943 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
433cc8c2c9cce74470a620a8059ba83837eca94d |
|
01-Aug-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Added missing safety check when reading in a node. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13864 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1c12a6a33f1af79130b6b2da2ca7bf4d78610ab4 |
|
08-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Inode::ShrinkStream() now evaluates the return values from some functions - dunno if that's a good idea (it may still be a good idea to succeed for shrinking the stream, even if not everything worked), but it looks better :-) Improved debug output in case TrimPreallocation() fails. Journal::FlushLogAndBlocks() no longer ends the current transaction if called from within an ongoing transaction. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13019 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2dbdc141cf0ea22fa3fb8425a4d74b74b1736b11 |
|
30-May-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Transactions can now be nested (bfs_release_vnode() actually did that before, but that was not working correctly): only the owning transaction (the one that came first) can now end a transaction. To do: if the owning transaction fails, it should actually not abort the transaction in case there were sub transactions, but does so right now (should do no harm, eventually file data is not freed as it should). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12913 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bae7c12dba9651705d21c73470da51bdc16f016d |
|
25-May-2005 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_read_link() did not report the correct link size (it did not take the terminating null byte into account) - thanks to Korli for reporting this. Inode::Create() will no longer publish symlink vnodes; instead, bfs_create_symlink() will publish the link when it is complete (ie. the actual link data had been written). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12822 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
47f39c93cbd7db06e72642b047f1fc327852684c |
|
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 detection may now work (not yet tested, though). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12786 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
219dacab3cbce36004f4fe91f6c0ef2dbff1feb9 |
|
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 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
|
#
cbc6d404f9cf85f3b5c63217b514744413564fd4 |
|
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-0310-859d-f6bbb57e9c96
|
#
fa4244bffcbaadfadbd7cc12590ed2bc9046ccb3 |
|
13-Mar-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Simplifications due to the solved get_vnode()/new_vnode() mess; bfs_read_vnode() can now just do what it's supposed to do, even the bfs_inode::etc pointer is no longer used. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11722 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f0c7cb8c121173ece9b39e1dc6a121cfe949f80d |
|
02-Feb-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Ported over to the new notification API. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11224 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a4480535ade318237fb8382cb0545bb2c2d6323f |
|
19-Jan-2005 |
Axel Dörfler <axeld@pinc-software.de> |
No longer tries to update indices from deleted files. Added new method Inode::IsDeleted(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10879 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
381c5247e0555bd114924f97c6142594a04dd436 |
|
10-Jan-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed compilation in debug mode. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10630 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
071ac2932af6b0545e6ea0750d3fc03c22949972 |
|
12-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented bfs_get_vnode_name(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10410 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c02ff3b7757d60b043c111f163714f69a0acbaf0 |
|
12-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Reenabled query support for the Haiku kernel. Implemented bfs_rewind_query(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10405 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d48f7182eb8750dfe386f0d2c3404c99e61b8065 |
|
07-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Enabled full attribute support under the Haiku kernel. It's not as clean as it could, but it works for now. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10377 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e15a7ad3a398f37a44b9fa7207ed7e1922dc9840 |
|
03-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a big allocation leak: preallocation was done for all streams, but only regular files were stripped back when bfs_close() was called. Now, we don't preallocate any blocks for attributes, attribute directories, and symbolic links (which do have a stream when longer than 144 bytes). Also, bfs_release_vnode() now trims back all streams that need to be trimmed - this catches standard directories, which could also slip through before. Removed the remaining blocks of INODE_NO_CACHE support as this is not needed for Haiku. Added method Inode::NeedsTrimming() that determines if its data stream can be trimmed (indices are never trimmed to reduce fragmentation). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10356 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ef948c3cc75acd6d61d2ef6de17cfe1262d84230 |
|
27-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Yeah, sure, don't compile stuff before checking it in. bfs_open_dir() now checks for read access. bfs_lookup() now checks for execute access and not read access anymore (as reported by Ingo as well). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10273 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
41cf3876974fa4f855fed199a3839868c4fde86f |
|
27-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_create() now only checks for write access in the parent directory if a file really has to be created, thanks to Ingo for reporting this. Inode::Create() now checks for write access to the inode when O_TRUNC is set. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10272 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c6a62c60c366e302e9198bcf5187f317d4e866b |
|
22-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Now implements bfs_write_pages(). Changed some debug stuff. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10195 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fb02804a89b1100c0f20c3e3c28be28215103c44 |
|
19-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Big update while moving over completely to the Haiku kernel: - Ported over BFS to the new cache API - Inode no longer inherits from CachedBlock, and therefore, no longer keeps the whole inode block in memory. It now has a copy of the bfs_inode structure in memory instead. This has a number of advantages but also some disadvantages, so it might be reverted later, even if it's unlikely. - Added a NodeGetter class that can be used whenever the real block needs to be accessed (ie. for attributes) - Changed *transaction to &transaction where possible - Removed support for KEEP_WRONG_DIRENT_RECLEN - Removed support for uncached file access since that's no longer needed - Fixed some endian issues in bfs_write_stat() - Removed the install BFS rules, since they don't make any sense anymore (unless you are running Haiku ;-)) Note, logged streams are not supported anymore right now. Also, the transaction code is pretty simple and slow - it will be improved later on. Attribute code is pretty much untested in the new environment. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10053 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fac367f27df2549634007f026260f25ce3556a94 |
|
15-Nov-2004 |
Jérôme Duval <korli@users.berlios.de> |
fix to conform to the API git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9966 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
755901d8350088aefd03c769f8c75865bf3d5a8a |
|
29-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_read_stat() now correctly reports the size of a link for symbolic links that are short enough to be placed in the short symlink region. bfs_read_link() now makes sure that the link read is always null terminated. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9650 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ec3d3e05fe484c061ea1fe1b4aa59d8f679b66cd |
|
25-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented the Disk Device Manager Scanning API. It's currently exported as a separate module, but might be merged with the standard FS API. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9504 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9c137c0adf0fa64ada55b4ab16a85a0d48313bd7 |
|
05-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Enabled the bfs_set_flags() call. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
40f2ce7d205230e65f8cfa44cfc71fd9b7ddf90b |
|
14-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Activated the index functions and ported it to the the new VFS API. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8965 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0f3697566d6f05eb276ab606538d2debb8964f73 |
|
06-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The fs_readlink() function must work a bit differently in the new VFS API (ie. it needs to add the terminating null byte). It now also properly fails if the link is too long for the provided buffer. This allows us to resolve links on BFS volumes using Haiku again :) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8882 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a4e05e618a467d1af0433cde51683a33580ce6cc |
|
06-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Added a "cookie" parameter to the fs_read|write|has_page[s](). Implemented bfs_get_file_map(). Now uses the brand new file cache for the file data streams. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8877 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d5a48f5dcf84dda1d78b5717c5fa88f5e56ccc93 |
|
04-Sep-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The VM fs interface has changed to better match the one of the device interface. Added an fs call for the file cache. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8852 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
15190e07b33fe9763e1116a6328b503aa8cce98a |
|
10-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The current kernel version needs these functions to be there (it will crash if not). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7894 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
83d956957084e6f5f0f51dc51a2359de446ce698 |
|
08-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Missing name index update with a late failed rename operation fixed (the same as in kernel_interface_r5.cpp). {add|remove}_debugger_commands() are now called in B_MODULE_[UN]INIT, no longer in bfs_[un]mount(). Removed empty cache implementation as it's in the kernel itself for now. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7836 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1bfc2c69016e3f118e2cf8f3ca5d929128b142c3 |
|
07-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
First try at a working BFS for the new kernel - does compile but not much more. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7827 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
feec20d64b8c5be705c76f8ac957408c7c95df97 |
|
07-May-2004 |
Axel Dörfler <axeld@pinc-software.de> |
It's now <util/kernel_cpp.h> rather than <kernel_cpp.h>. Forgot to commit that... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7442 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6f7e72c0b72a3c4998bc2c46e65cb89c65582812 |
|
05-May-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the logic from bfs_close() to bfs_free_cookie() - apparently, doing anything in bfs_close() does not really makes sense. Thanks to Ingo for pointing this out. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7429 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e4758ac3824ebcac1e9862668512762f8a879dde |
|
03-May-2004 |
Bruno G. Albuquerque <bga@bug-br.org.br> |
Added BFS_REPLACEMENT define that will enable compiling OpenBFS as as full BFS replacement (will report itself as "bfs" instead of "obfs". Is there a way to change the add-on name based on the same define? git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7403 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5b25332a790992e509503f09c206a0c38d3c17ef |
|
01-Feb-2004 |
Axel Dörfler <axeld@pinc-software.de> |
This should fix the recently introduced locking problems: - locking policy is now: 1) the volume lock, 2) the inode lock, 3) start the transaction (the journal lock) - you don't need all locks, but you have to follow this order when you need more than one of them. - in many cases, this makes our inode read/write lock useless. I am really looking forward to the OpenBeOS VFS layer where we can remove many of these locks again. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6464 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b39a7a0edd6417fe5b7e4e04f5e01afe623672e7 |
|
29-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed the "inode is not becoming unbusy" problem. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
01338285a9dd86dc5d0353598d6615016890cd0d |
|
29-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Some minor style changes. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6417 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a49b150fff1fec5e4d3f0f6c774617111304e916 |
|
27-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Removed the fOwningThread functionality from the Journal class; it now just uses a RecursiveLock instead. Changed Journal::CurrentTransaction() so that it returns the current transaction only if it's valid for the thread asking for it. That doesn't fix the bug, but changed its timing a bit. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6356 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aac1dff95114f7675e700de990f6eebdcc4c6cc9 |
|
25-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Updated the comment in bfs_initialize() - which we don't need for R5 (as it's never called). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6314 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
aef00d7b03f89c7d8af36bdb3e202d410ad5a911 |
|
25-Jan-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Cleaned up the debug mess mmu_man has created (thanks anyway!). Fixed a bug where the debug commands would be added in bfs_mount(), but not removed (since bfs_unmount() is only called if bfs_mount() doesn't fail). Switched to kernel_cpp.h/cpp. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6290 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
91e6897c6321262a91daed30b1b5be7420c53679 |
|
24-Jan-2004 |
François Revol <revol@free.fr> |
Added obfsinode kernel debugger command. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6262 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6503b7c3bed1f6349fb2e1349565de461421de17 |
|
05-Nov-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Added missing statics; static functions doesn't need to be extern "C". git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5256 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cb94280c6b8450b48764df889cdf0a8fd19af64b |
|
16-Sep-2003 |
Axel Dörfler <axeld@pinc-software.de> |
The file system is now almost endian-aware. Used lazy unreadable conversion: ==, !=, == 0, != 0 are endian-safe and don't need byte swapping. If the platform endian differs from the one selected at compile time, it will mount all volumes read-only for now. Uncomment BFS_BIG_ENDIAN_ONLY in the Jamfile to build the big endian version under x86. No matter on what platform, the compilation defaults to build BFS as little endian file system (see bfs_endian.h for details). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4715 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f96b2bc0deb90ded2e08d340049d772bb6f43ac6 |
|
16-Sep-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Only send notifications if writing was successful. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4712 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a9d9dfa146df5d8a5b0c118501e3662dcd02239 |
|
18-Jun-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Added new RecursiveLock and RecursiveLocker classes. Added file system global locking around creating, deleting, and renaming inodes - that's not nice, but since we have only sequential journal access, it won't hurt concurrency much. The locks are needed to prevent certain things from happening like two threads could theoretically create the same file twice (one of them would have failed, but relatively late in the process). Anyway, a better locking scheme will be implemented at a later date, but maybe not for R1. Small cleanup. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3562 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a5e9fec88ea506295b027c46987061c7ee1f949 |
|
15-Jun-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Updated some comments. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3522 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8ea8d0c2bb1270149813f29b7cda0fba06f2210a |
|
31-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed queries a bit more (maybe even completely...). In several situations, the old attribute value wasn't evaluated at all. Also, Index::Update() got a type code of zero, instead of the real value in situations where this didn't make any sense. Minor cleanup in kernel_interface.cpp. New method Volume::CheckForLiveQuery() that checks if there is a live query depending on the specified attribute - not yet implemented, but already used; always returns "true" right now, which doesn't cause any harm but reducing the speed lightly. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3394 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f2024b115800d701366508abaad876eba52376b4 |
|
28-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed debug output in bfs_setflags(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3379 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a9aa5ee181fca87633fd02f5b966eaf9e01d7aca |
|
27-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented bfs_setflags(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae587160243f792a18663e03b0c77c93058fb24f |
|
27-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed another bad bug caused by calling get_vnode() on a node currently 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
|
#
a476bfc5b146a08af87ff292aa5b954753f8cc1b |
|
26-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Now waits for a whole second on the inode to become unbusy - just in case 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
|
#
98b972c906051113e46d46cfe8c02f5adebdd599 |
|
25-Feb-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed all warnings that appeared with DEBUG=1 set. Also fixed missing return codes in BufferPool::ReleaseBuffer() and Journal::WriteLogEntry(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2845 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2fee336b52cb217e8b2bf0973229cd50bf06aeee |
|
29-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Removed the load_driver_symbols() call, since it doesn't seem to have any effect anyway. Now passes the flags parameter on to the Query. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2597 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3b7911f105339ba9bc073bf4f26b5c90a3b19b3b |
|
10-Jan-2003 |
Axel Dörfler <axeld@pinc-software.de> |
We now check in bfs_rename() if the new name is the same as the old name in the same directory - in this case, we will return B_OK (as nothing has to be done to fulfill the request), instead of B_BAD_VALUE which would be thrown later in the process. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2400 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
af9ba303e44ced9e752f680bf5192f244972f587 |
|
29-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_walk() now prints the file name if it couldn't locate a file with debug output turned on. bfs_open_dir() now accepts again all containers, because bfs_open_index_dir() is using it, too (too bad when you forgot about your own code). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2122 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
98138634aafb9c5fdd246ef243f7f5ca9485c8a2 |
|
25-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added the private ioctl calls to get the 64-bit create and modified time. Most probably these are used by the kernel to identify changes in a shared library or something like this. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2088 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
97d569f0de473250ae5c6a3d4ace6546e0250c91 |
|
25-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Now uses strlcpy() rather than strcpy() where appropriate. The inode is now locked in bfs_close() (when the indices are updated). Moved the special cases for INODE_NO_CACHE and INODE_CHKBFS_RUNNING into bfs_free_cookie() - should probably do that with the index update as well. Updated some comments. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2084 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f512ce4233082b1fd9583c64fbd4459ad7a54e30 |
|
21-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added a new inode flag INODE_CHKBFS_RUNNING to detect aborted chkbfs processes. bfs_read_vnode() will now wait for half a second at maximum until it returns the B_BUSY error (so that live queries will like it better). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2058 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5254026ba2a0c9700b28e8d1f0f9f4b22beae241 |
|
21-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Removed the logic for freeing the inode's space from bfs_remove_vnode(); now instead calls Inode::Free(). If INODE_DONT_FREE_SPACE was set, bfs_remove_vnode() forgot to delete the inode before returning B_OK. bfs_read_vnode() will now return the exact error Inode::InitCheck() returned. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2056 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b24d7c8bf700f073d855fa22b46c3de974a1cc9e |
|
19-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Many style changes. The only functional change is that bfs_rename() now checks for '/' in the target name (the VFS should do those things, but you never know as long you haven't written it yourself :). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2028 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
27fe0a4b4be365a085ef142b1e5a5e1926cfe61b |
|
17-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Adds support for INODE_DONT_FREE_SPACE, and all private BFS ioctls defined in bfs_control.h. Some minor cleanups. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1993 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e94373bfa0b8220c409db958787fc872385d0152 |
|
13-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added some comments, made bfs_create() a bit nicer (no functional change, though). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1929 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fb39a31ca77347bc7657f848a764b6a784ee6bf8 |
|
09-Nov-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a dead-lock that could happen if an attribute was changed and you 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
|
#
bbdc29a05d5944932c92f6133506cb0cfa7cec79 |
|
28-Oct-2002 |
Bruno G. Albuquerque <bga@bug-br.org.br> |
bfs_walk() should check for read permissions for iterating through directories, not execute permission. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1733 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7ab95d9da94ccc3df95e8b2d97e1c2f71b100b97 |
|
21-Oct-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Made it easier to switch from R5 compilation to the test "obfs" compilation. $ 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
|
#
2b5451f1642e72a8bd34ccabac5c0b670f09f664 |
|
16-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added private non-implemented copy constructor and assignment operators for many classes for the sake of completeness. Added a Transaction::IsStarted() method to not let it look like as if the transaction is started more than once. Changes made after suggestions from Mike Nordell, again :-) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1067 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6829a19b3fc4c8fd42dd6d131f03dfc8404999d6 |
|
16-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Now bfs_write() also don't trigger any notifications during write access on uncached files (might be needed for the VM file). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1062 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a00ac4bc29ebc7d18dcacd38d3cdc47e5cb3ade0 |
|
16-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
bfs_write() called Volume::WriteCachedBlocksIfNecessary() also on uncached files which might cause troubles with the VM file. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1061 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ccc09203a59288a96d12ba3a25c6857600e4aefc |
|
10-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Added power management functions to support Dano (needed to boot Dano using our file system): - added bfs_wake_vnode(), and bfs_suspend_vnode() - bumped B_CUR_FS_API_VERSION to 3 as needed for Dano It should now be able to boot Dano with our BFS, although I haven't tested it. The information was gained using some degree of reverse engineering... It won't be part of the BFS implementation for OpenBeOS (that won't run on R5 anymore) :-) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1010 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a130fd552092e739e6d5540795f5e3cbaa5c3cfa |
|
08-Sep-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Inode::SetFileSize() now doesn't allow changing the file size of uncached files anymore (only Inode::WriteAt() denied it before). Introduced a BFS_NAME define to be able to switch easier between "obfs", and "bfs". bfs_write_stat() didn't return the error code if Inode::SetFileSize() failed; instead, it always reported success. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@995 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ba04be1db056769234a3b572138e5a7b916adb4d |
|
19-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed the dirent.d_reclen calculation - define KEEP_WRONG_DIRENT_RECLEN to enable the old and compatible behaviour (on BeOS R5, all available file systems seem to do that wrong). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@826 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ae38c6e93d625dc75f719411c39ab57557ce81b7 |
|
12-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a bug that could lead to the wrong last_modified time in an inode; bfs_close() updated the last_modified time & index, but it didn't write the inode back to disk. Furthermore, bfs_write() should have already updated the last_modified time, not bfs_close. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@725 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e238bce6f5a96d7aabf4a18aab2a063eda645759 |
|
12-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
BufferPool::ReleaseBuffers() didn't set fFirstFree correctly. Setting uncached access to a file no longer returns an error (if it succeeds). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@716 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6a2e071075cb0e334f1b9001e9f96fd9d8b1d3fb |
|
11-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed compilation (stupid me :-). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@709 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
40f7fd6cf3371d69b9d78ca406058a93648cf18c |
|
07-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented the basics to allow uncached file access under BeOS. This is needed for the VM swap file and if you want to mount disk images located on the BFS volume. There is now a BufferPool class that manages a pool of buffers, so that Inode::ReadAt()/Inode::WriteAt() can access a file without having to use the cache or malloc()/free(). The real uncached file access is not yet implemented, though. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@643 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c42ee13401be80c431846910959d587949a1ad10 |
|
07-Aug-2002 |
Axel Dörfler <axeld@pinc-software.de> |
Initial revision git-svn-id: file:///srv/svn/repos/haiku/trunk/current@639 a95241bf-73f2-0310-859d-f6bbb57e9c96
|