Deleted Added
full compact
35c35
< * $FreeBSD: head/sys/geom/geom_disk.c 110118 2003-01-30 19:55:19Z phk $
---
> * $FreeBSD: head/sys/geom/geom_disk.c 110119 2003-01-30 20:34:23Z phk $
46a47
> #include <sys/fcntl.h>
71,72c72,74
< if (!(dp->d_devsw->d_flags & D_NOGIANT))
< mtx_lock(&Giant);
---
> if (dp->d_flags & DISKFLAG_NOGIANT)
> return;
> mtx_lock(&Giant);
78,79c80,82
< if (!(dp->d_devsw->d_flags & D_NOGIANT))
< mtx_unlock(&Giant);
---
> if (dp->d_flags & DISKFLAG_NOGIANT)
> return;
> mtx_unlock(&Giant);
96a100
> error = 0;
98,102c102,109
< g_disk_lock_giant(dp);
< error = devsw(dev)->d_open(dev, 3, 0, NULL);
< if (error != 0)
< printf("Opened disk %s -> %d\n", pp->name, error);
< g_disk_unlock_giant(dp);
---
> if (dp->d_open != NULL) {
> g_disk_lock_giant(dp);
> error = dp->d_open(dev, FREAD | FWRITE, 0, NULL);
> if (error != 0)
> printf("Opened disk %s -> %d\n",
> pp->name, error);
> g_disk_unlock_giant(dp);
> }
104a112
> dp->d_flags |= DISKFLAG_OPEN;
106,112c114,122
< g_disk_lock_giant(dp);
< error = devsw(dev)->d_close(dev, 3, 0, NULL);
< if (error != 0)
< printf("Closed disk %s -> %d\n", pp->name, error);
< g_disk_unlock_giant(dp);
< } else {
< error = 0;
---
> if (dp->d_close != NULL) {
> g_disk_lock_giant(dp);
> error = dp->d_close(dev, FREAD | FWRITE, 0, NULL);
> if (error != 0)
> printf("Closed disk %s -> %d\n",
> pp->name, error);
> g_disk_unlock_giant(dp);
> }
> dp->d_flags &= ~DISKFLAG_OPEN;
129c139
< di.dumper = (dumper_t *)dp->d_devsw->d_dump;
---
> di.dumper = dp->d_dump;
145c155
< if (!(dp->d_devsw->d_flags & D_NOGIANT)) {
---
> if (!(dp->d_flags & DISKFLAG_NOGIANT)) {
168c178
< if (!(devsw(dev)->d_flags & D_CANFREE)) {
---
> if (!(dp->d_flags & DISKFLAG_CANDELETE)) {
183c193
< devsw(dev)->d_strategy(bp2);
---
> dp->d_strategy(bp2);
195c205,206
< else if (!strcmp(bp->bio_attribute, "GEOM::ioctl") &&
---
> else if (dp->d_ioctl != NULL &&
> !strcmp(bp->bio_attribute, "GEOM::ioctl") &&
198c209
< gio->func = devsw(dp->d_dev)->d_ioctl;
---
> gio->func = dp->d_ioctl;
268c279
< disk_create(int unit, struct disk *dp, int flags, struct cdevsw *cdevsw, void *unused)
---
> disk_create(int unit, struct disk *dp, int flags, struct cdevsw *cdevsw, void * unused __unused)
273a285
> dp->d_flags = flags;
275a288,298
> if (cdevsw != NULL) {
> dp->d_open = cdevsw->d_open;
> dp->d_close = cdevsw->d_close;
> dp->d_strategy = cdevsw->d_strategy;
> dp->d_ioctl = cdevsw->d_ioctl;
> dp->d_dump = (dumper_t *)cdevsw->d_dump;
> dp->d_name = cdevsw->d_name;
> }
> KASSERT(dp->d_strategy != NULL, ("disk_create need d_strategy"));
> KASSERT(dp->d_name != NULL, ("disk_create need d_name"));
> KASSERT(*dp->d_name != 0, ("disk_create need d_name"));
278c301
< sprintf(dev->si_name, "%s%d", cdevsw->d_name, unit);
---
> sprintf(dev->si_name, "%s%d", dp->d_name, unit);
292a316
> gp->softc = NULL;