Lines Matching refs:dmp
56 dm_pdev_t *dmp; in dm_pdev_lookup_name() local
60 TAILQ_FOREACH(dmp, &dm_pdev_list, next_pdev) { in dm_pdev_lookup_name()
61 if (strcmp(dm_pdev_name, dmp->name) == 0) in dm_pdev_lookup_name()
62 return dmp; in dm_pdev_lookup_name()
122 dm_pdev_t *dmp; in dm_pdev_insert() local
129 dmp = dm_pdev_lookup_name(dev_name); in dm_pdev_insert()
131 if (dmp != NULL) { in dm_pdev_insert()
132 dmp->ref_cnt++; in dm_pdev_insert()
135 return dmp; in dm_pdev_insert()
138 if ((dmp = dm_pdev_alloc(dev_name)) == NULL) { in dm_pdev_insert()
143 error = dm_dk_lookup(dev_name, &dmp->pdev_vnode); in dm_pdev_insert()
147 dm_pdev_free(dmp); in dm_pdev_insert()
151 dmp->ref_cnt = 1; in dm_pdev_insert()
153 if (dm_pdev_get_vattr(dmp, &va) == -1) { in dm_pdev_insert()
155 dm_pdev_free(dmp); in dm_pdev_insert()
159 ksnprintf(dmp->udev_name, sizeof(dmp->udev_name), in dm_pdev_insert()
161 dmp->udev = dm_pdev_get_udev(dmp); in dm_pdev_insert()
167 bzero(&dmp->pdev_pinfo, sizeof(dmp->pdev_pinfo)); in dm_pdev_insert()
168 error = dev_dioctl(dmp->pdev_vnode->v_rdev, DIOCGPART, in dm_pdev_insert()
169 (void *)&dmp->pdev_pinfo, 0, proc0.p_ucred, NULL, NULL); in dm_pdev_insert()
171 struct partinfo *dpart = &dmp->pdev_pinfo; in dm_pdev_insert()
181 TAILQ_INSERT_TAIL(&dm_pdev_list, dmp, next_pdev); in dm_pdev_insert()
185 dmp->name, dmp->udev_name, (uintmax_t)dmp->udev); in dm_pdev_insert()
187 return dmp; in dm_pdev_insert()
197 dm_pdev_t *dmp; in dm_pdev_alloc() local
199 dmp = kmalloc(sizeof(*dmp), M_DM, M_WAITOK | M_ZERO); in dm_pdev_alloc()
200 if (dmp == NULL) in dm_pdev_alloc()
204 strlcpy(dmp->name, name, DM_MAX_DEV_NAME); in dm_pdev_alloc()
206 return dmp; in dm_pdev_alloc()
213 dm_pdev_free(dm_pdev_t *dmp) in dm_pdev_free() argument
217 KKASSERT(dmp != NULL); in dm_pdev_free()
219 if (dmp->pdev_vnode != NULL) { in dm_pdev_free()
220 err = vn_close(dmp->pdev_vnode, FREAD | FWRITE, NULL); in dm_pdev_free()
222 kfree(dmp, M_DM); in dm_pdev_free()
226 kfree(dmp, M_DM); in dm_pdev_free()
242 dm_pdev_decr(dm_pdev_t *dmp) in dm_pdev_decr() argument
244 KKASSERT(dmp != NULL); in dm_pdev_decr()
251 if (--dmp->ref_cnt == 0) { in dm_pdev_decr()
252 TAILQ_REMOVE(&dm_pdev_list, dmp, next_pdev); in dm_pdev_decr()
254 dm_pdev_free(dmp); in dm_pdev_decr()
262 dm_pdev_get_udev(dm_pdev_t *dmp) in dm_pdev_get_udev() argument
267 if (dmp->pdev_vnode == NULL) in dm_pdev_get_udev()
270 ret = dm_pdev_get_vattr(dmp, &va); in dm_pdev_get_udev()
280 dm_pdev_get_vattr(dm_pdev_t *dmp, struct vattr *vap) in dm_pdev_get_vattr() argument
284 if (dmp->pdev_vnode == NULL) in dm_pdev_get_vattr()
288 ret = VOP_GETATTR(dmp->pdev_vnode, vap); in dm_pdev_get_vattr()
313 dm_pdev_t *dmp; in dm_pdev_uninit() local
317 while ((dmp = TAILQ_FIRST(&dm_pdev_list)) != NULL) { in dm_pdev_uninit()
318 TAILQ_REMOVE(&dm_pdev_list, dmp, next_pdev); in dm_pdev_uninit()
319 dm_pdev_free(dmp); in dm_pdev_uninit()