Lines Matching refs:node
385 mqnode_free(struct mqfs_node *node) in mqnode_free() argument
387 uma_zfree(mqnode_zone, node); in mqnode_free()
391 mqnode_addref(struct mqfs_node *node) in mqnode_addref() argument
393 atomic_add_int(&node->mn_refcount, 1); in mqnode_addref()
397 mqnode_release(struct mqfs_node *node) in mqnode_release() argument
402 mqfs = node->mn_info; in mqnode_release()
403 old = atomic_fetchadd_int(&node->mn_refcount, -1); in mqnode_release()
404 if (node->mn_type == mqfstype_dir || in mqnode_release()
405 node->mn_type == mqfstype_root) in mqnode_release()
413 mqfs_destroy(node); in mqnode_release()
423 mqfs_add_node(struct mqfs_node *parent, struct mqfs_node *node) in mqfs_add_node() argument
432 node->mn_info = parent->mn_info; in mqfs_add_node()
433 node->mn_parent = parent; in mqfs_add_node()
434 LIST_INIT(&node->mn_children); in mqfs_add_node()
435 LIST_INIT(&node->mn_vnodes); in mqfs_add_node()
436 LIST_INSERT_HEAD(&parent->mn_children, node, mn_sibling); in mqfs_add_node()
445 struct mqfs_node *node; in mqfs_create_node() local
447 node = mqnode_alloc(); in mqfs_create_node()
448 strncpy(node->mn_name, name, namelen); in mqfs_create_node()
449 node->mn_pr_root = cred->cr_prison->pr_root; in mqfs_create_node()
450 node->mn_type = nodetype; in mqfs_create_node()
451 node->mn_refcount = 1; in mqfs_create_node()
452 vfs_timestamp(&node->mn_birth); in mqfs_create_node()
453 node->mn_ctime = node->mn_atime = node->mn_mtime = in mqfs_create_node()
454 node->mn_birth; in mqfs_create_node()
455 node->mn_uid = cred->cr_uid; in mqfs_create_node()
456 node->mn_gid = cred->cr_gid; in mqfs_create_node()
457 node->mn_mode = mode; in mqfs_create_node()
458 return (node); in mqfs_create_node()
468 struct mqfs_node *node; in mqfs_create_file() local
470 node = mqfs_create_node(name, namelen, cred, mode, mqfstype_file); in mqfs_create_file()
471 if (mqfs_add_node(parent, node) != 0) { in mqfs_create_file()
472 mqnode_free(node); in mqfs_create_file()
475 return (node); in mqfs_create_file()
517 struct mqfs_node *node; in mqfs_create_dir() local
519 node = mqfs_create_node(name, namelen, cred, mode, mqfstype_dir); in mqfs_create_dir()
520 if (mqfs_add_node(parent, node) != 0) { in mqfs_create_dir()
521 mqnode_free(node); in mqfs_create_dir()
525 if (mqfs_fixup_dir(node) != 0) { in mqfs_create_dir()
526 mqfs_destroy(node); in mqfs_create_dir()
529 return (node); in mqfs_create_dir()
539 struct mqfs_node *node; in mqfs_create_link() local
541 node = mqfs_create_node(name, namelen, cred, mode, mqfstype_symlink); in mqfs_create_link()
542 if (mqfs_add_node(parent, node) != 0) { in mqfs_create_link()
543 mqnode_free(node); in mqfs_create_link()
546 return (node); in mqfs_create_link()
555 mqfs_destroy(struct mqfs_node *node) in mqfs_destroy() argument
559 KASSERT(node != NULL, in mqfs_destroy()
561 KASSERT(node->mn_info != NULL, in mqfs_destroy()
565 if (node->mn_type == mqfstype_dir || node->mn_type == mqfstype_root) in mqfs_destroy()
566 while (! LIST_EMPTY(&node->mn_children)) in mqfs_destroy()
567 mqfs_destroy(LIST_FIRST(&node->mn_children)); in mqfs_destroy()
570 if ((parent = node->mn_parent) != NULL) { in mqfs_destroy()
571 KASSERT(parent->mn_info == node->mn_info, in mqfs_destroy()
573 LIST_REMOVE(node, mn_sibling); in mqfs_destroy()
576 if (node->mn_fileno != 0) in mqfs_destroy()
577 mqfs_fileno_free(node->mn_info, node); in mqfs_destroy()
578 if (node->mn_data != NULL) in mqfs_destroy()
579 mqueue_free(node->mn_data); in mqfs_destroy()
580 mqnode_free(node); in mqfs_destroy()