dirhash
extern long dirhash, inplast;
listmax = numdirs = dirhash = inplast = 0;
long dirhash, inplast;
SLIST_INSERT_HEAD(&inphash[inumber % dirhash], inp, i_hash);
SLIST_FOREACH(inp, &inphash[inumber % dirhash], i_hash) {
SLIST_FOREACH(inp, &inphash[inumber % dirhash], i_hash) {
SLIST_REMOVE(&inphash[inumber % dirhash], inp, inoinfo, i_hash);
dirhash = MAX(numdirs / 2, 1);
inphash = (struct inohash *)Calloc(dirhash, sizeof(struct inohash));
uint32_t dirhash;
if (ext2_htree_find_leaf(ip, name, namelen, &dirhash,
search_next = ext2_htree_check_next(ip, dirhash, name, &info);
uint32_t dirhash, split_hash;
&dirhash, &hash_version, &info);
TAILQ_ENTRY(dirhash) dh_list; /* chain of all dirhashes */
#define i_dirhash i_un.dirhash
struct dirhash *dirhash; /* Hashing for large directories. */
ufsdirhash_hash(struct dirhash *dh, char *name, int namelen)
ufsdirhash_adjfree(struct dirhash *dh, doff_t offset, int diff)
ufsdirhash_findslot(struct dirhash *dh, char *name, int namelen, doff_t offset)
ufsdirhash_delslot(struct dirhash *dh, int slot)
static TAILQ_HEAD(, dirhash) ufsdirhash_list;
ufsdirhash_destroy(struct dirhash *dh)
struct dirhash *dh;
struct dirhash *dh, *dh_temp;
ufsdirhash_hold(struct dirhash *dh)
ufsdirhash_drop(struct dirhash *dh)
ufsdirhash_release(struct dirhash *dh)
static struct dirhash *
struct dirhash *ndh;
struct dirhash *dh;
static struct dirhash *
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh, *dh_next;
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh;
struct dirhash *dh;
static int ufsdirhash_hash(struct dirhash *dh, char *name, int namelen);
static void ufsdirhash_adjfree(struct dirhash *dh, doff_t offset, int diff);
static void ufsdirhash_delslot(struct dirhash *dh, int slot);
static int ufsdirhash_findslot(struct dirhash *dh, char *name, int namelen,
struct dirhash *dh;