From owner-svn-src-head@FreeBSD.ORG Sun Jul 25 19:26:01 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0BC731065674; Sun, 25 Jul 2010 19:26:01 +0000 (UTC) (envelope-from scottl@samsco.org) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.freebsd.org (Postfix) with ESMTP id A2A098FC0C; Sun, 25 Jul 2010 19:26:00 +0000 (UTC) Received: from [127.0.0.1] (pooker.samsco.org [168.103.85.57]) (authenticated bits=0) by pooker.samsco.org (8.14.4/8.14.4) with ESMTP id o6PJPsLh023220; Sun, 25 Jul 2010 13:25:54 -0600 (MDT) (envelope-from scottl@samsco.org) Mime-Version: 1.0 (Apple Message framework v1078) Content-Type: text/plain; charset=us-ascii From: Scott Long In-Reply-To: <201007251543.o6PFhrHp088504@svn.freebsd.org> Date: Sun, 25 Jul 2010 13:25:54 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <79B77F13-9802-4007-A565-28B76A0AAA88@samsco.org> References: <201007251543.o6PFhrHp088504@svn.freebsd.org> To: Alexander Motin X-Mailer: Apple Mail (2.1078) X-Spam-Status: No, score=-50.0 required=3.8 tests=ALL_TRUSTED, T_RP_MATCHES_RCVD autolearn=unavailable version=3.3.0 X-Spam-Checker-Version: SpamAssassin 3.3.0 (2010-01-18) on pooker.samsco.org Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r210471 - in head: sbin/camcontrol sys/cam sys/cam/ata sys/cam/scsi sys/dev/ahci sys/dev/ata sys/dev/mvs sys/dev/siis sys/geom X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 19:26:01 -0000 I'm tired of CCB structure sizes changing willie nillie, whether in a = CURRENT branch or not. This should have been a new CCB, not a add-on to = an existing CCB. All your patch does it break binary compatibility. Scott On Jul 25, 2010, at 9:43 AM, Alexander Motin wrote: > Author: mav > Date: Sun Jul 25 15:43:52 2010 > New Revision: 210471 > URL: http://svn.freebsd.org/changeset/base/210471 >=20 > Log: > Export PCI IDs of ATA/SATA controllers through CAM and ata(4) layers = to > GEOM. This information needed for proper soft-RAID's on-disk metadata > reading and writing. >=20 > Modified: > head/sbin/camcontrol/camcontrol.c > head/sys/cam/ata/ata_da.c > head/sys/cam/cam_ccb.h > head/sys/cam/scsi/scsi_cd.c > head/sys/cam/scsi/scsi_da.c > head/sys/dev/ahci/ahci.c > head/sys/dev/ata/ata-all.c > head/sys/dev/ata/ata-disk.c > head/sys/dev/mvs/mvs.c > head/sys/dev/siis/siis.c > head/sys/geom/geom_disk.c > head/sys/geom/geom_disk.h >=20 > Modified: head/sbin/camcontrol/camcontrol.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sbin/camcontrol/camcontrol.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sbin/camcontrol/camcontrol.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -3083,6 +3083,14 @@ cpi_print(struct ccb_pathinq *cpi) > cpi->initiator_id); > fprintf(stdout, "%s SIM vendor: %s\n", adapter_str, = cpi->sim_vid); > fprintf(stdout, "%s HBA vendor: %s\n", adapter_str, = cpi->hba_vid); > + fprintf(stdout, "%s HBA vendor ID: 0x%04x\n", > + adapter_str, cpi->hba_vendor); > + fprintf(stdout, "%s HBA device ID: 0x%04x\n", > + adapter_str, cpi->hba_device); > + fprintf(stdout, "%s HBA subvendor ID: 0x%04x\n", > + adapter_str, cpi->hba_subvendor); > + fprintf(stdout, "%s HBA subdevice ID: 0x%04x\n", > + adapter_str, cpi->hba_subdevice); > fprintf(stdout, "%s bus ID: %d\n", adapter_str, cpi->bus_id); > fprintf(stdout, "%s base transfer speed: ", adapter_str); > if (cpi->base_transfer_speed > 1000) > @@ -3092,6 +3100,8 @@ cpi_print(struct ccb_pathinq *cpi) > else > fprintf(stdout, "%dKB/sec\n", > (cpi->base_transfer_speed % 1000) * 1000); > + fprintf(stdout, "%s maximum transfer size: %u bytes\n", > + adapter_str, cpi->maxio); > } >=20 > static int >=20 > Modified: head/sys/cam/ata/ata_da.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/cam/ata/ata_da.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/cam/ata/ata_da.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -734,6 +734,10 @@ adaregister(struct cam_periph *periph, v > softc->disk->d_flags |=3D DISKFLAG_CANDELETE; > strlcpy(softc->disk->d_ident, cgd->serial_num, > MIN(sizeof(softc->disk->d_ident), cgd->serial_num_len + 1)); > + softc->disk->d_hba_vendor =3D cpi.hba_vendor; > + softc->disk->d_hba_device =3D cpi.hba_device; > + softc->disk->d_hba_subvendor =3D cpi.hba_subvendor; > + softc->disk->d_hba_subdevice =3D cpi.hba_subdevice; >=20 > softc->disk->d_sectorsize =3D softc->params.secsize; > softc->disk->d_mediasize =3D (off_t)softc->params.sectors * >=20 > Modified: head/sys/cam/cam_ccb.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/cam/cam_ccb.h Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/cam/cam_ccb.h Sun Jul 25 15:43:52 2010 = (r210471) > @@ -596,6 +596,10 @@ struct ccb_pathinq { > char ccb_pathinq_settings_opaque[PATHINQ_SETTINGS_SIZE]; > } xport_specific; > u_int maxio; /* Max supported I/O size, in = bytes. */ > + u_int16_t hba_vendor; /* HBA vendor ID */ > + u_int16_t hba_device; /* HBA device ID */ > + u_int16_t hba_subvendor; /* HBA subvendor ID */ > + u_int16_t hba_subdevice; /* HBA subdevice ID */ > }; >=20 > /* Path Statistics CCB */ >=20 > Modified: head/sys/cam/scsi/scsi_cd.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/cam/scsi/scsi_cd.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/cam/scsi/scsi_cd.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -733,6 +733,10 @@ cdregister(struct cam_periph *periph, vo > else > softc->disk->d_maxsize =3D cpi.maxio; > softc->disk->d_flags =3D 0; > + softc->disk->d_hba_vendor =3D cpi.hba_vendor; > + softc->disk->d_hba_device =3D cpi.hba_device; > + softc->disk->d_hba_subvendor =3D cpi.hba_subvendor; > + softc->disk->d_hba_subdevice =3D cpi.hba_subdevice; > disk_create(softc->disk, DISK_VERSION); > cam_periph_lock(periph); >=20 >=20 > Modified: head/sys/cam/scsi/scsi_da.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/cam/scsi/scsi_da.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/cam/scsi/scsi_da.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -1310,6 +1310,10 @@ daregister(struct cam_periph *periph, vo > softc->disk->d_flags |=3D DISKFLAG_CANFLUSHCACHE; > strlcpy(softc->disk->d_ident, cgd->serial_num, > MIN(sizeof(softc->disk->d_ident), cgd->serial_num_len + 1)); > + softc->disk->d_hba_vendor =3D cpi.hba_vendor; > + softc->disk->d_hba_device =3D cpi.hba_device; > + softc->disk->d_hba_subvendor =3D cpi.hba_subvendor; > + softc->disk->d_hba_subdevice =3D cpi.hba_subdevice; > disk_create(softc->disk, DISK_VERSION); > mtx_lock(periph->sim->mtx); >=20 >=20 > Modified: head/sys/dev/ahci/ahci.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ahci/ahci.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/dev/ahci/ahci.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -2459,7 +2459,7 @@ ahci_check_ids(device_t dev, union ccb * > static void > ahciaction(struct cam_sim *sim, union ccb *ccb) > { > - device_t dev; > + device_t dev, parent; > struct ahci_channel *ch; >=20 > CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, ("ahciaction = func_code=3D%x\n", > @@ -2599,6 +2599,7 @@ ahciaction(struct cam_sim *sim, union cc > { > struct ccb_pathinq *cpi =3D &ccb->cpi; >=20 > + parent =3D device_get_parent(dev); > cpi->version_num =3D 1; /* XXX??? */ > cpi->hba_inquiry =3D PI_SDTR_ABLE; > if (ch->caps & AHCI_CAP_SNCQ) > @@ -2626,8 +2627,12 @@ ahciaction(struct cam_sim *sim, union cc > cpi->protocol_version =3D PROTO_VERSION_UNSPECIFIED; > cpi->maxio =3D MAXPHYS; > /* ATI SB600 can't handle 256 sectors with FPDMA (NCQ). = */ > - if (pci_get_devid(device_get_parent(dev)) =3D=3D = 0x43801002) > + if (pci_get_devid(parent) =3D=3D 0x43801002) > cpi->maxio =3D min(cpi->maxio, 128 * 512); > + cpi->hba_vendor =3D pci_get_vendor(parent); > + cpi->hba_device =3D pci_get_device(parent); > + cpi->hba_subvendor =3D pci_get_subvendor(parent); > + cpi->hba_subdevice =3D pci_get_subdevice(parent); > cpi->ccb_h.status =3D CAM_REQ_CMP; > break; > } >=20 > Modified: head/sys/dev/ata/ata-all.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ata/ata-all.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/dev/ata/ata-all.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > #include >=20 > #ifdef ATA_CAM > @@ -1523,7 +1524,7 @@ ata_check_ids(device_t dev, union ccb *c > static void > ataaction(struct cam_sim *sim, union ccb *ccb) > { > - device_t dev; > + device_t dev, parent; > struct ata_channel *ch; >=20 > CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, ("ataaction = func_code=3D%x\n", > @@ -1674,6 +1675,7 @@ ataaction(struct cam_sim *sim, union ccb > { > struct ccb_pathinq *cpi =3D &ccb->cpi; >=20 > + parent =3D device_get_parent(dev); > cpi->version_num =3D 1; /* XXX??? */ > cpi->hba_inquiry =3D PI_SDTR_ABLE; > cpi->target_sprt =3D 0; > @@ -1702,6 +1704,13 @@ ataaction(struct cam_sim *sim, union ccb > cpi->protocol =3D PROTO_ATA; > cpi->protocol_version =3D PROTO_VERSION_UNSPECIFIED; > cpi->maxio =3D ch->dma.max_iosize ? ch->dma.max_iosize : = DFLTPHYS; > + if (device_get_devclass(device_get_parent(parent)) =3D=3D > + devclass_find("pci")) { > + cpi->hba_vendor =3D pci_get_vendor(parent); > + cpi->hba_device =3D pci_get_device(parent); > + cpi->hba_subvendor =3D = pci_get_subvendor(parent); > + cpi->hba_subdevice =3D = pci_get_subdevice(parent); > + } > cpi->ccb_h.status =3D CAM_REQ_CMP; > break; > } >=20 > Modified: head/sys/dev/ata/ata-disk.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ata/ata-disk.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/dev/ata/ata-disk.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > #include >=20 > /* prototypes */ > @@ -94,6 +95,7 @@ ad_attach(device_t dev) > struct ata_channel *ch =3D = device_get_softc(device_get_parent(dev)); > struct ata_device *atadev =3D device_get_softc(dev); > struct ad_softc *adp; > + device_t parent; >=20 > /* check that we have a virgin disk to attach */ > if (device_get_ivars(dev)) > @@ -143,6 +145,17 @@ ad_attach(device_t dev) > adp->disk->d_flags |=3D DISKFLAG_CANDELETE; > strlcpy(adp->disk->d_ident, atadev->param.serial, > sizeof(adp->disk->d_ident)); > + parent =3D device_get_parent(ch->dev); > + if (parent !=3D NULL && device_get_parent(parent) !=3D NULL && > + (device_get_devclass(parent) =3D=3D > + devclass_find("atapci") || > + device_get_devclass(device_get_parent(parent)) =3D=3D > + devclass_find("pci"))) { > + adp->disk->d_hba_vendor =3D pci_get_vendor(parent); > + adp->disk->d_hba_device =3D pci_get_device(parent); > + adp->disk->d_hba_subvendor =3D pci_get_subvendor(parent); > + adp->disk->d_hba_subdevice =3D pci_get_subdevice(parent); > + } > ata_disk_firmware_geom_adjust(adp->disk); > disk_create(adp->disk, DISK_VERSION); > device_add_child(dev, "subdisk", device_get_unit(dev)); >=20 > Modified: head/sys/dev/mvs/mvs.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/mvs/mvs.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/dev/mvs/mvs.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > #include "mvs.h" >=20 > #include > @@ -2017,7 +2018,7 @@ mvs_check_ids(device_t dev, union ccb *c > static void > mvsaction(struct cam_sim *sim, union ccb *ccb) > { > - device_t dev; > + device_t dev, parent; > struct mvs_channel *ch; >=20 > CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, ("mvsaction = func_code=3D%x\n", > @@ -2152,6 +2153,7 @@ mvsaction(struct cam_sim *sim, union ccb > { > struct ccb_pathinq *cpi =3D &ccb->cpi; >=20 > + parent =3D device_get_parent(dev); > cpi->version_num =3D 1; /* XXX??? */ > cpi->hba_inquiry =3D PI_SDTR_ABLE; > if (!(ch->quirks & MVS_Q_GENI)) { > @@ -2180,6 +2182,12 @@ mvsaction(struct cam_sim *sim, union ccb > cpi->protocol =3D PROTO_ATA; > cpi->protocol_version =3D PROTO_VERSION_UNSPECIFIED; > cpi->maxio =3D MAXPHYS; > + if ((ch->quirks & MVS_Q_SOC) =3D=3D 0) { > + cpi->hba_vendor =3D pci_get_vendor(parent); > + cpi->hba_device =3D pci_get_device(parent); > + cpi->hba_subvendor =3D = pci_get_subvendor(parent); > + cpi->hba_subdevice =3D = pci_get_subdevice(parent); > + } > cpi->ccb_h.status =3D CAM_REQ_CMP; > break; > } >=20 > Modified: head/sys/dev/siis/siis.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/siis/siis.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/dev/siis/siis.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -1677,7 +1677,7 @@ siis_check_ids(device_t dev, union ccb * > static void > siisaction(struct cam_sim *sim, union ccb *ccb) > { > - device_t dev; > + device_t dev, parent; > struct siis_channel *ch; >=20 > CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, ("siisaction = func_code=3D%x\n", > @@ -1816,6 +1816,7 @@ siisaction(struct cam_sim *sim, union cc > { > struct ccb_pathinq *cpi =3D &ccb->cpi; >=20 > + parent =3D device_get_parent(dev); > cpi->version_num =3D 1; /* XXX??? */ > cpi->hba_inquiry =3D PI_SDTR_ABLE | PI_TAG_ABLE; > cpi->hba_inquiry |=3D PI_SATAPM; > @@ -1835,8 +1836,12 @@ siisaction(struct cam_sim *sim, union cc > cpi->transport_version =3D XPORT_VERSION_UNSPECIFIED; > cpi->protocol =3D PROTO_ATA; > cpi->protocol_version =3D PROTO_VERSION_UNSPECIFIED; > - cpi->ccb_h.status =3D CAM_REQ_CMP; > cpi->maxio =3D MAXPHYS; > + cpi->hba_vendor =3D pci_get_vendor(parent); > + cpi->hba_device =3D pci_get_device(parent); > + cpi->hba_subvendor =3D pci_get_subvendor(parent); > + cpi->hba_subdevice =3D pci_get_subdevice(parent); > + cpi->ccb_h.status =3D CAM_REQ_CMP; > break; > } > default: >=20 > Modified: head/sys/geom/geom_disk.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/geom/geom_disk.c Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/geom/geom_disk.c Sun Jul 25 15:43:52 2010 = (r210471) > @@ -305,6 +305,18 @@ g_disk_start(struct bio *bp) > break; > else if (g_handleattr_str(bp, "GEOM::ident", = dp->d_ident)) > break; > + else if (g_handleattr(bp, "GEOM::hba_vendor", > + &dp->d_hba_vendor, 2)) > + break; > + else if (g_handleattr(bp, "GEOM::hba_device", > + &dp->d_hba_device, 2)) > + break; > + else if (g_handleattr(bp, "GEOM::hba_subvendor", > + &dp->d_hba_subvendor, 2)) > + break; > + else if (g_handleattr(bp, "GEOM::hba_subdevice", > + &dp->d_hba_subdevice, 2)) > + break; > else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) > g_disk_kerneldump(bp, dp); > else=20 >=20 > Modified: head/sys/geom/geom_disk.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/geom/geom_disk.h Sun Jul 25 15:17:24 2010 = (r210470) > +++ head/sys/geom/geom_disk.h Sun Jul 25 15:43:52 2010 = (r210471) > @@ -85,6 +85,10 @@ struct disk { > u_int d_stripeoffset; > u_int d_stripesize; > char d_ident[DISK_IDENT_SIZE]; > + uint16_t d_hba_vendor; > + uint16_t d_hba_device; > + uint16_t d_hba_subvendor; > + uint16_t d_hba_subdevice; >=20 > /* Fields private to the driver */ > void *d_drv1;