Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Oct 2004 08:41:24 -0500
From:      staylor@mrynet.com (User Staylor)
To:        "Poul-Henning Kamp" <phk@phk.freebsd.dk>
Cc:        freebsd-geom@freebsd.org
Subject:   Re: GEOM will panic 6.0-current on userland wrong-length disk reads
Message-ID:  <200410141341.i9EDfOhU006486@mrynet.com>

next in thread | raw e-mail | index | archive | help
> Do you have rev. 1.63 of sys/geom/geom_io.c  ?

Yes:
ttyp6:--ROOT--@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--@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@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@freebsd.org mailing list
> >http://lists.freebsd.org/mailman/listinfo/freebsd-geom
> >To unsubscribe, send any mail to "freebsd-geom-unsubscribe@freebsd.org"
> >
> 
> -- 
> Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
> phk@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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200410141341.i9EDfOhU006486>