Re: ZFS crash -- zvol_geom_bio_getattr called when volmode=dev

From: Eric van Gyzen <eric_at_vangyzen.net>
Date: Fri, 9 Oct 2020 16:47:44 -0500
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
> }
Received on Fri Oct 09 2020 - 19:47:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:25 UTC