Changeset 7bc4508 in mainline for uspace/lib/ext4/libext4_directory.h


Ignore:
Timestamp:
2011-10-18T19:58:36Z (13 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7bd2c19
Parents:
12f55220
Message:

First part of reading htree directory index - the most important functionality (computing hashes) still missing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/libext4_directory.h

    r12f55220 r7bc4508  
    6464/* Structures for indexed directory */
    6565
     66typedef struct ext4_directory_dx_countlimit {
     67        uint16_t limit;
     68    uint16_t count;
     69} ext4_directory_dx_countlimit_t;
     70
    6671typedef struct ext4_directory_dx_dot_entry {
    6772        uint32_t inode;
     
    8792typedef struct ext4_directory_dx_root {
    8893                ext4_directory_dx_dot_entry_t dots[2];
    89                 // TODO insert root info items instead of special datatype
    9094                ext4_directory_dx_root_info_t info;
    91                 ext4_directory_dx_entry_t *entries;
     95                ext4_directory_dx_entry_t entries[0];
    9296} ext4_directory_dx_root_t;
    9397
     98typedef struct ext4_directory_dx_hash_info {
     99        uint32_t hash;
     100        uint32_t minor_hash;
     101        uint32_t hash_version;
     102        uint32_t *seed;
     103} ext4_directory_dx_hash_info_t;
    94104
    95 #define EXT4_DIRECTORY_HTREE_EOF  0x7fffffff
     105
     106#define EXT4_ERR_BAD_DX_DIR                     (-75000)
     107
     108#define EXT4_DIRECTORY_DX_HASH_LEGACY                           0
     109#define EXT4_DIRECTORY_DX_HASH_HALF_MD4                         1
     110#define EXT4_DIRECTORY_DX_HASH_TEA                                      2
     111#define EXT4_DIRECTORY_DX_HASH_LEGACY_UNSIGNED          3
     112#define EXT4_DIRECTORY_DX_HASH_HALF_MD4_UNSIGNED        4
     113#define EXT4_DIRECTORY_DX_HASH_TEA_UNSIGNED                     5
     114
     115#define EXT4_DIRECTORY_HTREE_EOF        0x7fffffff
    96116
    97117
     
    102122    ext4_superblock_t *, ext4_directory_entry_ll_t *);
    103123
     124extern uint8_t ext4_directory_dx_root_info_get_hash_version(ext4_directory_dx_root_info_t *);
     125extern uint8_t ext4_directory_dx_root_info_get_info_length(ext4_directory_dx_root_info_t *);
     126extern uint8_t ext4_directory_dx_root_info_get_indirect_levels(ext4_directory_dx_root_info_t *);
     127
     128extern uint16_t ext4_directory_dx_countlimit_get_limit(ext4_directory_dx_countlimit_t *);
     129extern uint16_t ext4_directory_dx_countlimit_get_count(ext4_directory_dx_countlimit_t *);
     130
     131extern uint32_t ext4_directory_dx_entry_get_hash(ext4_directory_dx_entry_t *);
     132extern uint32_t ext4_directory_dx_entry_get_block(ext4_directory_dx_entry_t *);
     133
    104134extern int ext4_directory_iterator_init(ext4_directory_iterator_t *,
    105135                ext4_filesystem_t *, ext4_inode_ref_t *, aoff64_t);
     
    107137extern int ext4_directory_iterator_seek(ext4_directory_iterator_t *, aoff64_t pos);
    108138extern int ext4_directory_iterator_fini(ext4_directory_iterator_t *);
     139extern int ext4_directory_dx_find_entry(ext4_directory_iterator_t *,
     140                ext4_filesystem_t *, ext4_inode_ref_t *, const char *);
     141
     142extern void ext4_directory_hash(ext4_directory_dx_hash_info_t *, const char* name);
    109143
    110144#endif
Note: See TracChangeset for help on using the changeset viewer.