Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Oct 2020 16:22:34 -0600
From:      Alan Somers <asomers@freebsd.org>
To:        Eric van Gyzen <eric@vangyzen.net>
Cc:        FreeBSD CURRENT <freebsd-current@freebsd.org>
Subject:   Re: ZFS crash -- zvol_geom_bio_getattr called when volmode=dev
Message-ID:  <CAOtMX2hMKFnMdDWP3Boeqmjh3oRWKraoRCcKCdW4y0UWK8RVfA@mail.gmail.com>
In-Reply-To: <95636bbf-2367-f226-f462-d5581581c18f@vangyzen.net>
References:  <1dfaf797-f23b-af97-d2d3-efa0f5bb88d9@vangyzen.net> <95636bbf-2367-f226-f462-d5581581c18f@vangyzen.net>

next in thread | previous in thread | raw e-mail | index | archive | help
This sounds like it might be a regression introduced by the OpenZFS merge.
Have you compared vdev_geom.c in OpenZFS vs the old version?
-Alan

On Fri, Oct 9, 2020 at 3:48 PM Eric van Gyzen <eric@vangyzen.net> wrote:

> On 10/9/20 4:39 PM, Eric van Gyzen wrote:
> > Does this look familiar?  I'm creating a zvol with volmode=dev, but some
> > geom code paths were taken.  If this looks new, I'll provide more
> details.
>
> primarycache=none also seems to be a factor.  I can easily repro with:
>
> zfs create -s -V 10G -o primarycache=none -o volmode=dev .../testvol
>
> > 13.0-CURRENT r366500+84ccaf49083c-c272054 GENERIC
> >
> > #8  <signal handler called>
> > #9  zvol_geom_bio_getattr (bp=0xfffff80376132900)
> >      at /usr/src/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c:545
> > #10 zvol_geom_bio_start (bp=0xfffff80376132900)
> >      at /usr/src/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c:519
> > #11 0xffffffff80b1c684 in g_io_schedule_down (tp=<optimized out>)
> >      at /usr/src/sys/geom/geom_io.c:848
> > #12 0xffffffff80b1cfcc in g_down_procbody (arg=<optimized out>)
> >      at /usr/src/sys/geom/geom_kern.c:111
> >
> > (kgdb) f 9
> > #9  zvol_geom_bio_getattr (bp=0xfffff80376132900)
> >      at /usr/src/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c:545
> > 545        spa_t *spa = dmu_objset_spa(zv->zv_objset);
> >
> > (kgdb) l
> > 540        zvol_state_t *zv;
> > 541
> > 542        zv = bp->bio_to->private;
> > 543        ASSERT(zv != NULL);
> > 544
> > 545        spa_t *spa = dmu_objset_spa(zv->zv_objset);
> > 546        uint64_t refd, avail, usedobjs, availobjs;
> > 547
> > 548        if (g_handleattr_int(bp, "GEOM::candelete", 1))
> > 549            return (0);
> >
> > (kgdb) p zv
> > $1 = (zvol_state_t *) 0x0
> >
> > (kgdb) p *bp
> > $3 = {
> >    bio_cmd = 4,
> >    bio_flags = 0,
> >    bio_cflags = 0,
> >    bio_pflags = 0,
> >    bio_dev = 0x0,
> >    bio_disk = 0x0,
> >    bio_offset = 0,
> >    bio_bcount = 0,
> >    bio_data = 0xfffff801fa687c00 "",
> >    bio_ma = 0x0,
> >    bio_ma_offset = 0,
> >    bio_ma_n = 0,
> >    bio_error = 0,
> >    bio_resid = 0,
> >    bio_done = 0x0,
> >    bio_driver1 = 0x0,
> >    bio_driver2 = 0x0,
> >    bio_caller1 = 0x0,
> >    bio_caller2 = 0x0,
> >    bio_queue = {
> >      tqe_next = 0xffffffffffffffff,
> >      tqe_prev = 0xffffffffffffffff
> >    },
> >    bio_attribute = 0xffffffff81223c03 "GEOM::physpath",
> >    bio_zone = {
> >      zone_cmd = 0 '\000',
> >      zone_params = {
> >        disk_params = {
> >          zone_mode = 0,
> >          flags = 0,
> >          optimal_seq_zones = 0,
> >          optimal_nonseq_zones = 0,
> >          max_seq_zones = 0
> >        },
> >        rwp = {
> >          id = 0,
> >          flags = 0 '\000'
> >        },
> >        report = {
> >          starting_id = 0,
> >          rep_options = 0 '\000',
> >          header = {
> >            same = 0 '\000',
> >            maximum_lba = 0,
> >            reserved = '\000' <repeats 63 times>
> >          },
> >          entries_allocated = 0,
> >          entries_filled = 0,
> >          entries_available = 0,
> >          entries = 0x0
> >        }
> >      }
> >    },
> >    bio_from = 0xfffff80006b92880,
> >    bio_to = 0xfffff80006972500,
> >    bio_length = 1024,
> >    bio_completed = 0,
> >    bio_children = 0,
> >    bio_inbed = 0,
> >    bio_parent = 0x0,
> >    bio_t0 = {
> >      sec = 50,
> >      frac = 10248368299661698441
> >    },
> >    bio_task = 0x0,
> >    bio_task_arg = 0x0,
> >    bio_spare1 = 0x0,
> >    bio_spare2 = 0x0,
> >    bio_track_bp = 0x0,
> >    bio_pblkno = 0
> > }
> >
> > (kgdb) p *bp->bio_to
> > $4 = {
> >    name = 0xfffff80006972598 "zvol/disco_fast/vm/onefs1-1/disk7",
> >    provider = {
> >      le_next = 0x0,
> >      le_prev = 0xfffff80006972428
> >    },
> >    geom = 0xfffff80006972400,
> >    consumers = {
> >      lh_first = 0xfffff80006b92880
> >    },
> >    acr = 1,
> >    acw = 0,
> >    ace = 0,
> >    error = 0,
> >    orphan = {
> >      tqe_next = 0x0,
> >      tqe_prev = 0x0
> >    },
> >    mediasize = 5368709120,
> >    sectorsize = 512,
> >    stripesize = 8192,
> >    stripeoffset = 0,
> >    stat = 0xfffff80006d3d120,
> >    spare1 = 0,
> >    spare2 = 0,
> >    flags = 48,
> >    aliases = {
> >      lh_first = 0x0
> >    },
> >    private = 0x0,
> >    index = 0
> > }
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
>



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