Re: GEOM will panic 6.0-current on userland wrong-length disk reads

From: User Staylor <staylor_at_mrynet.com>
Date: Thu, 14 Oct 2004 08:41:24 -0500
> 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.
Received on Thu Oct 14 2004 - 11:41:25 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:17 UTC