diff options
| author | Edward Tomasz Napierala <trasz@FreeBSD.org> | 2019-11-09 17:30:19 +0000 |
|---|---|---|
| committer | Edward Tomasz Napierala <trasz@FreeBSD.org> | 2019-11-09 17:30:19 +0000 |
| commit | b5961be1ab74b2824ba79d511562aec5c81fe62b (patch) | |
| tree | f0bd23d1cfd0e71eb7b9722227df69a6eb73748b | |
| parent | 461587dc9b17d940a754f0feb015812600909984 (diff) | |
Notes
| -rw-r--r-- | sys/cam/ata/ata_da.c | 2 | ||||
| -rw-r--r-- | sys/cam/mmc/mmc_da.c | 2 | ||||
| -rw-r--r-- | sys/cam/nvme/nvme_da.c | 2 | ||||
| -rw-r--r-- | sys/cam/scsi/scsi_cd.c | 2 | ||||
| -rw-r--r-- | sys/cam/scsi/scsi_da.c | 2 | ||||
| -rw-r--r-- | sys/geom/geom_disk.c | 5 | ||||
| -rw-r--r-- | sys/geom/geom_disk.h | 1 | ||||
| -rw-r--r-- | usr.sbin/diskinfo/diskinfo.c | 4 |
8 files changed, 19 insertions, 1 deletions
diff --git a/sys/cam/ata/ata_da.c b/sys/cam/ata/ata_da.c index 33f2c7319fbf..5077b7791426 100644 --- a/sys/cam/ata/ata_da.c +++ b/sys/cam/ata/ata_da.c @@ -3420,6 +3420,8 @@ adasetgeom(struct ada_softc *softc, struct ccb_getdev *cgd) softc->disk->d_fwheads = softc->params.heads; ata_disk_firmware_geom_adjust(softc->disk); softc->disk->d_rotation_rate = cgd->ident_data.media_rotation_rate; + snprintf(softc->disk->d_attachment, sizeof(softc->disk->d_attachment), + "%s%d", softc->cpi.dev_name, softc->cpi.unit_number); } static void diff --git a/sys/cam/mmc/mmc_da.c b/sys/cam/mmc/mmc_da.c index 18cfcd290efb..d0a3b35c0b45 100644 --- a/sys/cam/mmc/mmc_da.c +++ b/sys/cam/mmc/mmc_da.c @@ -1532,6 +1532,8 @@ sdda_add_part(struct cam_periph *periph, u_int type, const char *name, part->disk->d_hba_device = cpi.hba_device; part->disk->d_hba_subvendor = cpi.hba_subvendor; part->disk->d_hba_subdevice = cpi.hba_subdevice; + snprintf(part->disk->d_attachment, sizeof(part->disk->d_attachment), + "%s%d", cpi.dev_name, cpi.unit_number); part->disk->d_sectorsize = mmc_get_sector_size(periph); part->disk->d_mediasize = media_size; diff --git a/sys/cam/nvme/nvme_da.c b/sys/cam/nvme/nvme_da.c index 4988dbb5e1e3..b17983eff541 100644 --- a/sys/cam/nvme/nvme_da.c +++ b/sys/cam/nvme/nvme_da.c @@ -815,6 +815,8 @@ ndaregister(struct cam_periph *periph, void *arg) disk->d_hba_device = cpi.hba_device; disk->d_hba_subvendor = cpi.hba_subvendor; disk->d_hba_subdevice = cpi.hba_subdevice; + snprintf(disk->d_attachment, sizeof(disk->d_attachment), + "%s%d", cpi.dev_name, cpi.unit_number); disk->d_stripesize = disk->d_sectorsize; disk->d_stripeoffset = 0; disk->d_devstat = devstat_new_entry(periph->periph_name, diff --git a/sys/cam/scsi/scsi_cd.c b/sys/cam/scsi/scsi_cd.c index e3ec731102af..33f3743899ab 100644 --- a/sys/cam/scsi/scsi_cd.c +++ b/sys/cam/scsi/scsi_cd.c @@ -702,6 +702,8 @@ cdregister(struct cam_periph *periph, void *arg) softc->disk->d_hba_device = cpi.hba_device; softc->disk->d_hba_subvendor = cpi.hba_subvendor; softc->disk->d_hba_subdevice = cpi.hba_subdevice; + snprintf(softc->disk->d_attachment, sizeof(softc->disk->d_attachment), + "%s%d", cpi.dev_name, cpi.unit_number); /* * Acquire a reference to the periph before we register with GEOM. diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c index 451af7a398f7..a36ab2d65255 100644 --- a/sys/cam/scsi/scsi_da.c +++ b/sys/cam/scsi/scsi_da.c @@ -2875,6 +2875,8 @@ daregister(struct cam_periph *periph, void *arg) softc->disk->d_hba_device = cpi.hba_device; softc->disk->d_hba_subvendor = cpi.hba_subvendor; softc->disk->d_hba_subdevice = cpi.hba_subdevice; + snprintf(softc->disk->d_attachment, sizeof(softc->disk->d_attachment), + "%s%d", cpi.dev_name, cpi.unit_number); /* * Acquire a reference to the periph before we register with GEOM. diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c index b13f007553ef..00bc98a656e4 100644 --- a/sys/geom/geom_disk.c +++ b/sys/geom/geom_disk.c @@ -528,7 +528,10 @@ g_disk_start(struct bio *bp) else if (g_handleattr_uint16_t(bp, "GEOM::rotation_rate", dp->d_rotation_rate)) break; - else + else if (g_handleattr_str(bp, "GEOM::attachment", + dp->d_attachment)) + break; + else error = ENOIOCTL; break; case BIO_FLUSH: diff --git a/sys/geom/geom_disk.h b/sys/geom/geom_disk.h index fe5831a061c7..8e2282a09a3a 100644 --- a/sys/geom/geom_disk.h +++ b/sys/geom/geom_disk.h @@ -118,6 +118,7 @@ struct disk { uint16_t d_hba_subvendor; uint16_t d_hba_subdevice; uint16_t d_rotation_rate; + char d_attachment[DISK_IDENT_SIZE]; /* Fields private to the driver */ void *d_drv1; diff --git a/usr.sbin/diskinfo/diskinfo.c b/usr.sbin/diskinfo/diskinfo.c index 56912afa844b..2f0ceb4ebd04 100644 --- a/usr.sbin/diskinfo/diskinfo.c +++ b/usr.sbin/diskinfo/diskinfo.c @@ -251,6 +251,10 @@ main(int argc, char **argv) printf("\t%-12s\t# Disk descr.\n", arg.value.str); if (ioctl(fd, DIOCGIDENT, ident) == 0) printf("\t%-12s\t# Disk ident.\n", ident); + strlcpy(arg.name, "GEOM::attachment", sizeof(arg.name)); + arg.len = sizeof(arg.value.str); + if (ioctl(fd, DIOCGATTR, &arg) == 0) + printf("\t%-12s\t# Attachment\n", arg.value.str); if (ioctl(fd, DIOCGPHYSPATH, physpath) == 0) printf("\t%-12s\t# Physical path\n", physpath); printf("\t%-12s\t# TRIM/UNMAP support\n", |
