Lines Matching refs:vnode

30 int dfs_vnode_init(struct dfs_vnode *vnode, int type, const struct dfs_file_ops *fops)  in dfs_vnode_init()  argument
32 if (vnode) in dfs_vnode_init()
34 rt_memset(vnode, 0, sizeof(struct dfs_vnode)); in dfs_vnode_init()
36 vnode->type = type; in dfs_vnode_init()
37 rt_atomic_store(&(vnode->ref_count), 1); in dfs_vnode_init()
38 vnode->mnt = RT_NULL; in dfs_vnode_init()
39 vnode->fops = fops; in dfs_vnode_init()
52 struct dfs_vnode *vnode = rt_calloc(1, sizeof(struct dfs_vnode)); in dfs_vnode_create() local
53 if (!vnode) in dfs_vnode_create()
59 rt_atomic_store(&(vnode->ref_count), 1); in dfs_vnode_create()
61 LOG_I("create a vnode: %p", vnode); in dfs_vnode_create()
63 return vnode; in dfs_vnode_create()
73 int dfs_vnode_destroy(struct dfs_vnode* vnode) in dfs_vnode_destroy() argument
77 if (vnode) in dfs_vnode_destroy()
82 if (rt_atomic_load(&(vnode->ref_count)) == 1) in dfs_vnode_destroy()
84 LOG_I("free a vnode: %p", vnode); in dfs_vnode_destroy()
86 if (vnode->aspace) in dfs_vnode_destroy()
88 dfs_aspace_destroy(vnode->aspace); in dfs_vnode_destroy()
91 if (vnode->mnt) in dfs_vnode_destroy()
93 DLOG(msg, "vnode", vnode->mnt->fs_ops->name, DLOG_MSG, "fs_ops->free_vnode"); in dfs_vnode_destroy()
94 vnode->mnt->fs_ops->free_vnode(vnode); in dfs_vnode_destroy()
103 rt_free(vnode); in dfs_vnode_destroy()
122 struct dfs_vnode *dfs_vnode_ref(struct dfs_vnode *vnode) in dfs_vnode_ref() argument
124 if (vnode) in dfs_vnode_ref()
126 rt_atomic_add(&(vnode->ref_count), 1); in dfs_vnode_ref()
128 DLOG(note, "vnode", "vnode ref_count=%d", rt_atomic_load(&(vnode->ref_count))); in dfs_vnode_ref()
131 return vnode; in dfs_vnode_ref()
139 void dfs_vnode_unref(struct dfs_vnode *vnode) in dfs_vnode_unref() argument
143 if (vnode) in dfs_vnode_unref()
148 rt_atomic_sub(&(vnode->ref_count), 1); in dfs_vnode_unref()
149 DLOG(note, "vnode", "vnode ref_count=%d", rt_atomic_load(&(vnode->ref_count))); in dfs_vnode_unref()
151 if (vnode->aspace) in dfs_vnode_unref()
153 dfs_aspace_destroy(vnode->aspace); in dfs_vnode_unref()
156 if (rt_atomic_load(&(vnode->ref_count)) == 0) in dfs_vnode_unref()
158 LOG_I("free a vnode: %p", vnode); in dfs_vnode_unref()
161 if (vnode->mnt) in dfs_vnode_unref()
163 DLOG(msg, "vnode", vnode->mnt->fs_ops->name, DLOG_MSG, "fs_ops->free_vnode"); in dfs_vnode_unref()
164 vnode->mnt->fs_ops->free_vnode(vnode); in dfs_vnode_unref()
169 rt_free(vnode); in dfs_vnode_unref()
174 DLOG(note, "vnode", "vnode ref_count=%d", rt_atomic_load(&(vnode->ref_count))); in dfs_vnode_unref()