Lines Matching refs:dmp
89 dm_pdev_t *dmp; in dm_pdev_insert() local
95 dmp = dm_pdev_lookup_name(dev_name); in dm_pdev_insert()
97 if (dmp != NULL) { in dm_pdev_insert()
98 dmp->ref_cnt++; in dm_pdev_insert()
102 return dmp; in dm_pdev_insert()
105 if ((dmp = dm_pdev_alloc(dev_name)) == NULL) { in dm_pdev_insert()
115 kmem_free(dmp, sizeof(dm_pdev_t)); in dm_pdev_insert()
118 error = vn_bdev_openpath(dev_pb, &dmp->pdev_vnode, curlwp); in dm_pdev_insert()
124 kmem_free(dmp, sizeof(dm_pdev_t)); in dm_pdev_insert()
127 getdisksize(dmp->pdev_vnode, &dmp->pdev_numsec, &dmp->pdev_secsize); in dm_pdev_insert()
128 dmp->ref_cnt = 1; in dm_pdev_insert()
130 snprintf(dmp->udev_name, sizeof(dmp->udev_name), "%d:%d", in dm_pdev_insert()
131 major(dmp->pdev_vnode->v_rdev), minor(dmp->pdev_vnode->v_rdev)); in dm_pdev_insert()
132 aprint_debug("%s: %s %s\n", __func__, dev_name, dmp->udev_name); in dm_pdev_insert()
134 SLIST_INSERT_HEAD(&dm_pdev_list, dmp, next_pdev); in dm_pdev_insert()
137 return dmp; in dm_pdev_insert()
160 dm_pdev_t *dmp; in dm_pdev_alloc() local
162 dmp = kmem_zalloc(sizeof(*dmp), KM_SLEEP); in dm_pdev_alloc()
163 strlcpy(dmp->name, name, sizeof(dmp->name)); in dm_pdev_alloc()
164 dmp->ref_cnt = 0; in dm_pdev_alloc()
165 dmp->pdev_vnode = NULL; in dm_pdev_alloc()
167 return dmp; in dm_pdev_alloc()
174 dm_pdev_rem(dm_pdev_t *dmp) in dm_pdev_rem() argument
177 KASSERT(dmp != NULL); in dm_pdev_rem()
179 if (dmp->pdev_vnode != NULL) { in dm_pdev_rem()
180 int error = vn_close(dmp->pdev_vnode, FREAD | FWRITE, FSCRED); in dm_pdev_rem()
182 kmem_free(dmp, sizeof(*dmp)); in dm_pdev_rem()
186 kmem_free(dmp, sizeof(*dmp)); in dm_pdev_rem()
197 dm_pdev_t *dmp; in dm_pdev_destroy() local
201 while ((dmp = SLIST_FIRST(&dm_pdev_list)) != NULL) { in dm_pdev_destroy()
202 SLIST_REMOVE(&dm_pdev_list, dmp, dm_pdev, next_pdev); in dm_pdev_destroy()
203 dm_pdev_rem(dmp); in dm_pdev_destroy()
225 dm_pdev_decr(dm_pdev_t *dmp) in dm_pdev_decr() argument
228 KASSERT(dmp != NULL); in dm_pdev_decr()
235 if (--dmp->ref_cnt == 0) { in dm_pdev_decr()
236 SLIST_REMOVE(&dm_pdev_list, dmp, dm_pdev, next_pdev); in dm_pdev_decr()
238 dm_pdev_rem(dmp); in dm_pdev_decr()
250 dm_pdev_t *dmp;
254 SLIST_FOREACH(dmp, &dm_pdev_list, next_pdev) {
256 dmp->name, dmp->ref_cnt, dmp->list_ref_cnt);