diff options
author | phk <phk@FreeBSD.org> | 2003-02-25 22:06:21 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2003-02-25 22:06:21 +0000 |
commit | 6b2c538260c125288c193db1c7a5471a6bb99a3c (patch) | |
tree | 48230cb26f2dd40eda158ca6506a456a3f9154bb /sys/cam/scsi/scsi_da.c | |
parent | bf37de6b94cdd392684d295c3c3aaee53403e007 (diff) | |
download | FreeBSD-src-6b2c538260c125288c193db1c7a5471a6bb99a3c.zip FreeBSD-src-6b2c538260c125288c193db1c7a5471a6bb99a3c.tar.gz |
NO_GEOM cleanup:
Move to "struct disk *" centric api.
Diffstat (limited to 'sys/cam/scsi/scsi_da.c')
-rw-r--r-- | sys/cam/scsi/scsi_da.c | 67 |
1 files changed, 21 insertions, 46 deletions
diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c index fa37690..26e8cc3 100644 --- a/sys/cam/scsi/scsi_da.c +++ b/sys/cam/scsi/scsi_da.c @@ -127,7 +127,6 @@ struct da_softc { struct disk_params params; struct disk disk; union ccb saved_ccb; - dev_t dev; struct sysctl_ctx_list sysctl_ctx; struct sysctl_oid *sysctl_tree; }; @@ -449,10 +448,7 @@ static struct da_quirk_entry da_quirk_table[] = } }; -static d_open_t daopen; -static d_close_t daclose; -static d_strategy_t dastrategy; -static d_ioctl_t daioctl; +static disk_strategy_t dastrategy; static dumper_t dadump; static periph_init_t dainit; static void daasync(void *callback_arg, u_int32_t code, @@ -515,35 +511,10 @@ static struct periph_driver dadriver = PERIPHDRIVER_DECLARE(da, dadriver); -#define DA_CDEV_MAJOR 13 - -/* For 2.2-stable support */ -#ifndef D_DISK -#define D_DISK 0 -#endif - -static struct cdevsw da_cdevsw = { - /* open */ daopen, - /* close */ daclose, - /* read */ physread, - /* write */ physwrite, - /* ioctl */ daioctl, - /* poll */ nopoll, - /* mmap */ nommap, - /* strategy */ dastrategy, - /* name */ "da", - /* maj */ DA_CDEV_MAJOR, - /* dump */ dadump, - /* psize */ nopsize, - /* flags */ D_DISK, -}; - -static struct cdevsw dadisk_cdevsw; - static SLIST_HEAD(,da_softc) softc_list; static int -daopen(dev_t dev, int flags __unused, int fmt __unused, struct thread *td __unused) +daopen(struct disk *dp) { struct cam_periph *periph; struct da_softc *softc; @@ -554,7 +525,7 @@ daopen(dev_t dev, int flags __unused, int fmt __unused, struct thread *td __unus int s; s = splsoftcam(); - periph = (struct cam_periph *)dev->si_drv1; + periph = (struct cam_periph *)dp->d_drv1; unit = periph->unit_number; if (periph == NULL) { splx(s); @@ -564,7 +535,7 @@ daopen(dev_t dev, int flags __unused, int fmt __unused, struct thread *td __unus softc = (struct da_softc *)periph->softc; CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, - ("daopen: dev=%s (unit %d)\n", devtoname(dev), + ("daopen: disk=%s%d (unit %d)\n", dp->d_name, dp->d_unit, unit)); if ((error = cam_periph_lock(periph, PRIBIO|PCATCH)) != 0) @@ -644,13 +615,13 @@ daopen(dev_t dev, int flags __unused, int fmt __unused, struct thread *td __unus } static int -daclose(dev_t dev, int flag __unused, int fmt __unused, struct thread *td __unused) +daclose(struct disk *dp) { struct cam_periph *periph; struct da_softc *softc; int error; - periph = (struct cam_periph *)dev->si_drv1; + periph = (struct cam_periph *)dp->d_drv1; if (periph == NULL) return (ENXIO); @@ -738,7 +709,7 @@ dastrategy(struct bio *bp) struct da_softc *softc; int s; - periph = (struct cam_periph *)bp->bio_dev->si_drv1; + periph = (struct cam_periph *)bp->bio_disk->d_drv1; if (periph == NULL) { biofinish(bp, NULL, ENXIO); return; @@ -788,13 +759,13 @@ dastrategy(struct bio *bp) #endif static int -daioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread *td) +daioctl(struct disk *dp, u_long cmd, void *addr, int flag, struct thread *td) { struct cam_periph *periph; struct da_softc *softc; int error; - periph = (struct cam_periph *)dev->si_drv1; + periph = (struct cam_periph *)dp->d_drv1; if (periph == NULL) return (ENXIO); @@ -823,7 +794,7 @@ dadump(void *arg, void *virtual, vm_offset_t physical, off_t offset, size_t leng struct disk *dp; dp = arg; - periph = (struct cam_periph *)dp->d_dev->si_drv1; + periph = dp->d_drv1; if (periph == NULL) return (ENXIO); softc = (struct da_softc *)periph->softc; @@ -1008,9 +979,7 @@ dacleanup(struct cam_periph *periph) devstat_remove_entry(&softc->device_stats); xpt_print_path(periph->path); printf("removing device entry\n"); - if (softc->dev) { - disk_destroy(&softc->disk); - } + disk_destroy(&softc->disk); free(softc, M_DEVBUF); } @@ -1234,10 +1203,16 @@ daregister(struct cam_periph *periph, void *arg) /* * Register this media as a disk */ - softc->dev = disk_create(periph->unit_number, &softc->disk, 0, - &da_cdevsw, &dadisk_cdevsw); - softc->dev->si_drv1 = periph; - softc->dev->si_iosize_max = DFLTPHYS; + + softc->disk.d_open = daopen; + softc->disk.d_close = daclose; + softc->disk.d_strategy = dastrategy; + softc->disk.d_ioctl = daioctl; + softc->disk.d_dump = dadump; + softc->disk.d_name = "da"; + softc->disk.d_drv1 = periph; + softc->disk.d_maxsize = DFLTPHYS; /* XXX: probably not arbitrary */ + disk_create(periph->unit_number, &softc->disk, 0, NULL, NULL); /* * Add async callbacks for bus reset and |