aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>2001-09-26 16:15:20 +0000
committerDoug Rabson <dfr@FreeBSD.org>2001-09-26 16:15:20 +0000
commitfa129a40db21046cf951377b8e052d2d5d03d07b (patch)
tree5a9fe91ef4e12522728e2bfd44de035e79c1425c
parent43e09ab2dbde5eb3737e816a0d13b329b5ad07dd (diff)
Notes
-rw-r--r--sys/ia64/ia64/sscdisk.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/sys/ia64/ia64/sscdisk.c b/sys/ia64/ia64/sscdisk.c
index 02a24ffb3393..2f5721ee5305 100644
--- a/sys/ia64/ia64/sscdisk.c
+++ b/sys/ia64/ia64/sscdisk.c
@@ -95,7 +95,7 @@ static struct cdevsw ssc_cdevsw = {
/* poll */ nopoll,
/* mmap */ nommap,
/* strategy */ sscstrategy,
- /* name */ "ssc",
+ /* name */ "sscdisk",
/* maj */ CDEV_MAJOR,
/* dump */ nodump,
/* psize */ nopsize,
@@ -135,7 +135,7 @@ sscopen(dev_t dev, int flag, int fmt, struct thread *td)
dl = &sc->disk.d_label;
bzero(dl, sizeof(*dl));
dl->d_secsize = DEV_BSIZE;
- dl->d_nsectors = 1024;
+ dl->d_nsectors = sc->nsect > 63 ? 63 : sc->nsect;
dl->d_ntracks = 1;
dl->d_secpercyl = dl->d_nsectors * dl->d_ntracks;
dl->d_secperunit = sc->nsect;
@@ -237,6 +237,12 @@ static struct ssc_s *
ssccreate(int unit)
{
struct ssc_s *sc;
+ int fd;
+
+ fd = ssc(ia64_tpa((u_int64_t) SKI_ROOT_FILESYSTEM),
+ 1, 0, 0, SSC_OPEN);
+ if (fd == -1)
+ return (NULL);
if (unit == -1)
unit = sscunits++;
@@ -249,22 +255,21 @@ ssccreate(int unit)
LIST_INSERT_HEAD(&ssc_softc_list, sc, list);
sc->unit = unit;
bioq_init(&sc->bio_queue);
- devstat_add_entry(&sc->stats, "ssc", sc->unit, DEV_BSIZE,
+ devstat_add_entry(&sc->stats, "sscdisk", sc->unit, DEV_BSIZE,
DEVSTAT_NO_ORDERED_TAGS,
DEVSTAT_TYPE_DIRECT | DEVSTAT_TYPE_IF_OTHER,
DEVSTAT_PRIORITY_OTHER);
- sc->dev = disk_create(sc->unit, &sc->disk,
- DSO_ONESLICE|DSO_NOLABELS,
+ sc->dev = disk_create(sc->unit, &sc->disk, 0,
&ssc_cdevsw, &sscdisk_cdevsw);
sc->dev->si_drv1 = sc;
sc->nsect = SSC_NSECT;
- sc->fd = ssc(ia64_tpa((u_int64_t) SKI_ROOT_FILESYSTEM),
- 1, 0, 0, SSC_OPEN);
+ sc->fd = fd;
if (sc->unit == 0)
sscrootready = 1;
return (sc);
}
+#if 0
static void
ssc_clone (void *arg, char *name, int namelen, dev_t *dev)
{
@@ -284,6 +289,7 @@ ssc_clone (void *arg, char *name, int namelen, dev_t *dev)
ssccreate(u);
return;
}
+#endif
static void
ssc_drvinit(void *unused)
@@ -300,7 +306,7 @@ static void
ssc_takeroot(void *junk)
{
if (sscrootready)
- rootdevnames[0] = "ufs:/dev/ssc0";
+ rootdevnames[0] = "ufs:/dev/sscdisk0c";
}
SYSINIT(ssc_root, SI_SUB_MOUNT_ROOT, SI_ORDER_FIRST, ssc_takeroot, NULL);