Lines Matching defs:dnode
188 tmpfs_node_t *node, *dnode;
192 dnode = VP_TO_TMPFS_DIR(dvp);
193 if (dnode->tn_links == 0)
197 if (dnode->tn_links == LINK_MAX)
199 KASSERT(dnode->tn_links < LINK_MAX);
202 dnode = NULL;
248 KASSERT(dnode != NULL);
250 node->tn_gid = dnode->tn_gid;
372 tmpfs_node_t *dnode = VP_TO_TMPFS_DIR(dvp), *node;
426 wde = tmpfs_dir_lookup(dnode, cnp);
428 tmpfs_dir_detach(dnode, wde);
433 tmpfs_dir_attach(dnode, de, node);
498 tmpfs_dir_attach(tmpfs_node_t *dnode, tmpfs_dirent_t *de, tmpfs_node_t *node)
500 vnode_t *dvp = dnode->tn_vnode;
508 de->td_seq = tmpfs_dir_getseq(dnode, de);
518 } else if ((dnode->tn_gen & TMPFS_WHITEOUT_BIT) == 0) {
520 atomic_or_32(&dnode->tn_gen, TMPFS_WHITEOUT_BIT);
524 TAILQ_INSERT_TAIL(&dnode->tn_spec.tn_dir.tn_dir, de, td_entries);
525 KASSERT(dnode->tn_size <= __type_max(off_t) - sizeof(tmpfs_dirent_t));
526 dnode->tn_size += sizeof(tmpfs_dirent_t);
527 uvm_vnp_setsize(dvp, dnode->tn_size);
532 node->tn_spec.tn_dir.tn_parent = dnode;
535 KASSERT(dnode->tn_links < LINK_MAX);
536 dnode->tn_links++;
554 tmpfs_dir_detach(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
557 vnode_t *dvp = dnode->tn_vnode;
570 KASSERT(node->tn_spec.tn_dir.tn_parent == dnode);
573 KASSERT(dnode->tn_links > 0);
574 dnode->tn_links--;
580 if (dnode->tn_spec.tn_dir.tn_readdir_lastp == de) {
581 dnode->tn_spec.tn_dir.tn_readdir_lastp = NULL;
583 TAILQ_REMOVE(&dnode->tn_spec.tn_dir.tn_dir, de, td_entries);
584 KASSERT(dnode
585 dnode->tn_size -= sizeof(tmpfs_dirent_t);
586 tmpfs_dir_putseq(dnode, de);
589 uvm_vnp_setsize(dvp, dnode->tn_size);
652 tmpfs_dir_getseq(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
659 TMPFS_VALIDATE_DIR(dnode);
677 seq = dnode->tn_spec.tn_dir.tn_next_seq;
682 dnode->tn_spec.tn_dir.tn_next_seq++;
690 if ((seq_arena = dnode->tn_spec.tn_dir.tn_seq_arena) == NULL) {
694 dnode->tn_spec.tn_dir.tn_seq_arena = seq_arena;
706 tmpfs_dir_putseq(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
708 vmem_t *seq_arena = dnode->tn_spec.tn_dir.tn_seq_arena;
711 TMPFS_VALIDATE_DIR(dnode);
726 if (seq_arena && dnode->tn_size == 0) {
727 dnode->tn_spec.tn_dir.tn_seq_arena = NULL;
728 dnode->tn_spec.tn_dir.tn_next_seq = TMPFS_DIRSEQ_START;