History log of /haiku/src/add-ons/kernel/file_systems/btrfs/btrfs.h
Revision Date Author Comments
# 1519703a 03-Jul-2019 brjhaiku <brjhaiku@gmail.com>

btrfs: implement btrfs_write_fs_info

Change-Id: I507fc4154f8a11235b6b6f8812c3b38924f533f7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1560
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# aa08671d 08-Apr-2019 Les De Ridder <les@lesderid.net>

btrfs: partially implement filesystem initialization

Change-Id: I7fb3340dc39b3331d30e5113b5860d936efab253
Reviewed-on: https://review.haiku-os.org/c/1395
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# a0710a23 06-Apr-2019 Che Vu Gia Hy <cvghy116@gmail.com>

btrfs: Fix get object id from disk in wrong order

Change-Id: I15ab04ec55dd4e9318eff9eef65a5030bf5241b3
Reviewed-on: https://review.haiku-os.org/c/1390
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# f10ebdb1 13-Mar-2019 brjhaiku <brjhaiku@gmail.com>

btrfs

* Fixed coding style for all files under /src/add-ons/kernel/file_systems/btrfs
* rewrote crc_table.cpp to generate CRCTable.cpp that conforms to coding style.

Change-Id: I90fcc143320c7a7e9a6dc174f0ad82f40bb8a9b6
Reviewed-on: https://review.haiku-os.org/c/1194
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 3f43dd87 15-Dec-2017 hyche <cvghy116@gmail.com>

btrfs: Fix btrfs_dir_entry doesn't read data from disk correctly.


# b06b5456 12-Dec-2017 Augustin Cavalier <waddlesplash@gmail.com>

btrfs: [] on the end of a struct field is a variable length array.

This throws an error in Clang, so just declare these as pointers.


# 99768086 29-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Add author and license.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# b44d924d 28-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Implement MakeReference() in Inode that will link file name to inode.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 371935de 28-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Implement Insert() in Inode that inserts inode_item.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 36a24fb3 28-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Implement Create() that allocate new Inode object.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 02bce792 26-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Added function to convert standard filetypes to btrfs filetypes.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 883b9bf2 23-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Implement CopyOnWrite relevant functions, and BTree holds new attribute that record its root level.

CopyOnWrite works like this:
* Cache original node
* Allocating new block
* Cache new block to be writable
* Copy original node to new node, and changing.
Also if a node is already be COW-ed it cannot be COW-ed again, it will be changed in-place instead.

InternalCopy does CopyOnWrite all the nodes that we don't need to change anything on them.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 89484dc0 23-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Implement some copy relevant helpers.

Copy() copys data from other node, MoveEntries() changes data on the current node.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 0deb0356 17-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Fix mismatched type of index in inode_ref item.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# af419b0e 13-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Implement ExtentAllocator

There are 4 new classes, structs:
* CachedExtent, is a AVLTreeNode, caches the extent locating in extent tree, a extent can be free, allocated, metadata or a data extent. It also hold a references count,
that is incremented each time a new extent refer to it (COW) and item data, that is only for allocated extent (NULL for free).
* CachedTreeExtent, is a AVLTree, cache the whole extent tree and has CachedExtent as its node.
* BlockGroup represents the group of extents that represent the region for each type of allocated extent. For example, region for data extents, metada blocks. It
responsible for inserting nodes in CachedTreeExtent.
* And the final, ExtentAllocator it knows how to allocate/deallocate extents, but for now only the allocating is implemented, actually allocating and deallocating works
are already implemented, they are in functions _AddFreeExtent, _AddAllocatedExtent in CachedTreeExtent. However the deallocating is not needed for now, so it will be
finished later then.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 3216460d 12-Aug-2017 hyche <cvghy116@gmail.com>

BTRFS: Implement BTree::Path and change _Find.

Remove attribute fCurrentSlot in BTree::Node as it will be handled by Path explicitly. BTree control Path by passing its type in
BTree's method, Path also hold BTree type as its attribute to do some internal actions.
Add constant BTREE_KEY_TYPE_ANY, find search key has this type will success regardless of the found key's type.

Split the the _Find function into Traverse and GetEntry. Traverse will fill in the Path (nodes and slots) along way its finding,
GetEntry will get the item data, item size, key from leaf, if the slot is valid, that we have from Traverse. The _Find function also
check type if is correct and then retrieve. Doing this way there will be more flexible, the "read" flag is not needed as we only
need Path to manipulate tree, and it also enhance the performance at some points, because Path caches all the nodes from root to leaf,
so that we don't have to block_cache_put and block_cache_get after each finding.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 4ba7b70f 02-Jul-2017 hyche <cvghy116@gmail.com>

BTRFS: Added more flags and key types


# 052a981c 02-Jul-2017 hyche <cvghy116@gmail.com>

BTRFS: Added more on-disk data structures


# 7568abd5 22-Jun-2017 hyche <cvghy116@gmail.com>

BTRFS: BlockNum -> LogicalAddress to prevent misunderstanding

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# bd2dab1c 16-Jun-2017 hyche <cvghy116@gmail.com>

BTRFS: Add some missing constants

Chunk tree objectID is 3,
256 is the objectID of first created subvolume in fs tree,
and also of first chunk tree (item in chunk tree).

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 875a0552 14-Jun-2017 hyche <cvghy116@gmail.com>

BTRFS: Method _Compare from BTree is now in btrfs_key

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 7e8e6c2e 09-Jun-2017 hyche <cvghy116@gmail.com>

BTRFS: Added retrieve sector size for later use

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# d87124ef 09-Jun-2017 hyche <cvghy116@gmail.com>

BTRFS: Refix ticket #12788

* Change block size to node size. Block is not always the same as sector.

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 299aba38 09-Jun-2017 hyche <cvghy116@gmail.com>

BTRFS: code cleanups

* Removed struct keyword for declaring variable.
* Renamed BPlusTree to BTree because BtrFS use a variant of BTree not B+Tree.

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# b24d4c8a 18-May-2017 hyche <cvghy116@gmail.com>

Fixed: Code style (again)

* Pointer/Reference should be next to type
* else if -> if
* Remove trailing spaces

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# bf5d0ce3 19-May-2017 hyche <cvghy116@gmail.com>

btrfs_shell for testing btrfs code.

* Adding Jamfile in src/tools/btrfs_shell and include the subdir in src/tools/Jamfile
* Adding system_dependencies.h in btrfs source to include all the system headers
* fs_shell wrapping for btrfs source. If FS_SHELL is defined, compile with fs_shell headers instead.
* Change macro BTRFS_SHELL to FS_SHELL
* Adding btrfs_std_ops function: fs_shell now can recognize and load module


# 8864a6cb 18-May-2017 hyche <cvghy116@gmail.com>

btrfs: Code style

* Using tab instead of spaces
* Pointer/Reference should be next to type
* etc


# 403e1348 21-Jan-2012 Jérôme Duval <jerome.duval@gmail.com>

CID 10629: use of sizeof(this) instead of sizeof(*this).


# b1f9573f 19-Nov-2011 Jérôme Duval <jerome.duval@gmail.com>

btrfs: added support for zlib decompression of inline extents.

Reuse code from tarfs to decompress zlib compressed inline extents.
No idea yet on how to decompress regular extents which are currently
served by the file cache.


# 956f541d 31-Jan-2011 Jérôme Duval <korli@users.berlios.de>

added read only attribute support for btrfs.


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


# 2c2074ba 26-Jan-2011 Jérôme Duval <korli@users.berlios.de>

added some const and fixed a typo


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


# 6f4c36e2 24-Jan-2011 Jérôme Duval <korli@users.berlios.de>

* Implemented a read-only btrfs file system, tested with a 400MB image.
* Inline extent data isn't read with the file_cache yet as the data is not block aligned.


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


# 403e13486211b372e1c539e0603407b81d66dfa0 21-Jan-2012 Jérôme Duval <jerome.duval@gmail.com>

CID 10629: use of sizeof(this) instead of sizeof(*this).


# b1f9573f594557d669c8bb2cf4af0940c44a3b23 19-Nov-2011 Jérôme Duval <jerome.duval@gmail.com>

btrfs: added support for zlib decompression of inline extents.

Reuse code from tarfs to decompress zlib compressed inline extents.
No idea yet on how to decompress regular extents which are currently
served by the file cache.


# 956f541d967013c2be8563b7b1ee9af79eb50532 31-Jan-2011 Jérôme Duval <korli@users.berlios.de>

added read only attribute support for btrfs.


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


# 2c2074ba1339ef2ee7f17d3ec94aa41e31e2a54a 26-Jan-2011 Jérôme Duval <korli@users.berlios.de>

added some const and fixed a typo


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


# 6f4c36e2979b9684a65e6d73b872d4628f3e452a 24-Jan-2011 Jérôme Duval <korli@users.berlios.de>

* Implemented a read-only btrfs file system, tested with a 400MB image.
* Inline extent data isn't read with the file_cache yet as the data is not block aligned.


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