From owner-freebsd-current@freebsd.org Fri Oct 9 21:47:55 2020 Return-Path: Delivered-To: freebsd-current@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EA69442E16F for ; Fri, 9 Oct 2020 21:47:55 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from smtp.vangyzen.net (hotblack.vangyzen.net [IPv6:2607:fc50:1000:7400:216:3eff:fe72:314f]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4C7MBM1WJHz3Skw for ; Fri, 9 Oct 2020 21:47:54 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from disco.vangyzen.net (unknown [70.97.188.230]) by smtp.vangyzen.net (Postfix) with ESMTPSA id A25C85646C for ; Fri, 9 Oct 2020 16:47:48 -0500 (CDT) Subject: Re: ZFS crash -- zvol_geom_bio_getattr called when volmode=dev To: freebsd-current@freebsd.org References: <1dfaf797-f23b-af97-d2d3-efa0f5bb88d9@vangyzen.net> From: Eric van Gyzen Message-ID: <95636bbf-2367-f226-f462-d5581581c18f@vangyzen.net> Date: Fri, 9 Oct 2020 16:47:44 -0500 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1 MIME-Version: 1.0 In-Reply-To: <1dfaf797-f23b-af97-d2d3-efa0f5bb88d9@vangyzen.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4C7MBM1WJHz3Skw X-Spamd-Bar: - X-Spamd-Result: default: False [-1.63 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FREEFALL_USER(0.00)[eric]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+a:c]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-current@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-0.65)[-0.646]; DMARC_NA(0.00)[vangyzen.net]; NEURAL_SPAM_SHORT(0.09)[0.090]; RCVD_TLS_ALL(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; NEURAL_HAM_MEDIUM(-0.78)[-0.776]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:36236, ipnet:2607:fc50:1000::/36, country:US]; RCVD_COUNT_TWO(0.00)[2]; MAILMAN_DEST(0.00)[freebsd-current] X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Oct 2020 21:47:56 -0000 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  > #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=) >     at /usr/src/sys/geom/geom_io.c:848 > #12 0xffffffff80b1cfcc in g_down_procbody (arg=) >     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' >         }, >         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 > }