#
9d972e32 |
|
24-Nov-2023 |
Adrien Destugues <adrien.destugues@opensource.viveris.fr> |
ext2: do not use "extfs" as a short name. The original Linux extfs was short lived (less than a year) and is long forgotten. Still, to avoid any confusion, it's better to refer to our filesystem as ext4 (even if it is backwards compatible with versions 2 and 3). Mention all 3 versions in the "pretty name" to be even clearer about this. Previously this was called "ext2" but people then assume that it does not handle the later upgrades in versions 3 and 4 (which makes sense).
|
#
e1480b40 |
|
23-Nov-2023 |
Augustin Cavalier <waddlesplash@gmail.com> |
ext2: Adjust short and pretty names to just be "ext" and not "ext2". The filesystem name returned by read_fs_info will be correct (i.e. returning "ext3" or "ext4" as appropriate), but some things just list the filesystem driver's name, which can cause confusion. Change-Id: Ic4acf497fc5db5c167131aeb323b45eeb78594d6 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7126 Reviewed-by: waddlesplash <waddlesplash@gmail.com> Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
|
#
2d005cca |
|
03-Nov-2023 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: implement set_flags needed for fcntl(F_SETFL) Change-Id: I2e71bcf70d794f690985e8c26ae1b0be51a0e590 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7094 Reviewed-by: waddlesplash <waddlesplash@gmail.com> Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
|
#
6dd87330 |
|
29-Oct-2023 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: ext2_rename(): if the target exists, it should be unlinked. * the target inode would still exist, unreferenced. * also remove from entry_cache. * this fixes fsck complaining about unreferenced inodes. Change-Id: I4d48d6bf89bdd37d366da0ae4795e42bcc0532d9 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7078 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
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?)
|
#
a4f09ce9 |
|
09-Sep-2022 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: align dirent struct pointers with next_dirent() Change-Id: Iaf102916d77f077c48348e2d1e7deff8f37d1232 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5634 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: Jérôme Duval <jerome.duval@gmail.com> Reviewed-by: David Karoly <karolyd577@gmail.com> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
cf5f513b |
|
27-Apr-2022 |
Jérôme Duval <jerome.duval@gmail.com> |
file_systems: add entry_cache_(add/missing) in btrfs,ext2,exfat lookup methods. Change-Id: I77857421a65f371bc885f1d4eb66ef2ab4376e56 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5252 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
30294b6d |
|
20-Apr-2022 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: use st_blocks from the disk inode structure * this lets cp from coreutils use lseek to find the data chunks in a sparse file. * fix endian conversion macro used for num_blocks_high Change-Id: I221d6316002b1c491ae987aeef3f25e8721b5ab9 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5218 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com> Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
|
#
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.
|
#
1fb138bf |
|
12-Sep-2021 |
Franck LeCodeur <cassisian@gmail.com> |
ext2: Fix build warnings, enable Werror This fix is for ticket #9460 to enable -Werror for ext2. - Unused functions are removed. - The ASSERT macro was redefining a different ASSERT macro from the included files. Now it gets undefined first. - One comparison side was cast to ptrdiff_t because X86_gcc2 complained about signed/unsigned comparison Change-Id: Ib0caade2f83de34c04acc0fc6aa5ed50712daec4 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4453 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
|
#
ab57ee42 |
|
04-Dec-2020 |
X512 <danger_mail@list.ru> |
fix build after MethodDeleter interface change Change-Id: Iadb9e37772fd6588636085944c1455249ac0f926 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3457 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
602051e8 |
|
09-Nov-2020 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: implement FIOSEEKDATA and FIOSEEKHOLE ioctl commands Change-Id: I5f267620e904fe7bb294a4864a8ed017d27a7e68 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3387 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>
|
#
8d9eff58 |
|
08-May-2020 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
ext2: report ext2/3/4 fs name depending on available features Should help with #12157. Change-Id: I7ea0310957c06606bc66a289afe8c3a78540a803 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2610 Reviewed-by: Kyle Ambroff-Kao <kyle@ambroffkao.com> Reviewed-by: Jérôme Duval <jerome.duval@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>
|
#
ce4e12ca |
|
10-Oct-2018 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: implements metadata_csum and 64bit features. * Some PVS-Studio warnings are removed. * fixes hardlink count in source and destination folders on rename. * tested with fstorture and fsx (one job). * add new definitions. * import crc32c code from BSD. * add some consistency checks at mount. * DirectoryIterator::_AllocateBestEntryInBlock(), the direntry is checked for consistency before using it, which should avoid crashing on bad data. * DirectoryIterator::_SplitIndexedBlock(): the dotdot entry length should include the dot and dotdot entries length. Change-Id: I0f80d73b65b1ae6ddb2e746a6f85ef806f23dbb0 Reviewed-on: https://review.haiku-os.org/c/haiku/+/1735 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
cd6365c7 |
|
17-May-2018 |
Jérôme Duval <jerome.duval@gmail.com> |
style fixes
|
#
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.
|
#
26aef3ac |
|
11-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ext2: Fix enabling/disabling the file cache * Inode: - Rename {Enable,Disable}FileCache() to {Create,Delete}FileCache() and IsFileCacheDisabled() to HasFileCache(), since that is what they actually do. DeleteFileCache() now also sets the attributes to NULL, which makes fCached superfluous. - Introduce {Enable,Disable}FileCache(), which actually enable/disable the file cache. Use those methods for handling O_NOCACHE. * ext2_free_cookie(): Reenable the file cache in case of O_NOCACHE. Fixes crash when O_NOCACHE was used, since the file cache was deleted without clearing the attribute and Inode::ReadAt() would use the deleted object afterward.
|
#
05826ec7 |
|
11-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ext2_get_file_map(): Fix broken termination condition
|
#
a130bab3 |
|
08-May-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: fixes 64 bit warnings
|
#
c33b645d |
|
02-May-2013 |
Jerome Duval <jerome.duval@gmail.com> |
ext2: Return more than a single dirent at a time in ext2_read_dir(). * similar to what mmlr did in hrev45575 for bfs.
|
#
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
|
#
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
|
#
886d6531 |
|
31-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
forgot to add B_FS_HAS_ATTR when adding attribute support git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40337 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
85f15b4b |
|
24-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* uses std::nothrow when calling new. * fix an UDF reference. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40281 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
823a2382 |
|
18-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* support for setting volume label (bug #7100). * minor cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40243 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
230b9a69 |
|
20-Dec-2010 |
Jérôme Duval <korli@users.berlios.de> |
resource leaks CID 5711, 5712, 5713, 5714 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39902 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
45af882d |
|
18-Dec-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added fsblock_t and fileblock_t definitions, used them when needed. * validate fBlockShift in superblock. * Volume::AllocateBlocks() now uses an absolute fsblock instead of a blockgroup related fsblock. * AllocationBlockGroup now provides absolute fsblock values. * added support for extents feature: ExtentStream class is the equivalent for DataStream class for extent operations. The extent tree implementation is very basic, should work for normal growing/shrinking operations, but not for sparse files. When enlarging a file and extent tree is full, the root is moved in a new block and a new level is added on top. Extents can usually be extended when adjacent blocks are allocated. Shrinking happens by removing leafs one after another. * removed empty IndexedDirectoryIterator.* git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39886 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f7218c21 |
|
10-Dec-2010 |
Jérôme Duval <korli@users.berlios.de> |
* HTree::Lookup() was trying to find the entry .. through indexed search instead of linear search. Should fix #6305 * DirectoryIterator::FindEntry() now takes name length in account for name comparison. * cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39809 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ea75a051 |
|
09-Nov-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Rohit Yadav that fixes #6750 for ext2. Thanks a lot! * Fixed warning in Inode::WriteAt(), but left warnings in kernel_interface.cpp in there; I guess that's work in progress (although having the io hook would be nice). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39379 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a1cdecff |
|
07-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
DirectoryIterator changes: * RemoveEntry(): set inode id to zero when reaching the end of block * FindEntry(): keep on searching if Get() returns B_BAD_DATA * added _Offset() based on fLogicalBlock and fDisplacement * Next(): keep on searching when inode id is zero; also when entry length is zero, keep on with next block * added GetNext() to get the next valid entry. * Get(): now returns B_BAD_DATA on a zero length or inode id. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39343 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
82b3bdd4 |
|
06-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
Stop the journal on Sync(), start the journal when a transaction is written. This helps with fs state on shutdown. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39325 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
583f39e9 |
|
31-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* switched more uint32 to off_t for 64bit support * added error messages in InodeAllocator, Inode * if BlockAllocator can't initialize, don't fail completely but switch to readonly * fixed a bug in FindNextMarked() for bitmaps with a length non multiple of 32 * Inode::FindBlock() now returns an optional block_run length, useful for get_file_map() * added flag for Inode for extents git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39234 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d8772e0c |
|
30-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added some support for 64bit feature: extended struct ext2_block_group, block number types changed from uint32 to off_t * added error traces, asserts * BitmapBlock::CheckUnmarked() and CheckMarked() computed a wrong remainingBits and mask git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a55c611f |
|
24-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
added B_DISK_SYSTEM_SUPPORTS_WRITING flag on ext2 disk system, this is required to have mount_server ask whether mounting should be done readwrite or readonly git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39121 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
db1b905e |
|
20-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
ext3 inodes whose size is at least 256 bytes can also contain attributes (like smalldata for bfs). We now use the Attribute class from bfs (instead of AttributeIterator) to manage small data and block attributes, though it's still readonly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39036 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
|
#
6bfb10d3 |
|
13-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added support for extra inode attributes in volumes with an inodesize of 256 or more: this brings nanoseconds for access, change and modification times, and also brings creation time. * switched off some debug output * HTreeEntryIterator: fCount can equal fLimit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38964 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a1b0ec30 |
|
07-Sep-2010 |
Jérôme Duval <korli@users.berlios.de> |
Patch from Janito Ferreira Filho (aka jjvf): this is the result of his GSoC assignment "Implement ext2/3 Read and Write Support for Haiku". * Tested and checked most features and fs operations, while passing successfully the Linux fsck. Though the implementation still needs more testing and is to be used with caution, it's better in my mind to have the code committed now given the size of the patch. * Code style isn't extensively checked but is mostly OK. Code review is welcome. Some notes from Janito: * Sparse files aren't supported and hard links aren't supported. Write attributes methods aren't activated nor tested. * Journaling needs more testing to make sure it behaves in a compatible way to Ext3, and support for the different modes hasn't been implemented (due to the block and file cache incompatibility). Correct revoke management is also lacking, as is proper management of the superblock state and copies and block group copies. * The code is partly based and inspired by the BFS implementation. Author information might need to be fixed. I'd like to congratulate and thank Janito for his hard work to bring the implementation to the current state. I hope he'll keep on maintaining it and become a regular contributor/committer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38573 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
919f9c41 |
|
28-Jun-2010 |
Jérôme Duval <korli@users.berlios.de> |
Patch from Janito Ferreira Filho with fixes by myself: Ext3 Indexed Directory Lookup (as part of GSOC). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37295 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
17aad616 |
|
19-Apr-2010 |
Jérôme Duval <korli@users.berlios.de> |
Patch from Janito Ferreira Filho (bug #5706): limit the Inode ID to the maximum number of Inodes. Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36358 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2365cde2 |
|
11-Apr-2010 |
François Revol <revol@free.fr> |
- cleanup, - fix copyright, - disable tracing, - add support for reading attributes. The current naming is not final as I'm actually experimenting with it. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36152 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b026d219 |
|
11-Apr-2010 |
François Revol <revol@free.fr> |
Partial implementation for attribute support. Currently listattr successfully lists attributes on files. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36148 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
|
#
53ef70a0 |
|
29-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Patch by Bryce Groff: Fixed return values of the identify() hook. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31906 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
|
#
55ddbd7b |
|
13-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* When a file system reports -1 offsets in its fs_get_file_map() function, this will now accepted and regarded as sparse file data. FileMap::_Add() also correctly joins multiple vecs with that offset together, FileMap::Translate() will always report offset -1 even for offsets into that extent. * read_file_io_vec_pages() (or rather, its backend common_file_io_vec_pages()) now supports sparse files, and will just clear the memory it should read from offset -1 instead of passing a request to the vnode. * ext2 now correctly reports sparse files. This should close bug #2889, as well as #975. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28648 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2c348abb |
|
30-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Most of the other file systems now maintain the st_blocks value. It might not always be correct, but should be at least close. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27793 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
|
#
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
|
#
b7cb8f8c |
|
02-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Seems like GCC4 does not like declaring structures inside unnamed unions; that looks like a compiler bug to me, though. * Pulled struct data_stream out of the union (now called ext2_data_stream), based on a patch by Maurice, thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26214 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
13de3d07 |
|
02-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed wrong group block offset computation: the ext2_super_block::first_data_block must be used; the superblock offset doesn't matter if the block size is greater than 2KB. * Fixed block access beyond the 4GB limit - we need to cast the block to a 64 bit type in ext2_get_file_map() before shifting it. * Tested with various larger ext3 disks, and everything seems to work fine. * Added some optional debug output. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26213 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
af206cf2 |
|
01-Jul-2008 |
Jérôme Duval <korli@users.berlios.de> |
gcc4 build fix git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26204 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0680840a |
|
01-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added support for files larger than 4GB - not yet tested, though. * The stat::st_nlink value is now correctly reported. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26188 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
63db34c8 |
|
01-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Implemented a read-only ext2 file system. * It's not yet complete, doesn't support some ext2 stuff (like files over 4 GB), and might have some other bugs (I only tested it with a single 20 MB ext2 image). * To have a read/write ext2 file system, it would probably make more sense to port GNU sources (like ext2fs lib), and use that. But a small read-only ext2 file sytem doesn't hurt, I think, and I don't know if ext2fs lib would be feasible for kernel use (porting the file system from Linux directly would also be an alternative, but probably more work). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26187 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
26aef3ac62e67e29e7895213ef7c5253798564f4 |
|
11-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ext2: Fix enabling/disabling the file cache * Inode: - Rename {Enable,Disable}FileCache() to {Create,Delete}FileCache() and IsFileCacheDisabled() to HasFileCache(), since that is what they actually do. DeleteFileCache() now also sets the attributes to NULL, which makes fCached superfluous. - Introduce {Enable,Disable}FileCache(), which actually enable/disable the file cache. Use those methods for handling O_NOCACHE. * ext2_free_cookie(): Reenable the file cache in case of O_NOCACHE. Fixes crash when O_NOCACHE was used, since the file cache was deleted without clearing the attribute and Inode::ReadAt() would use the deleted object afterward.
|
#
05826ec74b13fa9e5daf7a56f30dc4aa40b67707 |
|
11-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ext2_get_file_map(): Fix broken termination condition
|
#
a130bab351822fb76ee1750cd4af6ba11ad70bbe |
|
08-May-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: fixes 64 bit warnings
|
#
c33b645d33c3c568b0371e13ee527676bf4931db |
|
02-May-2013 |
Jerome Duval <jerome.duval@gmail.com> |
ext2: Return more than a single dirent at a time in ext2_read_dir(). * similar to what mmlr did in hrev45575 for bfs.
|
#
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
|
#
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
|
#
886d6531a6aac8b135930367a0037069d6e5d7f2 |
|
31-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
forgot to add B_FS_HAS_ATTR when adding attribute support git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40337 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
85f15b4bf0968c13f0a7bc97dc507a7fce05dbdd |
|
24-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* uses std::nothrow when calling new. * fix an UDF reference. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40281 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
823a23829a5f584fbf019f74fa060ec7d3327418 |
|
18-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* support for setting volume label (bug #7100). * minor cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40243 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
230b9a69d3c77475de1a012055f99641f3884726 |
|
20-Dec-2010 |
Jérôme Duval <korli@users.berlios.de> |
resource leaks CID 5711, 5712, 5713, 5714 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39902 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
45af882d0698d575ec1b4883a8ebff276c9519d8 |
|
18-Dec-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added fsblock_t and fileblock_t definitions, used them when needed. * validate fBlockShift in superblock. * Volume::AllocateBlocks() now uses an absolute fsblock instead of a blockgroup related fsblock. * AllocationBlockGroup now provides absolute fsblock values. * added support for extents feature: ExtentStream class is the equivalent for DataStream class for extent operations. The extent tree implementation is very basic, should work for normal growing/shrinking operations, but not for sparse files. When enlarging a file and extent tree is full, the root is moved in a new block and a new level is added on top. Extents can usually be extended when adjacent blocks are allocated. Shrinking happens by removing leafs one after another. * removed empty IndexedDirectoryIterator.* git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39886 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f7218c2187ea34f01be1bed46a233afa1a641dcf |
|
10-Dec-2010 |
Jérôme Duval <korli@users.berlios.de> |
* HTree::Lookup() was trying to find the entry .. through indexed search instead of linear search. Should fix #6305 * DirectoryIterator::FindEntry() now takes name length in account for name comparison. * cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39809 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ea75a051ad0471a7fdeecd3be146bf73ca640716 |
|
09-Nov-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Applied patch by Rohit Yadav that fixes #6750 for ext2. Thanks a lot! * Fixed warning in Inode::WriteAt(), but left warnings in kernel_interface.cpp in there; I guess that's work in progress (although having the io hook would be nice). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39379 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a1cdecff94d6e914ca2370dc6b02c284a9843e62 |
|
07-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
DirectoryIterator changes: * RemoveEntry(): set inode id to zero when reaching the end of block * FindEntry(): keep on searching if Get() returns B_BAD_DATA * added _Offset() based on fLogicalBlock and fDisplacement * Next(): keep on searching when inode id is zero; also when entry length is zero, keep on with next block * added GetNext() to get the next valid entry. * Get(): now returns B_BAD_DATA on a zero length or inode id. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39343 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
82b3bdd45c2e1ccf7b80729aa9b52926b95d232b |
|
06-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
Stop the journal on Sync(), start the journal when a transaction is written. This helps with fs state on shutdown. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39325 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
583f39e94d4065be3e621924661b98d231f29b10 |
|
31-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* switched more uint32 to off_t for 64bit support * added error messages in InodeAllocator, Inode * if BlockAllocator can't initialize, don't fail completely but switch to readonly * fixed a bug in FindNextMarked() for bitmaps with a length non multiple of 32 * Inode::FindBlock() now returns an optional block_run length, useful for get_file_map() * added flag for Inode for extents git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39234 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d8772e0c207a59d026580f29e2390d4030d1bec6 |
|
30-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added some support for 64bit feature: extended struct ext2_block_group, block number types changed from uint32 to off_t * added error traces, asserts * BitmapBlock::CheckUnmarked() and CheckMarked() computed a wrong remainingBits and mask git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a55c611faedc75da63c4529d0ee31f73963ea6b3 |
|
24-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
added B_DISK_SYSTEM_SUPPORTS_WRITING flag on ext2 disk system, this is required to have mount_server ask whether mounting should be done readwrite or readonly git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39121 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
db1b905e370e63d8f5abf215351765fb08c4758a |
|
20-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
ext3 inodes whose size is at least 256 bytes can also contain attributes (like smalldata for bfs). We now use the Attribute class from bfs (instead of AttributeIterator) to manage small data and block attributes, though it's still readonly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39036 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
|
#
6bfb10d31252e972766d0f33ec85b431b2af2c15 |
|
13-Oct-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added support for extra inode attributes in volumes with an inodesize of 256 or more: this brings nanoseconds for access, change and modification times, and also brings creation time. * switched off some debug output * HTreeEntryIterator: fCount can equal fLimit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38964 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a1b0ec30977df3c4f608eaac97ddc03bf9d3b255 |
|
07-Sep-2010 |
Jérôme Duval <korli@users.berlios.de> |
Patch from Janito Ferreira Filho (aka jjvf): this is the result of his GSoC assignment "Implement ext2/3 Read and Write Support for Haiku". * Tested and checked most features and fs operations, while passing successfully the Linux fsck. Though the implementation still needs more testing and is to be used with caution, it's better in my mind to have the code committed now given the size of the patch. * Code style isn't extensively checked but is mostly OK. Code review is welcome. Some notes from Janito: * Sparse files aren't supported and hard links aren't supported. Write attributes methods aren't activated nor tested. * Journaling needs more testing to make sure it behaves in a compatible way to Ext3, and support for the different modes hasn't been implemented (due to the block and file cache incompatibility). Correct revoke management is also lacking, as is proper management of the superblock state and copies and block group copies. * The code is partly based and inspired by the BFS implementation. Author information might need to be fixed. I'd like to congratulate and thank Janito for his hard work to bring the implementation to the current state. I hope he'll keep on maintaining it and become a regular contributor/committer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38573 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
919f9c41da4d06c2ac637035adcfb62501d5dc88 |
|
28-Jun-2010 |
Jérôme Duval <korli@users.berlios.de> |
Patch from Janito Ferreira Filho with fixes by myself: Ext3 Indexed Directory Lookup (as part of GSOC). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37295 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
17aad616d2e30fb17ae710ded5daa0ea2ba76192 |
|
19-Apr-2010 |
Jérôme Duval <korli@users.berlios.de> |
Patch from Janito Ferreira Filho (bug #5706): limit the Inode ID to the maximum number of Inodes. Thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36358 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2365cde279adec2bb61e0ec37e37d8d4d8974f1f |
|
11-Apr-2010 |
François Revol <revol@free.fr> |
- cleanup, - fix copyright, - disable tracing, - add support for reading attributes. The current naming is not final as I'm actually experimenting with it. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36152 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b026d219fc2f97ac9df09996d41f408a459006d8 |
|
11-Apr-2010 |
François Revol <revol@free.fr> |
Partial implementation for attribute support. Currently listattr successfully lists attributes on files. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36148 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
|
#
53ef70a0df9328be0c46e32447bc5cc32f678770 |
|
29-Jul-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Patch by Bryce Groff: Fixed return values of the identify() hook. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31906 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
|
#
55ddbd7bca54878d861861e82c0c5a0d196c1b85 |
|
13-Nov-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* When a file system reports -1 offsets in its fs_get_file_map() function, this will now accepted and regarded as sparse file data. FileMap::_Add() also correctly joins multiple vecs with that offset together, FileMap::Translate() will always report offset -1 even for offsets into that extent. * read_file_io_vec_pages() (or rather, its backend common_file_io_vec_pages()) now supports sparse files, and will just clear the memory it should read from offset -1 instead of passing a request to the vnode. * ext2 now correctly reports sparse files. This should close bug #2889, as well as #975. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28648 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2c348abbf7aca35c66b88e159bdafa41f2a9743f |
|
30-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Most of the other file systems now maintain the st_blocks value. It might not always be correct, but should be at least close. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27793 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
|
#
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
|
#
b7cb8f8c30c1eab4f319e22095292fa1ebac95ea |
|
02-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Seems like GCC4 does not like declaring structures inside unnamed unions; that looks like a compiler bug to me, though. * Pulled struct data_stream out of the union (now called ext2_data_stream), based on a patch by Maurice, thanks! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26214 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
13de3d07679ac012dcb2f247d615073dd8f56c2f |
|
02-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed wrong group block offset computation: the ext2_super_block::first_data_block must be used; the superblock offset doesn't matter if the block size is greater than 2KB. * Fixed block access beyond the 4GB limit - we need to cast the block to a 64 bit type in ext2_get_file_map() before shifting it. * Tested with various larger ext3 disks, and everything seems to work fine. * Added some optional debug output. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26213 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
af206cf2d6d0c40d004ff5c8dccdcb2c070157db |
|
01-Jul-2008 |
Jérôme Duval <korli@users.berlios.de> |
gcc4 build fix git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26204 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0680840ad1348f5f36a894e01ffd7da2d5685db8 |
|
01-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added support for files larger than 4GB - not yet tested, though. * The stat::st_nlink value is now correctly reported. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26188 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
63db34c816c7067b251f03c50286d594ceac3cc2 |
|
01-Jul-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Implemented a read-only ext2 file system. * It's not yet complete, doesn't support some ext2 stuff (like files over 4 GB), and might have some other bugs (I only tested it with a single 20 MB ext2 image). * To have a read/write ext2 file system, it would probably make more sense to port GNU sources (like ext2fs lib), and use that. But a small read-only ext2 file sytem doesn't hurt, I think, and I don't know if ext2fs lib would be feasible for kernel use (porting the file system from Linux directly would also be an alternative, but probably more work). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26187 a95241bf-73f2-0310-859d-f6bbb57e9c96
|