Date: Fri, 16 May 2003 12:56:39 -0600 From: Scott Long <scott_long@btc.adaptec.com> To: Nate Lawson <nate@root.org> Cc: scsi@freebsd.org Subject: Re: PATCH: merge calc geometry calls into convenience function Message-ID: <3EC53467.9080101@btc.adaptec.com> In-Reply-To: <20030516105356.E82960@root.org> References: <20030516105356.E82960@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
cam_calc_std_geometry() might be a better name. I like the idea in any case. However, could you hold off until after the 5.1 branch? Scott Nate Lawson wrote: > Left out of this are aha(4) and bt(4) although they probably should be > added. They use a 2G/1G/<1G scheme. > > --- > Merge common XPT_CALC_GEOMETRY functions into a single convenience > function. > Devices below may experience a change in geometry. > > * Due to a bug, aic(4) never used extended geometry. Changes all drives > >1G to now use extended translation. > * sbp(4) drives exactly 1 GB in size now no longer use extended > geometry. > * umass(4) drives exactly 1 GB in size now no longer use extended > geometry. > > For all other controllers in this commit, this should be a no-op. > --- > > Index: sys/cam/cam.c > =================================================================== > RCS file: /home/ncvs/src/sys/cam/cam.c,v > retrieving revision 1.5 > diff -u -r1.5 cam.c > --- sys/cam/cam.c 9 Jan 2002 03:38:58 -0000 1.5 > +++ sys/cam/cam.c 14 May 2003 22:16:17 -0000 > @@ -358,3 +358,28 @@ > } > > #endif /* _KERNEL/!_KERNEL */ > + > +/* > + * Common calculate geometry fuction > + * > + * Caller should set ccg->volume_size and block_size. > + * The extended parameter should be zero if extended translation > + * should not be used. > + */ > +void > +cam_calc_geometry(struct ccb_calc_geometry *ccg, int extended) > +{ > + uint32_t size_mb, secs_per_cylinder; > + > + size_mb = ccg->volume_size / ((1024L * 1024L) / > ccg->block_size); > + if (size_mb > 1024 && extended) { > + ccg->heads = 255; > + ccg->secs_per_track = 63; > + } else { > + ccg->heads = 64; > + ccg->secs_per_track = 32; > + } > + secs_per_cylinder = ccg->heads * ccg->secs_per_track; > + ccg->cylinders = ccg->volume_size / secs_per_cylinder; > + ccg->ccb_h.status = CAM_REQ_CMP; > +} > Index: sys/cam/cam_ccb.h > =================================================================== > RCS file: /home/ncvs/src/sys/cam/cam_ccb.h,v > retrieving revision 1.23 > diff -u -r1.23 cam_ccb.h > --- sys/cam/cam_ccb.h 29 Apr 2003 13:35:58 -0000 1.23 > +++ sys/cam/cam_ccb.h 14 May 2003 22:46:49 -0000 > @@ -794,6 +794,7 @@ > u_int8_t heads; > u_int8_t secs_per_track; > }; > +void cam_calc_geometry(struct ccb_calc_geometry *ccg, int extended); > > /* > * Rescan the given bus, or bus/target/lun > Index: sys/cam/scsi/scsi_low.c > =================================================================== > RCS file: /home/ncvs/src/sys/cam/scsi/scsi_low.c,v > retrieving revision 1.19 > diff -u -r1.19 scsi_low.c > --- sys/cam/scsi/scsi_low.c 8 Mar 2003 08:01:26 -0000 1.19 > +++ sys/cam/scsi/scsi_low.c 16 May 2003 01:45:45 -0000 > @@ -1282,26 +1282,7 @@ > } > > case XPT_CALC_GEOMETRY: { /* not yet HN2 */ > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - int extended; > - > - extended = 1; > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > xpt_done(ccb); > break; > } > Index: sys/dev/advansys/advansys.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/advansys/advansys.c,v > retrieving revision 1.23 > diff -u -r1.23 advansys.c > --- sys/dev/advansys/advansys.c 10 Apr 2003 23:50:05 -0000 1.23 > +++ sys/dev/advansys/advansys.c 16 May 2003 01:46:37 -0000 > @@ -431,26 +431,10 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > int extended; > > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > extended = (adv->control & ADV_CNTL_BIOS_GT_1GB) != 0; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, extended); > xpt_done(ccb); > break; > } > Index: sys/dev/advansys/adwcam.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/advansys/adwcam.c,v > retrieving revision 1.14 > diff -u -r1.14 adwcam.c > --- sys/dev/advansys/adwcam.c 10 Apr 2003 23:50:05 -0000 1.14 > +++ sys/dev/advansys/adwcam.c 16 May 2003 01:47:03 -0000 > @@ -724,30 +724,11 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - int extended; > - > /* > * XXX Use Adaptec translation until I find out how to > * get this information from the card. > */ > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - extended = 1; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > xpt_done(ccb); > break; > } > Index: sys/dev/ahb/ahb.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/ahb/ahb.c,v > retrieving revision 1.27 > diff -u -r1.27 ahb.c > --- sys/dev/ahb/ahb.c 10 Apr 2003 23:50:05 -0000 1.27 > +++ sys/dev/ahb/ahb.c 16 May 2003 07:36:31 -0000 > @@ -1171,24 +1171,7 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - > - if (size_mb > 1024 && (ahb->extended_trans != 0)) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, ahb->extended_trans); > xpt_done(ccb); > break; > } > Index: sys/dev/aic/aic.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/aic/aic.c,v > retrieving revision 1.18 > diff -u -r1.18 aic.c > --- sys/dev/aic/aic.c 28 Sep 2002 17:14:21 -0000 1.18 > +++ sys/dev/aic/aic.c 16 May 2003 07:53:15 -0000 > @@ -254,25 +254,7 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - int extended = 0; > - > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - > - if (size_mb >= 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > xpt_done(ccb); > break; > } > Index: sys/dev/aic7xxx/aic79xx_osm.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/aic7xxx/aic79xx_osm.c,v > retrieving revision 1.10 > diff -u -r1.10 aic79xx_osm.c > --- sys/dev/aic7xxx/aic79xx_osm.c 10 Apr 2003 23:50:05 -0000 > 1.10 > +++ sys/dev/aic7xxx/aic79xx_osm.c 16 May 2003 01:49:46 -0000 > @@ -550,26 +550,10 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - uint32_t size_mb; > - uint32_t secs_per_cylinder; > int extended; > > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > extended = ahd->flags & AHD_EXTENDED_TRANS_A; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, extended); > xpt_done(ccb); > break; > } > Index: sys/dev/aic7xxx/aic7xxx_osm.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/aic7xxx/aic7xxx_osm.c,v > retrieving revision 1.33 > diff -u -r1.33 aic7xxx_osm.c > --- sys/dev/aic7xxx/aic7xxx_osm.c 10 Apr 2003 23:50:05 -0000 > 1.33 > +++ sys/dev/aic7xxx/aic7xxx_osm.c 14 May 2003 22:16:43 -0000 > @@ -819,28 +819,12 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - uint32_t size_mb; > - uint32_t secs_per_cylinder; > int extended; > > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > extended = SIM_IS_SCSIBUS_B(ahc, sim) > ? ahc->flags & AHC_EXTENDED_TRANS_B > : ahc->flags & AHC_EXTENDED_TRANS_A; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, extended); > xpt_done(ccb); > break; > } > Index: sys/dev/amr/amr_cam.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/amr/amr_cam.c,v > retrieving revision 1.7 > diff -u -r1.7 amr_cam.c > --- sys/dev/amr/amr_cam.c 1 Apr 2003 15:06:22 -0000 1.7 > +++ sys/dev/amr/amr_cam.c 16 May 2003 01:51:17 -0000 > @@ -265,22 +265,7 @@ > > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg = &ccb->ccg; > - u_int32_t size_in_mb; > - u_int32_t secs_per_cylinder; > - > - size_in_mb = ccg->volume_size / ((1024L * 1024L) / > ccg->block_size); > - > - if (size_in_mb > 1024) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > break; > } > > Index: sys/dev/ata/atapi-cam.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/ata/atapi-cam.c,v > retrieving revision 1.15 > diff -u -r1.15 atapi-cam.c > --- sys/dev/ata/atapi-cam.c 8 Mar 2003 08:01:28 -0000 1.15 > +++ sys/dev/ata/atapi-cam.c 16 May 2003 01:52:04 -0000 > @@ -323,26 +323,8 @@ > } > > case XPT_CALC_GEOMETRY: { > - struct ccb_calc_geometry *ccg; > - unsigned int size_mb; > - unsigned int secs_per_cylinder; > - int extended; > - > CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_SUBTRACE, > ("CALC_GEOMETRY\n")); > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size / ((1024L * 1024L) / > ccg->block_size); > - extended = 1; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > xpt_done(ccb); > return; > } > Index: sys/dev/dpt/dpt_scsi.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/dpt/dpt_scsi.c,v > retrieving revision 1.41 > diff -u -r1.41 dpt_scsi.c > --- sys/dev/dpt/dpt_scsi.c 10 Apr 2003 23:50:05 -0000 1.41 > +++ sys/dev/dpt/dpt_scsi.c 16 May 2003 01:53:27 -0000 > @@ -1034,30 +1034,11 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - int extended; > - > /* > * XXX Use Adaptec translation until I find out how to > * get this information from the card. > */ > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - extended = 1; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > xpt_done(ccb); > break; > } > Index: sys/dev/firewire/sbp.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/firewire/sbp.c,v > retrieving revision 1.43 > diff -u -r1.43 sbp.c > --- sys/dev/firewire/sbp.c 24 Apr 2003 15:27:06 -0000 1.43 > +++ sys/dev/firewire/sbp.c 16 May 2003 01:54:46 -0000 > @@ -2222,11 +2222,8 @@ > case XPT_CALC_GEOMETRY: > { > struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - int extended = 1; > - ccg = &ccb->ccg; > > + ccg = &ccb->ccg; > if (ccg->block_size == 0) { > printf("sbp_action1: block_size is 0.\n"); > ccb->ccb_h.status = CAM_REQ_INVALID; > @@ -2241,19 +2238,7 @@ > ccg->volume_size); > END_DEBUG > > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - > - if (size_mb >= 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(ccg, /*extended*/1); > xpt_done(ccb); > break; > } > Index: sys/dev/isp/isp_freebsd.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/isp/isp_freebsd.c,v > retrieving revision 1.89 > diff -u -r1.89 isp_freebsd.c > --- sys/dev/isp/isp_freebsd.c 3 Mar 2003 12:15:42 -0000 1.89 > +++ sys/dev/isp/isp_freebsd.c 16 May 2003 07:48:13 -0000 > @@ -2532,8 +2532,6 @@ > case XPT_CALC_GEOMETRY: > { > struct ccb_calc_geometry *ccg; > - u_int32_t secs_per_cylinder; > - u_int32_t size_mb; > > ccg = &ccb->ccg; > if (ccg->block_size == 0) { > @@ -2544,17 +2542,7 @@ > xpt_done(ccb); > break; > } > - size_mb = ccg->volume_size /((1024L * 1024L) / > ccg->block_size); > - if (size_mb > 1024) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(ccg, /*extended*/1); > xpt_done(ccb); > break; > } > Index: sys/dev/mpt/mpt_freebsd.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/mpt/mpt_freebsd.c,v > retrieving revision 1.9 > diff -u -r1.9 mpt_freebsd.c > --- sys/dev/mpt/mpt_freebsd.c 10 Apr 2003 23:50:06 -0000 1.9 > +++ sys/dev/mpt/mpt_freebsd.c 16 May 2003 01:55:52 -0000 > @@ -1399,8 +1399,6 @@ > case XPT_CALC_GEOMETRY: > { > struct ccb_calc_geometry *ccg; > - u_int32_t secs_per_cylinder; > - u_int32_t size_mb; > > ccg = &ccb->ccg; > if (ccg->block_size == 0) { > @@ -1409,17 +1407,7 @@ > break; > } > > - size_mb = ccg->volume_size /((1024L * 1024L) / > ccg->block_size); > - if (size_mb > 1024) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(ccg, /*extended*/1); > xpt_done(ccb); > break; > } > Index: sys/dev/trm/trm.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/trm/trm.c,v > retrieving revision 1.7 > diff -u -r1.7 trm.c > --- sys/dev/trm/trm.c 10 Apr 2003 23:50:06 -0000 1.7 > +++ sys/dev/trm/trm.c 16 May 2003 01:57:06 -0000 > @@ -984,29 +984,10 @@ > * Calculate the geometry parameters for a device give > * the sector size and volume size. > */ > - case XPT_CALC_GEOMETRY: { > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - int extended; > - > + case XPT_CALC_GEOMETRY: > TRM_DPRINTF(" XPT_CALC_GEOMETRY \n"); > - ccg = &pccb->ccg; > - size_mb = ccg->volume_size / > - ((1024L * 1024L) / ccg->block_size); > - extended = 1; > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * > ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / > secs_per_cylinder; > - pccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&pccb->ccg, /*extended*/1); > xpt_done(pccb); > - } > break; > case XPT_ENG_INQ: > TRM_DPRINTF(" XPT_ENG_INQ \n"); > Index: sys/dev/amd/amd.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/amd/amd.c,v > retrieving revision 1.17 > diff -u -r1.17 amd.c > --- sys/dev/amd/amd.c 10 Apr 2003 23:50:05 -0000 1.17 > +++ sys/dev/amd/amd.c 16 May 2003 07:39:05 -0000 > @@ -680,25 +680,10 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > int extended; > > - ccg = &pccb->ccg; > - size_mb = ccg->volume_size/((1024L * > 1024L)/ccg->block_size); > extended = (amd->eepromBuf[EE_MODE2] & GREATER_1G) != 0; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - pccb->ccb_h.status = CAM_REQ_CMP; > + cam_calc_geometry(&pccb->ccg, extended); > xpt_done(pccb); > break; > } > Index: sys/dev/sym/sym_hipd.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/sym/sym_hipd.c,v > retrieving revision 1.40 > diff -u -r1.40 sym_hipd.c > --- sys/dev/sym/sym_hipd.c 10 Apr 2003 23:50:06 -0000 1.40 > +++ sys/dev/sym/sym_hipd.c 16 May 2003 01:59:46 -0000 > @@ -8554,28 +8554,7 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg; > - u32 size_mb; > - u32 secs_per_cylinder; > - int extended; > - > - /* > - * Silly DOS geometry. > - */ > - ccg = &ccb->ccg; > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - extended = 1; > - > - if (size_mb > 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > sym_xpt_done2(np, ccb, CAM_REQ_CMP); > break; > } > Index: sys/dev/usb/umass.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/usb/umass.c,v > retrieving revision 1.81 > diff -u -r1.81 umass.c > --- sys/dev/usb/umass.c 11 May 2003 23:55:27 -0000 1.81 > +++ sys/dev/usb/umass.c 16 May 2003 01:59:09 -0000 > @@ -2458,25 +2457,7 @@ > } > case XPT_CALC_GEOMETRY: > { > - struct ccb_calc_geometry *ccg = &ccb->ccg; > - u_int32_t size_mb; > - u_int32_t secs_per_cylinder; > - int extended = 1; > - > - size_mb = ccg->volume_size > - / ((1024L * 1024L) / ccg->block_size); > - > - if (size_mb >= 1024 && extended) { > - ccg->heads = 255; > - ccg->secs_per_track = 63; > - } else { > - ccg->heads = 64; > - ccg->secs_per_track = 32; > - } > - secs_per_cylinder = ccg->heads * ccg->secs_per_track; > - ccg->cylinders = ccg->volume_size / secs_per_cylinder; > - ccb->ccb_h.status = CAM_REQ_CMP; > - > + cam_calc_geometry(&ccb->ccg, /*extended*/1); > xpt_done(ccb); > break; > } > _______________________________________________ > freebsd-scsi@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-scsi > To unsubscribe, send any mail to "freebsd-scsi-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3EC53467.9080101>