#
1a497824 |
|
29-Oct-2023 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: recalculate extent metadata checksum each time the metadata changes. this fixes an assert when reading extents written in Haiku. Change-Id: Iba2cc3b35ed6886db0749a0f50b24053def5aac3 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7079 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
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>
|
#
fd91d2cb |
|
11-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ext2: ExtentStream::FindBlock(): Restructure/fix * The binary search was somewhat broken. * Restructure a bit so that only the binary/linear search itself is handled separately. The handling afterwards is common again. * Fix sparse block handling: - There can be sparse blocks before the first extend. - Set the return parameter _count in this case as well. - Set the return parameter block to 0 instead of 0xffffffff. That's what ext2_get_file_map() expects. Fixes an infinite loop in ext2_get_file_map() when sparse blocks are involved, due to previously returning a wrong block and a 0 count. Ticket #9274 may be related.
|
#
a130bab3 |
|
08-May-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: fixes 64 bit warnings
|
#
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
|
#
40e0165b |
|
08-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
extent max length is 0x8000, not 0xffff (we only support initialized extents). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40146 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79de91c1 |
|
07-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* manages blockgroups unused_inodes when the feature is available. * BitmapBlock::FindMarked/FindUnmarked() tried to find a free bit at the end of a full bitmap. This fixes #7069. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40143 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d482c34e |
|
05-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* added flex group, dirnlink and gdtchecksum features for ext4. * I reused crc_table.cpp from the UDF filesystem and switched it to have the reversed algorithm, then generated the table in CRCTable.cpp * added a binary search for extent tree leaves. * fixed a check in InodeAllocator::New(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40129 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
|
#
fd91d2cbe1f045c71e94fa7db6fbce2b6b0d4883 |
|
11-Nov-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
ext2: ExtentStream::FindBlock(): Restructure/fix * The binary search was somewhat broken. * Restructure a bit so that only the binary/linear search itself is handled separately. The handling afterwards is common again. * Fix sparse block handling: - There can be sparse blocks before the first extend. - Set the return parameter _count in this case as well. - Set the return parameter block to 0 instead of 0xffffffff. That's what ext2_get_file_map() expects. Fixes an infinite loop in ext2_get_file_map() when sparse blocks are involved, due to previously returning a wrong block and a 0 count. Ticket #9274 may be related.
|
#
a130bab351822fb76ee1750cd4af6ba11ad70bbe |
|
08-May-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
ext2: fixes 64 bit warnings
|
#
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
|
#
40e0165b138d8215a63075db1f1a1a0b4a5fe26d |
|
08-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
extent max length is 0x8000, not 0xffff (we only support initialized extents). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40146 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79de91c19b619ef149482aee4ef30e7f301abd09 |
|
07-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* manages blockgroups unused_inodes when the feature is available. * BitmapBlock::FindMarked/FindUnmarked() tried to find a free bit at the end of a full bitmap. This fixes #7069. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40143 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d482c34e49ef2163e25b86cf61eee008c46fc50c |
|
05-Jan-2011 |
Jérôme Duval <korli@users.berlios.de> |
* added flex group, dirnlink and gdtchecksum features for ext4. * I reused crc_table.cpp from the UDF filesystem and switched it to have the reversed algorithm, then generated the table in CRCTable.cpp * added a binary search for extent tree leaves. * fixed a check in InodeAllocator::New(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40129 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
|