GEOM will panic 6.0-current on userland wrong-length disk reads
User Staylor
staylor at mrynet.com
Thu Oct 14 06:41:26 PDT 2004
> Do you have rev. 1.63 of sys/geom/geom_io.c ?
Yes:
ttyp6:--ROOT-- at mrynet (74): ident kernel | grep geom_io
$FreeBSD: /repoman/r/ncvs/src/sys/geom/geom_io.c,v 1.63 2004/10/11 21:22:59 ups Exp $
And I've found that simply commenting-out the following resolves
the issue:
ttyp6:--ROOT-- at mrynet (58): diff -C 10 geom_io.c- geom_io.c
*** geom_io.c- Thu Oct 14 08:30:44 2004
--- geom_io.c Thu Oct 14 08:31:12 2004
***************
*** 238,265 ****
--- 238,267 ----
g_io_request(struct bio *bp, struct g_consumer *cp)
{
struct g_provider *pp;
KASSERT(cp != NULL, ("NULL cp in g_io_request"));
KASSERT(bp != NULL, ("NULL bp in g_io_request"));
KASSERT(bp->bio_data != NULL, ("NULL bp->data in g_io_request"));
pp = cp->provider;
KASSERT(pp != NULL, ("consumer not attached in g_io_request"));
+ #ifdef notyet
if (bp->bio_cmd & (BIO_READ|BIO_WRITE|BIO_DELETE)) {
KASSERT(bp->bio_offset % cp->provider->sectorsize == 0,
("wrong offset %jd for sectorsize %u",
bp->bio_offset, cp->provider->sectorsize));
KASSERT(bp->bio_length % cp->provider->sectorsize == 0,
("wrong length %jd for sectorsize %u",
bp->bio_length, cp->provider->sectorsize));
}
+ #endif
g_trace(G_T_BIO, "bio_request(%p) from %p(%s) to %p(%s) cmd %d",
bp, cp, cp->geom->name, pp, pp->name, bp->bio_cmd);
bp->bio_from = cp;
bp->bio_to = pp;
bp->bio_error = 0;
bp->bio_completed = 0;
KASSERT(!(bp->bio_flags & BIO_ONQUEUE),
If you're indicating that you are unable to duplicate this panic, let me know.
I'll resort to pitching my current /usr/src tree and re-cvsup and retry.
-scott
>
> In message <200410140521.i9E5L06d001096 at mrynet.com>, User Staylor writes:
> >Just discovered (and verified with latest build on
> >current.freebsd.org) that the following will panic
> >the new GEOM fdc driver in 6.0-current:
> >
> ># dd if=/dev/fd0 bs=55
> >panic: wrong length 55 for sectorsize 512
> >
> >And further checking, discovered that ALL disk devices will cause
> >a panic:
> >
> >dd if=/dev/ad0 bs=1234
> >panic: wrong length 1234 for sectorsize 512
> >
> >Perhaps this is geom's way of complaining? Seems a rather radical
> >way to handle non-matching-blocksize reads of disk devices. A
> >simple programming error reading a disk dev node will panic the
> >machine.
> >
> >-scott
> >_______________________________________________
> >freebsd-geom at freebsd.org mailing list
> >http://lists.freebsd.org/mailman/listinfo/freebsd-geom
> >To unsubscribe, send any mail to "freebsd-geom-unsubscribe at freebsd.org"
> >
>
> --
> Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
> phk at FreeBSD.ORG | TCP/IP since RFC 956
> FreeBSD committer | BSD since 4.3-tahoe
> Never attribute to malice what can adequately be explained by incompetence.
More information about the freebsd-geom
mailing list