Lines Matching full:dp
65 struct disk *dp; member
102 struct disk *dp; in g_disk_access() local
110 if ((dp = sc->dp) == NULL || dp->d_destroyed) { in g_disk_access()
128 if (w > 0 && (dp->d_flags & DISKFLAG_WRITE_PROTECT) != 0) in g_disk_access()
130 if (error == 0 && dp->d_open != NULL) in g_disk_access()
131 error = dp->d_open(dp); in g_disk_access()
136 pp->sectorsize = dp->d_sectorsize; in g_disk_access()
137 if (dp->d_maxsize == 0) { in g_disk_access()
139 dp->d_name, dp->d_unit); in g_disk_access()
140 dp->d_maxsize = DFLTPHYS; in g_disk_access()
142 if (dp->d_delmaxsize == 0) { in g_disk_access()
143 if (bootverbose && dp->d_flags & DISKFLAG_CANDELETE) { in g_disk_access()
145 "d_delmaxsize\n", dp->d_name, dp->d_unit); in g_disk_access()
147 dp->d_delmaxsize = dp->d_maxsize; in g_disk_access()
149 pp->stripeoffset = dp->d_stripeoffset; in g_disk_access()
150 pp->stripesize = dp->d_stripesize; in g_disk_access()
151 dp->d_flags |= DISKFLAG_OPEN; in g_disk_access()
157 pp->mediasize = dp->d_mediasize; in g_disk_access()
159 g_resize_provider(pp, dp->d_mediasize); in g_disk_access()
161 if (dp->d_close != NULL) { in g_disk_access()
162 error = dp->d_close(dp); in g_disk_access()
170 dp->d_flags &= ~DISKFLAG_OPEN; in g_disk_access()
176 g_disk_kerneldump(struct bio *bp, struct disk *dp) in g_disk_kerneldump() argument
185 if (dp->d_dump == NULL) { in g_disk_kerneldump()
189 gkd->di.dumper = dp->d_dump; in g_disk_kerneldump()
190 gkd->di.priv = dp; in g_disk_kerneldump()
191 gkd->di.blocksize = dp->d_sectorsize; in g_disk_kerneldump()
192 gkd->di.maxiosize = dp->d_maxsize; in g_disk_kerneldump()
194 if ((gkd->offset + gkd->length) > dp->d_mediasize) in g_disk_kerneldump()
195 gkd->length = dp->d_mediasize - gkd->offset; in g_disk_kerneldump()
271 struct disk *dp; in g_disk_ioctl() local
275 dp = sc->dp; in g_disk_ioctl()
276 KASSERT(dp != NULL && !dp->d_destroyed, in g_disk_ioctl()
279 if (dp->d_ioctl == NULL) in g_disk_ioctl()
281 return (dp->d_ioctl(dp, cmd, data, fflag, td)); in g_disk_ioctl()
285 g_disk_maxsize(struct disk *dp, struct bio *bp) in g_disk_maxsize() argument
288 return (dp->d_delmaxsize); in g_disk_maxsize()
289 return (dp->d_maxsize); in g_disk_maxsize()
293 g_disk_maxsegs(struct disk *dp, struct bio *bp) in g_disk_maxsegs() argument
295 return ((g_disk_maxsize(dp, bp) / PAGE_SIZE) + 1); in g_disk_maxsegs()
299 g_disk_advance(struct disk *dp, struct bio *bp, off_t off) in g_disk_advance() argument
362 g_disk_vlist_limit(struct disk *dp, struct bio *bp, bus_dma_segment_t **pendseg) in g_disk_vlist_limit() argument
373 pages = g_disk_maxsegs(dp, bp); in g_disk_vlist_limit()
386 g_disk_limit(struct disk *dp, struct bio *bp) in g_disk_limit() argument
391 maxsz = g_disk_maxsize(dp, bp); in g_disk_limit()
409 residual = g_disk_vlist_limit(dp, bp, &endseg); in g_disk_limit()
427 struct disk *dp; in g_disk_start() local
435 dp = sc->dp; in g_disk_start()
436 KASSERT(dp != NULL && !dp->d_destroyed, in g_disk_start()
441 if (!(dp->d_flags & DISKFLAG_CANDELETE)) { in g_disk_start()
448 KASSERT((dp->d_flags & DISKFLAG_UNMAPPED_BIO) != 0 || in g_disk_start()
450 ("unmapped bio not supported by disk %s", dp->d_name)); in g_disk_start()
463 if (g_disk_limit(dp, bp2)) { in g_disk_start()
476 bp2->bio_pblkno = bp2->bio_offset / dp->d_sectorsize; in g_disk_start()
478 bp2->bio_disk = dp; in g_disk_start()
479 devstat_start_transaction_bio(dp->d_devstat, bp2); in g_disk_start()
480 dp->d_strategy(bp2); in g_disk_start()
487 g_disk_advance(dp, bp2, off); in g_disk_start()
492 if (dp->d_getattr != NULL) { in g_disk_start()
494 bp->bio_disk = dp; in g_disk_start()
495 error = dp->d_getattr(bp); in g_disk_start()
501 (dp->d_flags & DISKFLAG_CANDELETE) != 0)) in g_disk_start()
504 dp->d_fwsectors)) in g_disk_start()
506 else if (g_handleattr_int(bp, "GEOM::fwheads", dp->d_fwheads)) in g_disk_start()
508 else if (g_handleattr_str(bp, "GEOM::ident", dp->d_ident)) in g_disk_start()
510 else if (g_handleattr_str(bp, "GEOM::descr", dp->d_descr)) in g_disk_start()
513 dp->d_hba_vendor)) in g_disk_start()
516 dp->d_hba_device)) in g_disk_start()
519 dp->d_hba_subvendor)) in g_disk_start()
522 dp->d_hba_subdevice)) in g_disk_start()
525 g_disk_kerneldump(bp, dp); in g_disk_start()
529 dp->d_rotation_rate)) in g_disk_start()
532 dp->d_attachment)) in g_disk_start()
540 if (!(dp->d_flags & DISKFLAG_CANFLUSHCACHE)) { in g_disk_start()
547 if (!(dp->d_flags & DISKFLAG_CANZONE)) { in g_disk_start()
561 bp2->bio_disk = dp; in g_disk_start()
562 devstat_start_transaction_bio(dp->d_devstat, bp2); in g_disk_start()
563 dp->d_strategy(bp2); in g_disk_start()
573 bp2->bio_disk = dp; in g_disk_start()
574 dp->d_strategy(bp2); in g_disk_start()
589 struct disk *dp; in g_disk_dumpconf() local
595 if (sc == NULL || (dp = sc->dp) == NULL) in g_disk_dumpconf()
598 sbuf_printf(sb, " hd %u", dp->d_fwheads); in g_disk_dumpconf()
599 sbuf_printf(sb, " sc %u", dp->d_fwsectors); in g_disk_dumpconf()
604 indent, dp->d_fwheads); in g_disk_dumpconf()
606 indent, dp->d_fwsectors); in g_disk_dumpconf()
614 if (dp->d_rotation_rate == DISK_RR_UNKNOWN) /* Old drives */ in g_disk_dumpconf()
616 else if (dp->d_rotation_rate == DISK_RR_NON_ROTATING) in g_disk_dumpconf()
618 else if ((dp->d_rotation_rate >= DISK_RR_MIN) && in g_disk_dumpconf()
619 (dp->d_rotation_rate <= DISK_RR_MAX)) in g_disk_dumpconf()
620 sbuf_printf(sb, "%u", dp->d_rotation_rate); in g_disk_dumpconf()
624 if (dp->d_getattr != NULL) { in g_disk_dumpconf()
627 bp->bio_disk = dp; in g_disk_dumpconf()
631 res = dp->d_getattr(bp); in g_disk_dumpconf()
633 g_conf_cat_escaped(sb, res == 0 ? buf : dp->d_ident); in g_disk_dumpconf()
638 if (dp->d_getattr(bp) == 0) { in g_disk_dumpconf()
646 if (dp->d_getattr(bp) == 0) { in g_disk_dumpconf()
655 g_conf_cat_escaped(sb, dp->d_ident); in g_disk_dumpconf()
659 g_conf_cat_escaped(sb, dp->d_descr); in g_disk_dumpconf()
667 struct disk *dp; in g_disk_resize() local
675 dp = ptr; in g_disk_resize()
676 gp = dp->d_geom; in g_disk_resize()
678 if (dp->d_destroyed || gp == NULL) in g_disk_resize()
683 pp->sectorsize != dp->d_sectorsize) in g_disk_resize()
686 g_resize_provider(pp, dp->d_mediasize); in g_disk_resize()
695 struct disk *dp; in g_disk_create() local
703 dp = arg; in g_disk_create()
705 mtx_pool_lock(mtxpool_sleep, dp); in g_disk_create()
706 dp->d_init_level = DISK_INIT_START; in g_disk_create()
712 if (dp->d_goneflag != 0) { in g_disk_create()
713 mtx_pool_unlock(mtxpool_sleep, dp); in g_disk_create()
714 if (dp->d_gone != NULL) in g_disk_create()
715 dp->d_gone(dp); in g_disk_create()
718 mtx_pool_unlock(mtxpool_sleep, dp); in g_disk_create()
722 sc->dp = dp; in g_disk_create()
723 if (dp->d_devstat == NULL) { in g_disk_create()
724 dp->d_devstat = devstat_new_entry(dp->d_name, dp->d_unit, in g_disk_create()
725 dp->d_sectorsize, DEVSTAT_ALL_SUPPORTED, in g_disk_create()
728 sc->d_devstat = dp->d_devstat; in g_disk_create()
729 gp = g_new_geomf(&g_disk_class, "%s%d", dp->d_name, dp->d_unit); in g_disk_create()
732 LIST_FOREACH(dap, &dp->d_aliases, da_next) in g_disk_create()
733 g_provider_add_alias(pp, "%s%d", dap->da_alias, dp->d_unit); in g_disk_create()
736 dp->d_devstat->id = pp; in g_disk_create()
737 pp->mediasize = dp->d_mediasize; in g_disk_create()
738 pp->sectorsize = dp->d_sectorsize; in g_disk_create()
739 pp->stripeoffset = dp->d_stripeoffset; in g_disk_create()
740 pp->stripesize = dp->d_stripesize; in g_disk_create()
741 if ((dp->d_flags & DISKFLAG_UNMAPPED_BIO) != 0) in g_disk_create()
743 if ((dp->d_flags & DISKFLAG_DIRECT_COMPLETION) != 0) in g_disk_create()
760 CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dp, 0, in g_disk_create()
768 dp->d_geom = gp; in g_disk_create()
771 mtx_pool_lock(mtxpool_sleep, dp); in g_disk_create()
772 dp->d_init_level = DISK_INIT_DONE; in g_disk_create()
778 if (dp->d_goneflag != 0) { in g_disk_create()
779 mtx_pool_unlock(mtxpool_sleep, dp); in g_disk_create()
783 mtx_pool_unlock(mtxpool_sleep, dp); in g_disk_create()
796 struct disk *dp; in g_disk_providergone() local
800 dp = sc->dp; in g_disk_providergone()
801 if (dp != NULL && dp->d_gone != NULL) in g_disk_providergone()
802 dp->d_gone(dp); in g_disk_providergone()
820 struct disk *dp; in g_disk_destroy() local
826 dp = ptr; in g_disk_destroy()
827 gp = dp->d_geom; in g_disk_destroy()
831 sc->dp = NULL; in g_disk_destroy()
832 dp->d_geom = NULL; in g_disk_destroy()
835 LIST_FOREACH_SAFE(dap, &dp->d_aliases, da_next, daptmp) in g_disk_destroy()
838 g_free(dp); in g_disk_destroy()
869 struct disk *dp; in disk_alloc() local
871 dp = g_malloc(sizeof(struct disk), M_WAITOK | M_ZERO); in disk_alloc()
872 LIST_INIT(&dp->d_aliases); in disk_alloc()
873 dp->d_init_level = DISK_INIT_NONE; in disk_alloc()
874 dp->d_cevent = g_alloc_event(M_WAITOK); in disk_alloc()
875 dp->d_devent = g_alloc_event(M_WAITOK); in disk_alloc()
876 return (dp); in disk_alloc()
880 disk_create(struct disk *dp, int version) in disk_create() argument
885 dp->d_name, dp->d_unit, in disk_create()
888 dp->d_name, dp->d_unit); in disk_create()
891 if (dp->d_flags & DISKFLAG_RESERVED) { in disk_create()
893 dp->d_name, dp->d_unit); in disk_create()
895 dp->d_name, dp->d_unit); in disk_create()
898 KASSERT(dp->d_strategy != NULL, ("disk_create need d_strategy")); in disk_create()
899 KASSERT(dp->d_name != NULL, ("disk_create need d_name")); in disk_create()
900 KASSERT(*dp->d_name != 0, ("disk_create need d_name")); in disk_create()
901 KASSERT(strlen(dp->d_name) < SPECNAMELEN - 4, ("disk name too long")); in disk_create()
902 g_disk_ident_adjust(dp->d_ident, sizeof(dp->d_ident)); in disk_create()
904 dp->d_init_level = DISK_INIT_CREATE; in disk_create()
906 KASSERT(dp->d_cevent != NULL, in disk_create()
907 ("Disk create for %p with event NULL", dp)); in disk_create()
908 g_post_event_ep(g_disk_create, dp, dp->d_cevent, dp, NULL); in disk_create()
912 disk_destroy(struct disk *dp) in disk_destroy() argument
917 if (dp->d_init_level < DISK_INIT_CREATE) { in disk_destroy()
918 if (dp->d_devstat != NULL) in disk_destroy()
919 devstat_remove_entry(dp->d_devstat); in disk_destroy()
920 LIST_FOREACH_SAFE(dap, &dp->d_aliases, da_next, daptmp) in disk_destroy()
922 g_free(dp->d_cevent); in disk_destroy()
923 g_free(dp->d_devent); in disk_destroy()
924 g_free(dp); in disk_destroy()
928 KASSERT(dp->d_devent != NULL, in disk_destroy()
929 ("Disk destroy for %p with event NULL", dp)); in disk_destroy()
930 disk_gone(dp); in disk_destroy()
931 dp->d_destroyed = 1; in disk_destroy()
932 g_cancel_event(dp); in disk_destroy()
933 if (dp->d_devstat != NULL) in disk_destroy()
934 devstat_remove_entry(dp->d_devstat); in disk_destroy()
935 g_post_event_ep(g_disk_destroy, dp, dp->d_devent, NULL); in disk_destroy()
939 disk_add_alias(struct disk *dp, const char *name) in disk_add_alias() argument
947 LIST_INSERT_HEAD(&dp->d_aliases, dap, da_next); in disk_add_alias()
951 disk_gone(struct disk *dp) in disk_gone() argument
956 mtx_pool_lock(mtxpool_sleep, dp); in disk_gone()
962 if (dp->d_goneflag != 0) { in disk_gone()
963 mtx_pool_unlock(mtxpool_sleep, dp); in disk_gone()
967 dp->d_goneflag = 1; in disk_gone()
984 if (dp->d_init_level < DISK_INIT_DONE) { in disk_gone()
985 mtx_pool_unlock(mtxpool_sleep, dp); in disk_gone()
988 mtx_pool_unlock(mtxpool_sleep, dp); in disk_gone()
990 gp = dp->d_geom; in disk_gone()
1000 disk_attr_changed(struct disk *dp, const char *attr, int flag) in disk_attr_changed() argument
1002 struct g_geom *gp = dp->d_geom; in disk_attr_changed()
1010 snprintf(devnamebuf, sizeof(devnamebuf), "devname=%s%d", dp->d_name, in disk_attr_changed()
1011 dp->d_unit); in disk_attr_changed()
1016 disk_media_changed(struct disk *dp, int flag) in disk_media_changed() argument
1018 struct g_geom *gp = dp->d_geom; in disk_media_changed()
1032 disk_media_gone(struct disk *dp, int flag) in disk_media_gone() argument
1034 struct g_geom *gp = dp->d_geom; in disk_media_gone()
1048 disk_resize(struct disk *dp, int flag) in disk_resize() argument
1051 if (dp->d_destroyed || dp->d_geom == NULL) in disk_resize()
1054 return (g_post_event(g_disk_resize, dp, flag, NULL)); in disk_resize()
1077 struct disk *dp; in g_disk_sysctl_flags() local
1082 dp = (struct disk *)arg1; in g_disk_sysctl_flags()
1083 sbuf_printf(sb, "%b", dp->d_flags, in g_disk_sysctl_flags()