tn_dir
} tn_dir;
#define tn_dir tn_spec.tn_dir
MPASS((node)->tn_dir.tn_wht_size % sizeof(struct tmpfs_dirent) == 0); \
MPASS((node)->tn_dir.tn_wht_size <= (node)->tn_size); \
(node->tn_type == VDIR && node->tn_dir.tn_parent == NULL)) {
MPASS(node->tn_dir.tn_parent != NULL);
if (node->tn_dir.tn_parent == node)
de = RB_MIN(tmpfs_dir, &dnode->tn_dir.tn_dirhead);
&dnode->tn_dir.tn_dirhead, dc->tdc_tree);
de = RB_FIND(tmpfs_dir, &dnode->tn_dir.tn_dirhead, &dekey);
struct tmpfs_dir *dirhead = &node->tn_dir.tn_dirhead;
if (cookie == node->tn_dir.tn_readdir_lastn &&
(de = node->tn_dir.tn_readdir_lastp) != NULL) {
LIST_FOREACH(de, &node->tn_dir.tn_dupindex,
dupindex = &dnode->tn_dir.tn_dupindex;
dnode->tn_dir.tn_readdir_lastn = 0;
dnode->tn_dir.tn_readdir_lastp = NULL;
xde = RB_INSERT(tmpfs_dir, &dnode->tn_dir.tn_dirhead, de);
head = &dnode->tn_dir.tn_dirhead;
dnode->tn_dir.tn_readdir_lastn = 0;
dnode->tn_dir.tn_readdir_lastp = NULL;
RB_FOREACH_SAFE(de, tmpfs_dir, &dnode->tn_dir.tn_dirhead, nde) {
RB_REMOVE(tmpfs_dir, &dnode->tn_dir.tn_dirhead, de);
parent = node->tn_dir.tn_parent;
node->tn_dir.tn_readdir_lastn = off;
node->tn_dir.tn_readdir_lastp = de;
dnode->tn_dir.tn_wht_size += sizeof(*de);
MPASS(dnode->tn_dir.tn_wht_size >= sizeof(*de));
dnode->tn_dir.tn_wht_size -= sizeof(*de);
dnode->tn_dir.tn_wht_size -= sizeof(*de);
MPASS(dnode->tn_dir.tn_wht_size == 0);
RB_INIT(&nnode->tn_dir.tn_dirhead);
LIST_INIT(&nnode->tn_dir.tn_dupindex);
nnode->tn_dir.tn_parent = (parent == NULL) ? nnode : parent;
nnode->tn_dir.tn_readdir_lastn = 0;
nnode->tn_dir.tn_readdir_lastp = NULL;
nnode->tn_dir.tn_wht_size = 0;
TMPFS_NODE_LOCK(nnode->tn_dir.tn_parent);
nnode->tn_dir.tn_parent->tn_links++;
TMPFS_NODE_UNLOCK(nnode->tn_dir.tn_parent);
if ((node->tn_type == VDIR && node->tn_dir.tn_parent == NULL) ||
dnode->tn_dir.tn_parent == dnode,
if (dnode->tn_dir.tn_parent == NULL) {
tnode->tn_size > tnode->tn_dir.tn_wht_size)) {
pnode = dnode->tn_dir.tn_parent;
while (n != n->tn_dir.tn_parent) {
parent = n->tn_dir.tn_parent;
if (parent->tn_dir.tn_parent == NULL) {
de->td_node->tn_dir.tn_parent = tdnode;
node->tn_size > node->tn_dir.tn_wht_size)) {
MPASS(node->tn_dir.tn_parent == dnode);
node->tn_dir.tn_parent = NULL;
tnp = tn->tn_dir.tn_parent;
error = tmpfs_vptocnp_fill(vp, tn, tn->tn_dir.tn_parent, buf,