X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=lwext4%2Fext4_types.h;h=cdd298f20c596bbb7570caac2200c8528cc0642c;hb=2a7a75f8f98d051f8d2b7b78d31649e943329fa6;hp=62d0fb6f59e49d60018fc4d9acb7f20004ab69ca;hpb=ce0087be0d06ad6efc332ba0c8146aa29d439b2d;p=lwext4.git diff --git a/lwext4/ext4_types.h b/lwext4/ext4_types.h index 62d0fb6..cdd298f 100644 --- a/lwext4/ext4_types.h +++ b/lwext4/ext4_types.h @@ -44,7 +44,7 @@ #include "ext4_config.h" #include "ext4_blockdev.h" -#include "ext4_rbtree.h" +#include "tree.h" #include @@ -678,18 +678,27 @@ struct ext4_xattr_item { void *data; size_t data_size; - struct ext4_rb_node node; + RB_ENTRY(ext4_xattr_item) node; }; struct ext4_xattr_ref { bool block_loaded; struct ext4_block block; struct ext4_inode_ref *inode_ref; - struct ext4_rb_root root; bool dirty; + size_t ea_size; struct ext4_fs *fs; + + struct ext4_xattr_item *iter_from; + + RB_HEAD(ext4_xattr_tree, + ext4_xattr_item) root; }; +#define EXT4_XATTR_ITERATE_CONT 0 +#define EXT4_XATTR_ITERATE_STOP 1 +#define EXT4_XATTR_ITERATE_PAUSE 2 + #define EXT4_GOOD_OLD_INODE_SIZE 128 #define EXT4_XATTR_PAD_BITS 2 @@ -703,6 +712,8 @@ struct ext4_xattr_ref { (char *)(entry) + EXT4_XATTR_LEN((entry)->e_name_len))) #define EXT4_XATTR_SIZE(size) \ (((size) + EXT4_XATTR_ROUND) & ~EXT4_XATTR_ROUND) +#define EXT4_XATTR_NAME(entry) \ + ((char *)((entry) + 1)) #define EXT4_XATTR_IHDR(raw_inode) \ ((struct ext4_xattr_ibody_header *) \